Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Зміст звіту

Читайте также:
  1. БЛОК ЗМІСТОВНИХ МОДУЛІВ № 1 1 страница
  2. БЛОК ЗМІСТОВНИХ МОДУЛІВ № 1 2 страница
  3. БЛОК ЗМІСТОВНИХ МОДУЛІВ № 1 3 страница
  4. БЛОК ЗМІСТОВНИХ МОДУЛІВ № 1 4 страница
  5. Вимоги до змісту
  6. Вимоги до змісту та розташування реквізитів
  7. Вимоги до структури, змісту, обсягу й інтенсивності фізичних вправ в основній частині уроку.
  8. Економічний зміст бюджетних відносин.
  9. Економічний зміст обліку зобов’язань
  10. Економічний зміст та призначення єдиного казначейського рахунку

1. Постановка задачі для конкретного варіанта.

2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.

3. Лістинг програми та коментарі до всіх команд.

4. Рrint screen екрана 32-розрядного налагоджувача з виконанням програми та результатами виконання.

5. Короткий опис виконання програми.

6. Висновки за результатами роботи.

 

Приклад 13.3. Задано матрицю 2 ´ 4. Визначити суму всіх негативних елементів матриці. Результат виконання програми вивести у вікно консолі.

 

Лістинг 13.6. Програма виконання прикладу 13.3:

title CopyRight by Rysovaniy A. N., rysov@rambler.ru

.386; директива визначення типу мікропроцесора

.model flat, stdcall; завдання лінійної моделі пам’яті та угоди ОС Windows

option casemap:none; відмінність малих та великих літер

include \masm32\include\windows.inc; файли структур, констант …

include \masm32\include\\user32.inc; файли інтерфейсу …

include \masm32\include\kernel32.inc; файли систем. функцій застосувань…

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

DATE1 STRUCT; тип даних СТРУКТУРА з іменем DATE1

elem1 dd?; ім’я першого поля структури

elem2 dd?; ім’я другого поля структури

elem3 dd?; ім’я третього поля структури

elem4 dd?; ім’я четвертого поля структури

DATE1 ENDS

.data; директива визначення даних

str1 DATE1 <1,-1,-2,3>; структура з іменем str1

str2 DATE1 <0,-2,-1,-3>; структура з іменем str2

titl1 db " Работа с элементами структуры",0

buf db 10 dup(?),0

ifmt db "Задана матрица:",0dh,0ah,\

"1 -1 -2 3",0dh,0ah,\

"0 -2 -1 -3",0dh,0ah,0ah,\

"Результат сложения отрицательных элементов",0dh,0ah,\

" = %d ",0dh,0ah,0ah,\

"Автор программы: НТУ ХПИ",0

.code; директива початку сегмента даних

start:; мітка початку програми з ім’ям start

xor edx,edx; заповнювання нулями

mov ebx,2; завантаження кількості рядків

lea esi,str1; завантаження адреси першого рядка структури

m5: mov ecx,4; кількість елементів у рядку

m3: mov eax,[esi]; завантаження елемента з рядка структури

add eax,0; визначення ознак елемента

js m1; перейти на m1, якщо елемент негативний

jmp m2; безумовний перехід, якщо навпаки

m1: add edx,eax; додавання негативних елементів рядка структури

m2: add esi,4; підготовка адреси нового елемента

loop m3; есх:= ecx – 1 та перехід на m3, якщо не нуль

dec ebx; ebx:= ebx – 1

jz m4; якщо ebx = 0 (z = 1), то перехід на закінчення

lea esi,str2; завантаження адреси нового рядка

jmp m5; перехід на новий цикл

m4:

invoke wsprintf, \; АРІ-функція перетворення числа

ADDR buf, \; адреса буферу, куди буде записана послідовність символів

ADDR ifmt, edx; адреса рядка перетворення формату та регістр перетворення

invoke MessageBox, 0, addr buf, \; адреса рядка, яка містить текст повідомлення

addr titl1, MB_ICONINFORMATION+180000h; заголовок та вигляд вікна

invoke ExitProcess, 0; повернення керування ОС Windows та вивільнення ресурсів

end start; директива закінчення програми з іменем start

Результат виконання програми з лістингу 13.7 наведено на рис. 13.8.

 
 

 

 


У результаті виконання програми отримується число -9, яке заноситься до регістра edx, а потім виводиться у вікно консолі.

Приклад 14.5. Написати програму з використанням макросів для обчислення виразу

a(a – b) – (a – b)

та слів розміром у байт.

 

Програму без виведення результату на монітор наведено в лістингу 14.6.

Лістинг 14.6:

title CopyRight by Rysovaniy A. N. RYSOV@RAMBLER.RU

.686; директива визначення типу мікропроцесора

.model flat,stdcall; завдання лінійної моделі пам’яті та угоди ОС Windows

option casemap:none; відмінність малих та великих літер

include \masm32\include\windows.inc; файли структур, констант …

include \masm32\macros\macros.asm

uselib kernel32, fpu

mSubB macro _a,_b;; макрос з ім’ям mSubB для (a – b)

mov al,_a;; занесення змінної а

sub al,_b;; віднімання a – b

mov res1,al;; збереження результату у пам’яті

endm;; закінчення макросу

@ macro c0,c1,c2,c3;;макрос для запису команд в рядок

c0

c1

c2

c3

endm;; закінчення макросу @

.data; директива визначення даних

_a db 6; збереження в комірці пам’яті розміром в байт операнда 6

_b db 5; збереження в комірці пам’яті розміром в байт операнда 5

res1 db 0; резервування пам’яті для результату res1

buf dd?,0; буфер виведення повідомлення

ifmt db " Уравнение: ", 0dh,0ah,"Y = a(a – b) - (a – b)", 0dh,0ah,0ah,;

"При а = 6, b = 5, Y = %d",0dh,0ah,0ah, "Автор программы:",0;

titl db "Результат решения уравнения",0; назва спрощеного вікна

.code; директива початку програми

_start:; мітка початку програми з ім’ям _start

; виконання [a х mSubB]

@<mSubB [_a],[_b]>,<mov al,_a>,<mul res1>,<mov bx,ax>

; виконання [- mSubB]

@<mSubB [_a],[_b]>,<movzx ax,res1>,<sub bx,ax>,<movzx ebx,bx>

invoke wsprintf, ADDR buf,\; функція перетворення числа та адр. буф. з символами

ADDR ifmt, ebx; адреса рядка перетворення формату та регістр з результатом

invoke MessageBox, 0,addr buf,\; hwnd та адр. буфера текст повідомлення

addr titl, MB_ICONINFORMATION; адреса заголовку вікна та вигляд вікна

invoke ExitProcess, 0; повернення керування ОС Windows та визволення ресурсів

end _start; директива закінчення програми з іменем start

 

 

Для виведення чисел на екран за допомогою АРІ-функцій необхідно, щоб результат був розташований у 32-розрядному регістрі. Тому в програмі використано команду movzx, яка розширює результат до 32-розрядного формату. Результат виконання програми наведено на рис. 14.7.

 
 

 

 


Висновки: …

 

Література: Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку “Компютерна інженерія” вищих навчальних закладів. Видання друге: виправлено та доповнено – Х.: “Слово”, 2011. – 944 с.

 




Дата добавления: 2014-12-18; просмотров: 27 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав