
лабораторная работа / лабораторные работы по ASSAMBLER / Lab_3
.docЦель работы: ознакомление и изучение цепочных команд, используемых для обработки символьных данных.
Задание: Заменить заглавные символы на ‘@’.
Рабочая программа.
model small
.data
stroka db 'KoNoVaLoV AlExAnDeR','$'
SMV DB '$'
.stack 256
.code
assume ds:@data, es:@data, ss:@data
start:
mov ax,@data
mov ds,ax
mov es,ax
lea bx,stroka ; Пишем в di адрес нашей строки
mov cx,19 ; Количество символов
m1:
mov al,[bx]
or al,al
cmp al,40h ; Сравнить al c
jle m2 ; Перейти на метку если
cmp al,5Bh
jge m2
mov al,'@' ; Заменим на @
mov [bx],al
m2:
inc bx ; Переходим на следующий элемент массива
loop m1 ; В начало цикла, если cx не равен 0
int 21h
exit: ; Вывод на экран результата и выход
mov ah,09h
lea dx,stroka
int 21h
mov ax,4c00h
int 21h
end start
Файл-листинг.
1 0000 model small
2 0000 .data
3 0000 4B 6F 4E 6F 56 61 4C+ stroka db 'KoNoVaLoV AlExAnDeR','$'
4 6F 56 20 41 6C 45 78+
5 41 6E 44 65 52 24
6 0014 24 SMV DB '$'
7 0000 .stack 256
8 0015 .code
9 assume ds:@data, es:@data, ss:@data
10
11 0000 start:
12 0000 B8 0000s mov ax,@data
13 0003 8E D8 mov ds,ax
14 0005 8E C0 mov es,ax
15 0007 BB 0000r lea bx,stroka ; Пишем в di адрес нашей строки
16 000A B9 0011 mov cx,17 ; Количество символов
17
18 000D m1:
19 000D 8A 07 mov al,[bx]
20 000F 0A C0 or al,al
21 0011 3C 40 cmp al,40h ; Сравнить al c
22 0013 7E 08 jle m2 ; Перейти на метку если
23 0015 3C 5B cmp al,5Bh
24 0017 7D 04 jge m2
25
26 0019 B0 40 mov al,'@' ; Заменим на @
27 001B 88 07 mov [bx],al
28
29
30 001D m2:
31 001D 43 inc bx ; Переходим на следующий элемент массива
32 001E E2 ED loop m1 ; В начало цикла, если cx не равен 0
33
34 0020 CD 21 int 21h
35
36 0022 exit: ; Вывод на экран результата и выход
37 0022 B4 09 mov ah,09h
38 0024 BA 0000r lea dx,stroka
39
40 0027 CD 21 int 21h
41 0029 B8 4C00 mov ax,4c00h
42 002C CD 21 int 21h
43
44 end start