Реферат Курсовая Конспект
Зміст звіту - раздел Образование, Поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування 1. Постановка Задачі Для Конкретного Варіанта. 2. Блок-Схема Алгорит...
|
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 masm32includewindows.inc ; файли структур, констант …
include masm32include\user32.inc ; файли інтерфейсу …
include masm32includekernel32.inc ; файли систем. функцій застосувань…
includelib masm32libuser32.lib
includelib masm32libkernel32.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 masm32includewindows.inc ; файли структур, констант …
include masm32macrosmacros.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 с.
– Конец работы –
Эта тема принадлежит разделу:
Мета заняття... поглибити і закріпити знання з архітектури МП платформи х і навички його... придбати практичні навички складання налагодження і виконання програм з використанням структур та АРІ функцій під...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Зміст звіту
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов