Організація взаємодії процедур через таблицю адрес параметрів мовою асемблера

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

Мета роботи: Здобуття та закріплення практичних навичок у організації взаємодії процедур через таблицю адрес параметрів мовою асемблера.

1.Індивідуальне завдання

    Задано масив А із 100 елементів (констант типу WORD). Структура масиву А:

          -------------------------

          | X1 | Y1 | X2 | Y2 |...|

          -------------------------

 Сформувати масив В із елементів Хі, для яких виповнюється: Хі=Yі.

2.Алгоритм вирішення

   Описано 2 масиви. Далі в циклі в АХ та ВХ записуються 2 послідовні елементи масиву А. Якщо вони рівні то їх значення записується в масив В та лічильник однакових елементів збільшується на 1. Інакше – лічильник циклу зменшується і розглядаються 2 наступні елементи. Цикл повторюється 50 разів.

3.Блок-схема алгоритму


4.Вибір змінних для написання программи

   А - вхідний масив із 100 констант.

   В – вихідний масив із 50 чисел. Для запису однакових значень масиву А.

   Т – строка для виводу інформації на монітор.

   N - лічильник циклів перевірок масиву А.

5.Текст програми на асемблері

  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

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

Массив 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                              .......

Висновки: На даній лабораторній роботі я придбав та закріпив навички у написанні та відладці програм мовою асемблера із використанням таблиці адрес.

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.