ЛАБОРАТОРНА РОБОТА №1
Тема: “Робота з масивами мовою асемблеру”
Мета: Придбання і закріплення практичних навичок у складанні і налагодженні програм мовою асемблеру, що обробляє дані, організовані у виді масивів.
Індивідуальне завдання: Задано масив А з N = 50 елементів (констант типу WORD). Визначити мінімальний з додатних елементів масиву А, де Ai Е [-100,+100].
Розробка алгоритму рішення задачі
Вибір змінних
Таблиця 1.
Змінні програми
Ім’я змінной |
Призначення змінних |
mas |
Початок масиву |
N |
Кількість елементів масиву |
min |
Мінімальний з додатних елементів масиву |
s1 |
Початок строки повідомлення про запуск програми |
s2 |
Початок строки повідомлення про закінчення програми |
s3 |
Початок строки повідомлення про виконання увови |
Схема алгоритму рішення задачі
Текст програми:
; 10. Задан массив А из N = 50 элементов (констант типа WORD).
;Определить минимальный из положительных элементов массива А ,
;где Ai Е [-100,+100].
data segment
mas dw 25h,-46h,50h,-20h,-9h,-50h,-50h,23h,36h,-6h
dw -23h,19h,28h,11h,43h,-47h,-15h,-40h,38h,-1h
dw -42h,-29h,36h,-47h,-50h,-50h,-10h,-25h,27h,-34h
dw 32h,16h,46h,14h,-18h,-30h,-44h,-7h,-24h,-10h
dw 13h,-24h,32h,-36h,43h,-34h,-44h,27h,-23h,-35h
N dw 50
min dw ?
s1 db 'Ну, типа, начало программы.',10,13,'$'
s2 db 'А это, типа, усё ;-) ',10,13,'$'
s3 db 'Цикл. Сработала логика.',10,13,'$'
data ends
code segment
assume cs:code,ds:data
m0: mov ax,data ; адрес сегмента - в регистр DS
mov ds,ax
;
mov ax, 1000h ; установка палитры
mov bx, 0207h ; палитра для текста
int 10h ; Сервис видео
mov ah,9h ; Вывод
mov dx,offset s1 ; трассирующего сообщения
int 21h ; о запуске программы
; Поиск требуемого числа
; Подготовка к циклу
mov cx, N ; количество элементов массива
mov bp, 7fffh ; в аккамулятор исходное значение
mov si, offset mas
M1:mov bx, [si]
add si, 2
test bx, 8000h ; slr bx, 1 cmp bx, bx
jnz M2 ; jc M2 js M2
cmp bp, bx
jb M2
mov bp, bx
mov ah,9h ; Вывод
mov dx,offset s3 ; трассирующего сообщения
int 21h ; о срабатывании логики
M2:loop M1
mov min, bp
mov ah,9h ; Вывод
mov dx,offset s2 ; трассирующего сообщения
int 21h ; о завершении программы
mov ah,4ch ; Выход
int 21h ; в DOS
code ends
end m0
Результати виконання програми:
Стан області даних до виконання програми:
-d ds:0 B6h
14E5:0000 25 00 BA FF 50 00 E0 FF-F7 FF B0 FF B0 FF 23 00 %...P.........#.
14E5:0010 36 00 FA FF DD FF 19 00-28 00 11 00 43 00 B9 FF 6.......(...C...
14E5:0020 EB FF C0 FF 38 00 FF FF-BE FF D7 FF 36 00 B9 FF ....8.......6...
14E5:0030 B0 FF B0 FF F0 FF DB FF-27 00 CC FF 32 00 16 00 ........'...2...
14E5:0040 46 00 14 00 E8 FF D0 FF-BC FF F9 FF DC FF F0 FF F...............
14E5:0050 13 00 DC FF 32 00 CA FF-43 00 CC FF BC FF 27 00 ....2...C.....'.
14E5:0060 DD FF CB FF 32 00 00 00-8D E3 2C 20 E2 A8 AF A0 ....2....., ....
14E5:0070 2C 20 AD A0 E7 A0 AB AE-20 AF E0 AE A3 E0 A0 AC , ...... .......
14E5:0080 AC EB 2E 0A 0D 24 80 20-ED E2 AE 2C 20 E2 A8 AF .....$. ..., ...
14E5:0090 A0 2C 20 AF A8 E1 A5 E6-2E 0A 0D 24 96 A8 AA AB ., ........$....
14E5:00A0 2E 20 91 E0 A0 A1 AE E2-A0 AB A0 20 AB AE A3 A8 . ......... ....
14E5:00B0 AA A0 2E 0A 0D 24 00 .....$.
Контроль процесу виконання програми з використанням отладчика і застосуванням трасуючих повідомлень:
-g
Ну, типа, начало программы.
Цикл. Сработала логика.
Цикл. Сработала логика.
Цикл. Сработала логика.
Цикл. Сработала логика.
А это, типа, усё ;-)
Нормальное завершение работы программы
Стан області даних після виконання програми:
-d ds:0 B6h
14E5:0000 25 00 BA FF 50 00 E0 FF-F7 FF B0 FF B0 FF 23 00 %...P.........#.
14E5:0010 36 00 FA FF DD FF 19 00-28 00 11 00 43 00 B9 FF 6.......(...C...
14E5:0020 EB FF C0 FF 38 00 FF FF-BE FF D7 FF 36 00 B9 FF ....8.......6...
14E5:0030 B0 FF B0 FF F0 FF DB FF-27 00 CC FF 32 00 16 00 ........'...2...
14E5:0040 46 00 14 00 E8 FF D0 FF-BC FF F9 FF DC FF F0 FF F...............
14E5:0050 13 00 DC FF 32 00 CA FF-43 00 CC FF BC FF 27 00 ....2...C.....'.
14E5:0060 DD FF CB FF 32 00 11 00-8D E3 2C 20 E2 A8 AF A0 ....2....., ....
14E5:0070 2C 20 AD A0 E7 A0 AB AE-20 AF E0 AE A3 E0 A0 AC , ...... .......
14E5:0080 AC EB 2E 0A 0D 24 80 20-ED E2 AE 2C 20 E2 A8 AF .....$. ..., ...
14E5:0090 A0 2C 20 AF A8 E1 A5 E6-2E 0A 0D 24 96 A8 AA AB ., ........$....
14E5:00A0 2E 20 91 E0 A0 A1 AE E2-A0 AB A0 20 AB AE A3 A8 . ......... ....
14E5:00B0 AA A0 2E 0A 0D 24 00 .....$.
Висновки:
У роботі ознайомився:
- с визначенням і ініціалізацією даних, організованих у виді масивів;
- с режимами адресації даних;
- с організацією циклів для роботи з масивами;
- с організацією розгалуження в ассемблерной програмі;
- с застосуванням трасуючих повідомлень для контролю процесу виконання програми;
- с використанням отладчика для контролю процесу виконання програми
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.