Взаємодія процедур через таблицю адресів мовою ассемблера для ПЭВМ типу ІBM PC/XT/AТ

Страницы работы

Содержание работы

Лабораторна робота № 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

Овал: початок
 


                                                   Ініциалізація

                                                   масивів

 


                                                 да

 


                   нет

add si,2

 
 


нет

 


                  да

pop bx

 
 

 


Результати роботи програми

Стан області даних до виконання програми :

-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   ................

Висновки по роботі.

   У роботі ознайомилися:

  - с взаємозв'язком по керуванню процедур, поміщених в один вихідний

модуль ( файл );

  - с взаємодією процедур за даними за допомогою таблиці (списку)

адреу параметрів.

Похожие материалы

Информация о работе