Робота з рядками мовою асемблеру

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

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

ЛАБОРАТОРНА РОБОТА №2

             Тема: “робота з рядками мовою асемблеру”

             Мета: Закріплення практичних  навичок  складання і налагодження програм, що включають команди обробки рядків мовою "Асемблер".

             Індивідуальне завдання: Визначити максимальний з елементів масивів А и  В,  для яких виконується умова (Аі=Ві).

Розробка алгоритму рішення задачі

             Вибір змінних

Таблиця 1.

Змінні програми

Ім’я змінной

Призначення змінних

A

Початок масиву A

B

Початок масиву B

N

Кількість елементі масиву

max

Змінна, у яку заноситься результат

s1, s2, s3, s4, s5, s6

Строки повідомлення для користувачав


             Схема алгоритму рішення  задачі

Текст програми:

;    Определить максимальный из элементов массивов А и В,  для

;которых выполняется условие (Аi=Вi).

data segment

  A   dw 25h, 46h, 50h, 20h, 90h, 50h, 50h, 23h, 36h, 60h

      dw 32h, 69h, 28h, 31h, 43h, 47h, 75h, 40h, 38h, 56h

      db 10, 13, '$'

  B   dw 42h, 46h, 36h, 47h, 50h, 50h, 95h, 25h, 36h, 34h

      dw 32h, 19h, 46h, 21h, 88h, 30h, 75h, 70h, 25h, 56h

      db 10, 13, '$'

  N   dw 20

  max dw ?

  s1  db 'Начало программы.',10,13,'$'

  s2  db 'А это усё ;-) ',10,13,'$'

  s3  db 'Исходноя строка 1: ','$'

  s4  db 'Исходноя строка 2: ','$'

  s5  db 'Символ, удовлетворяющий условию работы: ','$'

  s6  db 10,13,'$'

data ends

code segment

assume cs:code,ds:data

m0: mov ax,data              ; адрес сегмента - в регистр DS

    mov ds,ax

;

    mov ax, 1000h            ; установка палитры

    mov bx, 0207h            ; палитра для текста

    int 10h                  ; Сервис видео

    mov ah,9h                ; Вывод

    mov dx,offset s1         ; трассирующего сообщения

    int 21h                  ; о запуске программы

    ; Вывод строки 1

    mov dx,offset s3

    int 21h

    mov dx,offset A

    int 21h

    mov dx,offset s6

    int 21h

    ; Вывод строки 1

    mov dx,offset s4

    int 21h

    mov dx,offset B

    int 21h

    mov dx,offset s6

    int 21h

;  Поиск требуемого числа

;  Подготовка к циклу

   mov cx, N                 ; количество элементов массива

   mov bp, 0000h             ; в аккамулятор исходное значение

   mov si, offset A

   mov di, offset B

M1:mov bx, [si]

   mov ax, [di]

   add si, 2

   add di, 2

   test ax, 8000h

   jnz M2

   cmp ax, bx

   jne M2

   cmp ax, bp

   jle M2

   mov bp, ax

M2:loop M1

   mov max, bp

   mov ah,9h                ; Вывод

   mov dx,offset s5         ; результата работы программы

   int 21h

   mov ah, 02h

   mov dx, max

   int 21h

   mov ah,9h

   mov dx,offset s6

   int 21h

   mov ah,9h                ; Вывод

   mov dx,offset s2         ; трассирующего сообщения

   int 21h                  ; о завершении программы

   mov ah,4ch               ; Выход

   int 21h                  ; в DOS

code ends

end m0

Результати виконання програми:

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

-d ds:0 d2

171B:0000  25 00 46 00 50 00 20 00-90 00 50 00 50 00 23 00   %.F.P. ...P.P.#.

