
лабораторная работа / лабораторные работы по ASSAMBLER / ЛАБА2
.doc
Цель работы: ознакомление со способами определения данных и изучение механизма передачи управления в программе (циклы и переходы) для операций сравнения.
ЗАДАНИЕ
Ввести с клавиатуры массив а[10] цифр от 0 до 9. Все элементы на нечетных местах заменить цифрами от 1 до 9. Полученный массив выведите на экран.
Рабочая программа
.model small
.stack 256
.data
mas db 10 dup(?)
.code
start:
mov ax,@data
mov ds,ax
xor ax,ax
mov cx,10
mov si,0
cycl:
mov ah,01h
int 21h
sub al,30h
mov mas[si],al
mov ah,02h
mov dl,13
int 21h
mov dl,10
int 21h
inc si
loop cycl
mov ah,02h
mov dl,13
int 21h
mov dl,10
int 21h
mov si,0
mov cx,5
mov bl,1
zamena:
mov mas[si],bl
inc bl
inc si
inc si
loop zamena
mov si,0
mov cx,10
slow:
mov ah,02h
mov dl,mas[si]
add dl,30h
int 21h
mov dl,09h
int 21h
inc si
loop slow
exit:
mov ax,4c00h
int 21h
end start
ФАЙЛ-ЛИСТИНГ
1 0000 .model small
2 0000 .stack 256
3 0000 .data
4 0000 0A*(??) mas db 10 dup(?)
5 000A .code
6 0000 start:
7 0000 B8 0000s mov ax,@data
8 0003 8E D8 mov ds,ax
9 0005 33 C0 xor ax,ax
10 0007 B9 000A mov cx,10
11 000A BE 0000 mov si,0
12 000D cycl:
13 000D B4 01 mov ah,01h
14 000F CD 21 int 21h
15 0011 2C 30 sub al,30h
16 0013 88 84 0000r mov mas[si],al
17 0017 B4 02 mov ah,02h
18 0019 B2 0D mov dl,13
19 001B CD 21 int 21h
20 001D B2 0A mov dl,10
21 001F CD 21 int 21h
22 0021 46 inc si
23 0022 E2 E9 loop cycl
24 0024 B4 02 mov ah,02h
25 0026 B2 0D mov dl,13
26 0028 CD 21 int 21h
27 002A B2 0A mov dl,10
28 002C CD 21 int 21h
29 002E BE 0000 mov si,0
30 0031 B9 0005 mov cx,5
31 0034 B3 01 mov bl,1
32 0036 zamena:
33 0036 88 9C 0000r mov mas[si],bl
34 003A FE C3 inc bl
35 003C 46 inc si
36 003D 46 inc si
37 003E E2 F6 loop zamena
38 0040 BE 0000 mov si,0
39 0043 B9 000A mov cx,10
40 0046 slow:
41 0046 B4 02 mov ah,02h
42 0048 8A 94 0000r mov dl,mas[si]
43 004C 80 C2 30 add dl,30h
44 004F CD 21 int 21h
45 0051 B2 09 mov dl,09h
46 0053 CD 21 int 21h
47 0055 46 inc si
48 0056 E2 EE loop slow
49 0058 exit:
50 0058 B8 4C00 mov ax,4c00h
51 005B CD 21 int 21h
52 end start
ВЫВОД: в результате выполненной работы научились программировать алгоритмы циклической структуры на языке ассемблера с применением сложных типов данных, в данном случае массивов с использованием команд условного и безусловного перехода.