Макросредства ассемблера - Assembler
Формулировка задачи:
составить программу, включающую макрообращение. Макрокоманда поиска в упорядоченном списке элемента, равного содержимому ячейки Х, и замены его содержимом ячейки Y. Число элементов списка задается первым элементом списка. Начальный адрес списка находится в 16-разрядном регистре BX.
Решение задачи: «Макросредства ассемблера»
textual
Листинг программы
LOCALS .model small .stack 100h .data XX db 'a' YY db 'Z' S db EndSt-S-1-1, 'abcdefghjklmnopqrstuvwxyz', '$' EndSt equ $ CrLf db 0Dh, 0Ah, '$' Before db 'Before: ', 0Dh, 0Ah, '$' After db 'After: ', 0Dh, 0Ah, '$' .code Replace macro X, Y LOCAL @@For, @@Next, @@Break mov si, offset X ;;al - искомое значение mov al, [si] mov ch, 0 ;;cx - количество элементов в списке mov cl, [bx] add bx, 1 @@For: cmp al, [bx] jb @@Break ;;если элемент больше искомого - прекратить поиск jne @@Next ;;если элемент не равен искомому - перейти к следующему ;;замена содержимого ячейки mov si, offset Y mov al, [si] mov [bx], al jmp @@Break @@Next: add bx, 1 loop @@For @@Break: endm main proc mov ax, @data mov ds, ax ;вывод исходной строки на экран mov ah, 09h lea dx, Before int 21h mov ah, 09h lea dx, S+1 int 21h mov ah, 09h lea dx, CrLf int 21h ;обработка строки lea bx, S Replace XX, YY ;вывод обработанной строки на экран mov ah, 09h lea dx, After int 21h mov ah, 09h lea dx, S+1 int 21h mov ah, 09h lea dx, CrLf int 21h mov ax, 4C00h int 21h main endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д