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

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

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

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

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

             Мета: Придбання і закріплення практичних навичок у складанні і налагодженні програм мовою асемблеру, що обробляє дані, організовані у виді масивів.

             Індивідуальне завдання: Задано масив А з N = 50 елементів (констант типу WORD). Визначити мінімальний з додатних елементів масиву А, де  Ai Е [-100,+100].

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

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

Таблиця 1.

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

Ім’я змінной

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

mas

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

N

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

min

Мінімальний з додатних елементів масиву

s1

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

s2

Початок строки повідомлення про закінчення програми

s3

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


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

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

;   10. Задан массив А из N = 50 элементов (констант типа WORD).

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

;где  Ai Е [-100,+100].

data segment

  mas dw 25h,-46h,50h,-20h,-9h,-50h,-50h,23h,36h,-6h

      dw -23h,19h,28h,11h,43h,-47h,-15h,-40h,38h,-1h

      dw -42h,-29h,36h,-47h,-50h,-50h,-10h,-25h,27h,-34h

      dw 32h,16h,46h,14h,-18h,-30h,-44h,-7h,-24h,-10h

      dw 13h,-24h,32h,-36h,43h,-34h,-44h,27h,-23h,-35h

  N   dw 50

  min dw ?

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

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

  s3  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                  ; о запуске программы

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

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

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

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

   mov si, offset mas

M1:mov bx, [si]

   add si, 2

   test bx, 8000h            ; slr bx, 1          cmp bx, bx

   jnz M2                    ; jc M2              js M2

   cmp bp, bx

   jb M2

   mov bp, bx

   mov ah,9h                ; Вывод

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

   int 21h                  ; о срабатывании логики

M2:loop M1

   mov min, bp

   mov ah,9h                ; Вывод

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

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

   mov ah,4ch               ; Выход

   int 21h                  ; в DOS

code ends

end m0

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

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

-d ds:0 B6h

14E5:0000  25 00 BA FF 50 00 E0 FF-F7 FF B0 FF B0 FF 23 00   %...P.........#.

14E5:0010  36 00 FA FF DD FF 19 00-28 00 11 00 43 00 B9 FF   6.......(...C...

14E5:0020  EB FF C0 FF 38 00 FF FF-BE FF D7 FF 36 00 B9 FF   ....8.......6...

14E5:0030  B0 FF B0 FF F0 FF DB FF-27 00 CC FF 32 00 16 00   ........'...2...

14E5:0040  46 00 14 00 E8 FF D0 FF-BC FF F9 FF DC FF F0 FF   F...............

14E5:0050  13 00 DC FF 32 00 CA FF-43 00 CC FF BC FF 27 00   ....2...C.....'.

14E5:0060  DD FF CB FF 32 00 00 00-8D E3 2C 20 E2 A8 AF A0   ....2....., ....

14E5:0070  2C 20 AD A0 E7 A0 AB AE-20 AF E0 AE A3 E0 A0 AC   , ...... .......

14E5:0080  AC EB 2E 0A 0D 24 80 20-ED E2 AE 2C 20 E2 A8 AF   .....$. ..., ...

14E5:0090  A0 2C 20 AF A8 E1 A5 E6-2E 0A 0D 24 96 A8 AA AB   ., ........$....

14E5:00A0  2E 20 91 E0 A0 A1 AE E2-A0 AB A0 20 AB AE A3 A8   . ......... ....

14E5:00B0  AA A0 2E 0A 0D 24 00                              .....$.

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

-g

Ну, типа, начало программы.

Цикл. Сработала логика.

Цикл. Сработала логика.

Цикл. Сработала логика.

Цикл. Сработала логика.

А это, типа, усё ;-)

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

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

-d ds:0 B6h

14E5:0000  25 00 BA FF 50 00 E0 FF-F7 FF B0 FF B0 FF 23 00   %...P.........#.

14E5:0010  36 00 FA FF DD FF 19 00-28 00 11 00 43 00 B9 FF   6.......(...C...

14E5:0020  EB FF C0 FF 38 00 FF FF-BE FF D7 FF 36 00 B9 FF   ....8.......6...

14E5:0030  B0 FF B0 FF F0 FF DB FF-27 00 CC FF 32 00 16 00   ........'...2...

14E5:0040  46 00 14 00 E8 FF D0 FF-BC FF F9 FF DC FF F0 FF   F...............

14E5:0050  13 00 DC FF 32 00 CA FF-43 00 CC FF BC FF 27 00   ....2...C.....'.

14E5:0060  DD FF CB FF 32 00 11 00-8D E3 2C 20 E2 A8 AF A0   ....2....., ....

14E5:0070  2C 20 AD A0 E7 A0 AB AE-20 AF E0 AE A3 E0 A0 AC   , ...... .......

14E5:0080  AC EB 2E 0A 0D 24 80 20-ED E2 AE 2C 20 E2 A8 AF   .....$. ..., ...

14E5:0090  A0 2C 20 AF A8 E1 A5 E6-2E 0A 0D 24 96 A8 AA AB   ., ........$....

14E5:00A0  2E 20 91 E0 A0 A1 AE E2-A0 AB A0 20 AB AE A3 A8   . ......... ....

14E5:00B0  AA A0 2E 0A 0D 24 00                              .....$.

Висновки:

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

   - с визначенням і ініціалізацією даних, організованих у виді масивів;

   - с режимами адресації даних;

   - с організацією циклів для роботи з масивами;

   - с організацією розгалуження в ассемблерной програмі;

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

   - с використанням отладчика для контролю процесу виконання програми

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

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