Скачиваний:
68
Добавлен:
11.02.2014
Размер:
28.67 Кб
Скачать

Цель работы: ознакомление и изучение цепочных команд, используемых для обработки символьных данных.

Задание: Заменить заглавные символы на ‘@’.

Рабочая программа.

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

Соседние файлы в папке лабораторные работы по ASSAMBLER