
лабораторная работа / лабораторные работы по ASSAMBLER / ЛАБА_2_Готовая
.doc
Цель работы:
Ознакомление со способами определения данных и изучение механизма передачи управления в программе (циклы и переходы) для операций сравнения.
Задание:
Найти количество отрицательных элементов массива, попавших в заданный интервал [-25;-8].
Рабочая программа
model Small
.stack 256
.data
mass DB 3,-21,-24,-26,-25,-8,-10,-15,0
message db 'Kol-vo otrizatelnix elementov [-25;-8]: =$',0ah,0dh
.code
start:
mov ax,@data ;Инициализируем сегмент данных
mov ds,ax
mov cx,15 ; счётчик
mov dx,0000 ; результат
lea bx,mass ; адрес в BX
m1: mov al,[bx] ; 1 элемент в AL
cmp al,-25
jnge m2 ; Да - на m2
cmp al,-8
jnle m2
inc dx ; Нет - DX+1
m2: inc bx ; mass+1(следующий)
loop m1 ; повторить
mov bx,dx
mov ah,09h
lea dx,message
int 21h
mov dx,bx
mov ah,02h
add dx,30h
int 21h
exit: ;завершаем работу программы
mov ax,4c00h
int 21h
end start
Файл-листинг
1 0000 model Small
2 0000 .stack 256
3 0000 .data
4 0000 03 EB E8 E6 E7 F8 F6+ mass DB 3,-21,-24,-26,-25,-8,-10,-15,0
5 F1 00
6 0009 4B 6F 6C 2D 76 6F 20+ message db 'Kol-vo otrizatelnix elementov [-25;-8]: =$',0ah,0dh
7 6F 74 72 69 7A 61 74+
8 65 6C 6E 69 78 20 65+
9 6C 65 6D 65 6E 74 6F+
10 76 20 5B 2D 32 35 3B+
11 2D 38 5D 3A 20 3D 24+
12 0A 0D
13 0035 .code
14
15
16 0000 start:
17 0000 B8 0000s mov ax,@data ;Инициализируем сегмент данных
18 0003 8E D8 mov ds,ax
19
20 0005 B9 000F mov cx,15 ; счётчик
21 0008 BA 0000 mov dx,0000 ; результат
22 000B BB 0000r lea bx,mass ; адрес в BX
23
24
25 000E 8A 07 m1: mov al,[bx] ; 1 элемент в AL
26 0010 3C E7 cmp al,-25
27 0012 7C 05 jnge m2 ; Да - на m2
28 0014 3C F8 cmp al,-8
29 0016 7F 01 jnle m2
30 0018 42 inc dx ; Нет - DX+1
31
32 0019 43 m2: inc bx ; mass+1(следующий)
33 001A E2 F2 loop m1 ; повторить
34
35 001C 8B DA mov bx,dx
36 001E B4 09 mov ah,09h
37 0020 BA 0009r lea dx,message
38 0023 CD 21 int 21h
39 0025 8B D3 mov dx,bx
40 0027 B4 02 mov ah,02h
41 0029 83 C2 30 add dx,30h
42 002C CD 21 int 21h
43
44 002E exit: ;завершаем работу программы
45 002E B8 4C00 mov ax,4c00h
46 0031 CD 21 int 21h
-
end start
Вывод: В результате выполненной работы научились программировать алгоритмы циклической структуры на языке ассемблера с применением сложных типов данных, в данном случае массивов с использованием команд условного и безусловного перехода.