171B:0010  36 00 60 00 32 00 69 00-28 00 31 00 43 00 47 00   6.`.2.i.(.1.C.G.

171B:0020  75 00 40 00 38 00 56 00-0A 0D 24 42 00 46 00 36   u.@.8.V...$B.F.6

171B:0030  00 47 00 50 00 50 00 95-00 25 00 36 00 34 00 32   .G.P.P...%.6.4.2

171B:0040  00 19 00 46 00 21 00 88-00 30 00 75 00 70 00 25   ...F.!...0.u.p.%

171B:0050  00 56 00 0A 0D 24 14 00-00 00 8D A0 E7 A0 AB AE   .V...$..........

171B:0060  20 AF E0 AE A3 E0 A0 AC-AC EB 2E 0A 0D 24 80 20    ............$.

171B:0070  ED E2 AE 20 E3 E1 F1 20-3B 2D 29 20 0A 0D 24 88   ... ... ;-) ..$.

171B:0080  E1 E5 AE A4 AD AE EF 20-E1 E2 E0 AE AA A0 20 31   ....... ...... 1

171B:0090  3A 20 24 88 E1 E5 AE A4-AD AE EF 20 E1 E2 E0 AE   : $........ ....

171B:00A0  AA A0 20 32 3A 20 24 91-A8 AC A2 AE AB 2C 20 E3   .. 2: $......, .

171B:00B0  A4 AE A2 AB A5 E2 A2 AE-E0 EF EE E9 A8 A9 20 E3   .............. .

171B:00C0  E1 AB AE A2 A8 EE 20 E0-A0 A1 AE E2 EB 3A 20 24   ...... ......: $

171B:00D0  0A 0D 24                                          ..$

             Контроль процесу виконання програми з використанням отладчика і застосуванням трасуючих повідомлень:

-g

Начало программы.

Исходноя строка 1: % F P   Р P P # 6 ` 2 i ( 1 C G u @ 8 V

Исходноя строка 2: B F 6 G P P Х % 6 4 2  F ! И 0 u p % V

Символ, удовлетворяющий условию работы: u

А это усё ;-)

Нормальное завершение работы программы

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

-d ds:0 d2

171B:0000  25 00 46 00 50 00 20 00-90 00 50 00 50 00 23 00   %.F.P. ...P.P.#.

171B:0010  36 00 60 00 32 00 69 00-28 00 31 00 43 00 47 00   6.`.2.i.(.1.C.G.

171B:0020  75 00 40 00 38 00 56 00-0A 0D 24 42 00 46 00 36   u.@.8.V...$B.F.6

171B:0030  00 47 00 50 00 50 00 95-00 25 00 36 00 34 00 32   .G.P.P...%.6.4.2

171B:0040  00 19 00 46 00 21 00 88-00 30 00 75 00 70 00 25   ...F.!...0.u.p.%

171B:0050  00 56 00 0A 0D 24 14 00-75 00 8D A0 E7 A0 AB AE   .V...$..u.......

171B:0060  20 AF E0 AE A3 E0 A0 AC-AC EB 2E 0A 0D 24 80 20    ............$.

171B:0070  ED E2 AE 20 E3 E1 F1 20-3B 2D 29 20 0A 0D 24 88   ... ... ;-) ..$.

171B:0080  E1 E5 AE A4 AD AE EF 20-E1 E2 E0 AE AA A0 20 31   ....... ...... 1

171B:0090  3A 20 24 88 E1 E5 AE A4-AD AE EF 20 E1 E2 E0 AE   : $........ ....

171B:00A0  AA A0 20 32 3A 20 24 91-A8 AC A2 AE AB 2C 20 E3   .. 2: $......, .

171B:00B0  A4 AE A2 AB A5 E2 A2 AE-E0 EF EE E9 A8 A9 20 E3   .............. .

171B:00C0  E1 AB AE A2 A8 EE 20 E0-A0 A1 AE E2 EB 3A 20 24   ...... ......: $

171B:00D0  0A 0D 24                                          ..$

Висновки:

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

    - c псевдооператорами визначення даних, рядків і сегментів;

    - с командами умовних переходів і керування циклами;

    - зі структурою головної програми;

    - с виводом рядків на екран за допомогою 9 -ой функції 21H  переривання.

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

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