Мета роботи: Здобуття та закріплення практичних навичок у організації взаємодії процедур через таблицю адрес параметрів мовою асемблера.
Задано масив А із 100 елементів (констант типу WORD). Структура масиву А:
-------------------------
| X1 | Y1 | X2 | Y2 |...|
-------------------------
Сформувати масив В із елементів Хі, для яких виповнюється: Хі=Yі.
2.Алгоритм вирішення
Описано 2 масиви. Далі в циклі в АХ та ВХ записуються 2 послідовні елементи масиву А. Якщо вони рівні то їх значення записується в масив В та лічильник однакових елементів збільшується на 1. Інакше – лічильник циклу зменшується і розглядаються 2 наступні елементи. Цикл повторюється 50 разів.
3.Блок-схема алгоритму
4.Вибір змінних для написання программи
А - вхідний масив із 100 констант.
В – вихідний масив із 50 чисел. Для запису однакових значень масиву А.
Т – строка для виводу інформації на монітор.
N - лічильник циклів перевірок масиву А.
DATA segment
A dw 10 dup(2,2,-1,-1,5,6,7,4,4,4) ; vxodawij massiv
B dw 50 dup(0) ; vixodawij massiv
T db 'Procedures',0ah,0dh,'$' ; text
N dw 50 ; kol-vo elementov v A
TA dw 3 dup(?) ; tablica adresov
DATA ends
CODE segment
assume cs:CODE,ds:DATA
Begin:mov ax,data
mov ds,ax
mov ah,9h
lea dx,t ; soobshenie na ekran
int 21h
lea bx,ta
lea ax,A
mov [bx],Ax
lea ax,B
mov [bx+2],ax
lea ax,N
mov [bx+4],ax
call far ptr pr1 ; vizov proceduri
mov ah,4ch ; normalnoe zavershenie raboti
int 21h
CODE ends
CODE1 segment
assume cs:code1
pr1 proc far
push ax
push cx
push dx
push si
push di
mov si,[bx+4] ; zagrujaem N
mov cx,[si] ; schetchik
mov si,[bx+2] ; massiv B
mov di,[bx] ; massiv A
xor ax,ax
mov dx,ax
m1:mov ax,[di] ; v ax zapisivaem A[0] (na pervom proxode)
mov dx,[di+2] ; v bx zapisivaem sledujuwij element
cmp ax,dx ; sravnenie (ax-dx)
jne m2 ; esli ax!=dx
mov [si],ax ; esli ax==dx
add si,2 ; perexod na sled. element B
m2:add di,4 ; perexod na sled. element A
loop m1 ; na nachalo cikla
pop di
pop si
pop dx
pop cx
pop ax
ret ; vozvrat
pr1 endp
CODE1 ends
end BEGIN
Массив B до виконання дій над ним:
-d ds:c7
13CC:00C0 00-00 00 00 00 00 00 00 00 .........
13CC:00D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CC:00E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CC:00F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CC:0100 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CC:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CC:0120 00 00 00 00 00 00 00 00-00 00 00 00 50 72 6F 63 ............Proc
13CC:0130 65 64 75 72 65 73 0A 0D-24 32 00 00 00 00 00 00 edures..$2......
13CC:0140 00 00 00 00 00 00 00 .......
Массив B після виконання дій над ним:
-d ds:c7
13CD:00C0 00-02 00 FF FF 04 00 02 00 .........
13CD:00D0 FF FF 04 00 02 00 FF FF-04 00 02 00 FF FF 04 00 ................
13CD:00E0 02 00 FF FF 04 00 02 00-FF FF 04 00 02 00 FF FF ................
13CD:00F0 04 00 02 00 FF FF 04 00-02 00 FF FF 04 00 02 00 ................
13CD:0100 FF FF 04 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CD:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13CD:0120 00 00 00 00 00 00 00 00-00 00 00 00 50 72 6F 63 ............Proc
13CD:0130 65 64 75 72 65 73 0A 0D-24 32 00 00 00 C8 00 39 edures..$2.....9
13CD:0140 01 00 00 00 00 00 00 .......
Висновки: На даній лабораторній роботі я придбав та закріпив навички у написанні та відладці програм мовою асемблера із використанням таблиці адрес.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.