Лабораторна робота № 6.
Тема: "Взаємодія процедур через таблицю адресів
мовою ассемблера для ПЭВМ типу ІBM PC/XT/AТ.
Мета: Придбання і закріплення практичних навичок в організації
взаємодії процедур через таблицю адрес параметрів мовою
ассемблера .
Індивідуальне завдання:
5. Задано масиви А и В по N = 50 елементів (констант типу WORD).
Визначити кількість пар елементів, що задовольняють умові
Aі > Bі.
Хід виконання лабораторної роботи.
Текст програми на мові Assembler:
data segment
n dw 50
k dw 0
ta dw 4 dup (?)
a dw 5 dup (0,1,2,3,4,5,6,7,8,0)
b dw 5 dup (9,8,7,6,5,4,3,2,1,0)
data ends
stak segment stack
dw 32 dup (?)
tos label word
stak ends
code segment
assume cs:code,ds:data,ss:stak
beg: mov ax,data
mov ds,ax
mov ax,stak
mov ss,ax
mov sp,offset tos ; Установка указателя на вершину стека
; Формирование таблицы адресов параметров
mov ta, offset n ; адрес n
mov ta+2,offset a ; адрес a
mov ta+4,offset b ; адрес b
mov ta+6,offset k ; адрес k
lea bx,ta ; адрес таблицы адресов параметров
call far ptr pr1 ; Вызов процедуры
mov cx,k
k5: mov ah,2h
mov dl,'*'
int 21h
loop k5;
mov ah,4ch ; Выход
int 21h ; в DOS
;
code1 segment
assume cs:code1
pr1 proc far
push ax
push cx
push dx
push si
push di
mov si,[bx] ; адрес n
mov cx,[si] ; n
mov si,[bx+2] ; адрес a
mov di,[bx+4] ; адрес b
push bx ; Сохранение адреса таблицы в стеке
xor ax,ax
mov dx,ax
m1: mov bx,[si]
cmp bx,[di]
jng m2
inc ax
m2: add si,2
add di,2
loop m1
pop bx ; Восстановление адреса таблицы из стека
mov si,[bx+6] ; адрес k
mov [si],ax ; k
pop di
pop si
pop dx
pop cx
pop ax
ret
pr1 endp
code1 ends
code ends
end beg
Ініциалізація
масивів
да
нет
|
|||||
нет
да
|
Результати роботи програми
Стан області даних до виконання програми :
-d ds:100
0D1C:0100 50 51 52 56 57 8B 37 8B-0C 8B 77 02 8B 7F 04 53 PQRVW.7...w....S
0D1C:0110 33 C0 8B D0 8B 1C 3B 1D-7E 01 40 83 C6 02 83 C7 3.....;.~.@.....
0D1C:0120 02 E2 F1 5B 8B 77 06 89-04 5F 5E 5A 59 58 CB 00 ...[.w..._^ZYX..
0D1C:0130 0A 00 00 00 01 00 02 00-03 00 04 00 05 00 06 00 ................
0D1C:0140 07 00 08 00 00 00 09 00-08 00 07 00 06 00 05 00 ................
0D1C:0150 04 00 03 00 02 00 01 00-00 00 00 00 00 00 2C 0D ..............,.
0D1C:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0D1C:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-g
****
Программа завершилась нормально
Стан області даних після виконання програми :
-d ds:100
0D1C:0100 50 51 52 56 57 8B 37 8B-0C 8B 77 02 8B 7F 04 53 PQRVW.7...w....S
0D1C:0110 33 C0 8B D0 8B 1C 3B 1D-7E 01 40 83 C6 02 83 C7 3.....;.~.@.....
0D1C:0120 02 E2 F1 5B 8B 77 06 89-04 5F 5E 5A 59 58 CB 00 ...[.w..._^ZYX..
0D1C:0130 0A 00 00 00 01 00 02 00-03 00 04 00 05 00 06 00 ................
0D1C:0140 07 00 08 00 00 00 09 00-08 00 07 00 06 00 05 00 ................
0D1C:0150 04 00 03 00 02 00 01 00-00 00 04 00 00 00 2C 0D ..............,.
0D1C:0160 00 00 02 00 16 00 2A 00-00 00 00 00 00 00 00 00 ......*.........
0D1C:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
Висновки по роботі.
У роботі ознайомилися:
- с взаємозв'язком по керуванню процедур, поміщених в один вихідний
модуль ( файл );
- с взаємодією процедур за даними за допомогою таблиці (списку)
адреу параметрів.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.