Лабораторна робота № 4.
Тема: Робота з масивами мовою асемблера для ПЭВМ типу ІBM PC/XT/AT
Мета: Придбання і закріплення практичних навичок у складанні і
налагодженні програм мовою асемблера, що обробляють дані, організованні у виді масивів .
Індивідуальне завдання:
5. Задано масиви А и В по N = 50 елементів (констант типу WORD).
Визначити кількість пар елементів, що задовольняють умові
Aі > Bі.
Хід виконання лабораторної роботи.
Текст програми на мові Assembler:
title lab4
stc segment stack
dw 128 dup(?)
stc ends
data segment
a dw 1, 8, 5
b dw 5, 5, 12
kol dw ?
data ends
code segment
assume cs:code,ds:data
m0: mov ax,data
mov ds,ax
mov cx,3
xor dx, dx
m1: mov ax,a[si]
cmp ax, b[si]
jl k1
inc dx
k1:
add si, 2
loop m1
mov kol, dx
cmp dx, 0
jne ifnzero ;если кол-во не равно 0, то переход
mov ah, 2h
mov dx, '0'
int 21h
jmp k4 ; переход к завершению
ifnzero:
mov cx, dx
k3:
mov ah, 2h
mov dx, '*'
int 21h
loop k3
k4:
mov ah,4ch ; Выход
int 21h ; в DOS
code ends
end m0
Вибір перемінних
A – початок масиву а
В – початок масив
Kol - кількість пар елементів, що задовольняють умові Aі > Bі
Результати роботи програми:
* // тільки одна пара
Контроль процесу виконання програми з використанням отладчика
і застосуванням трасуючих повідомлень :
///--///--///--///--///--///--///--///--///--///--///--///--///--///--///--
AX=0008 BX=0000 CX=0002 DX=0000 SP=0100 BP=0000 SI=0002 DI=0000
DS=0BB9 ES=0B99 SS=0BA9 CS=0BBA IP=0012 NV UP EI PL NZ NA PE NC
0BBA:0012 7C01 JL 0015
-t
AX=0008 BX=0000 CX=0002 DX=0000 SP=0100 BP=0000 SI=0002 DI=0000
DS=0BB9 ES=0B99 SS=0BA9 CS=0BBA IP=0014 NV UP EI PL NZ NA PE NC
0BBA:0014 42 INC DX
-t
AX=0008 BX=0000 CX=0002 DX=0001 SP=0100 BP=0000 SI=0002 DI=0000
DS=0BB9 ES=0B99 SS=0BA9 CS=0BBA IP=0015 NV UP EI PL NZ NA PO NC
0BBA:0015 83C602 ADD SI,+02
-t
AX=0008 BX=0000 CX=0002 DX=0001 SP=0100 BP=0000 SI=0004 DI=0000
DS=0BB9 ES=0B99 SS=0BA9 CS=0BBA IP=0018 NV UP EI PL NZ NA PO NC
0BBA:0018 E2F0 LOOP 000A
///--///--///--///--///--///--///--///--///--///--///--///--///--///--///--
Тут можна побачити, що при виконанні другої ітерації циклу вміст регістру DX став 1.
Стан області даних після виконання програми :
-d ds:200
0B99:0200 01 00 08 00 05 00 05 00-05 00 0C 00 01 00 00 00
0B99:0210 B8 B9 0B 8E D8 B9 03 00-33 D2 8B 84 00 00 3B 84
0B99:0220 06 00 7C 01 42 83 C6 02-E2 F0 89 16 0C 00 83 FA
0B99:0230 00 75 0A B4 02 BA 30 00-CD 21 EB 0C 90 8B CA B4
0B99:0240 02 BA 2A 00 CD 21 E2 F7-B4 4C CD 21 E8 6C 15 83
0B99:0250 C4 02 EB 86 E8 B5 32 E9-CA FE C6 86 FA FD 00 E9
0B99:0260 6E FE 5E 8B E5 5D C3 55-8B EC 83 EC 08 56 A1 3C
0B99:0270 65 48 50 B8 01 00 50 E8-84 15 83 C4 04 89 46 FC
Тут після виконання
програми показан вміст пам’яті. Спочатку ідуть єлементу двох масивів, а потім
змінна kol – кількість пар елементів, що задовольняють
умові
Aі > Bі
Висновок:
При виконанні работи ознайомилися:
- з визначенням і ініціалізацією даних, організованих у виді
масивів;
- з режимами адресації даних;
- з організацією циклів для роботи з масивами;
- з організацією розгалуження в ассемблерной програмі;
- з застосуванням трасуючих повідомлень для контролю процесу
виконання програми;
- з використанням отладчика для контролю процесу виконання
програми.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.