Ассемблер макросредства - Assembler

Узнай цену своей работы

Формулировка задачи:

Zamena macro a, b, addr
local m1, pass, exit
push si cx ax
mov bx, addr
mov cl, [bx]
mov ch, 0
jcxz exit
mov al, a
mov ah, b
loop1: inc bx
cmp [bx], al
jne cont
mov [bx], ah
cont: loop loop1
endm

data segment
    array db 7,1,2,3,4,5,6,7
    a db 3
    b db 25
    data ends
    code segment
       assume cs:code, ds:data
start: mov ax,data
       mov ds,ax
       lea bx, array
         Zamena a, b, bx

         mov si,4
         mov dl, array[si]
         mov ah,02h
         int 21h
           mov ah,4ch
           int 21h
 code ends
      end start
Почему в строке 29 выдает ошибку Undefined symbol: ??0002

Решение задачи: «Ассемблер макросредства»

textual
Листинг программы
Zamena macro a, b, addr
local loop1, cont, exit
push si cx ax
mov bx, addr
mov ch, 0
mov cl, [bx]
jcxz exit
mov al, a
mov ah, b
loop1: inc bx
cmp [bx], al
jne cont
 
mov [bx], ah
cont:
   loop loop1
exit: 
   pop ax, cx, si
 
endm
 
 
 
data segment
    array db 7,1,2,3,4,5,6,7
    a db 3
    b db 25
    data ends
    code segment
       assume cs:code, ds:data
start: mov ax,data
       mov ds,ax
       mov bx, offset array
         Zamena a, b, bx
         
         
         mov si,4
         mov dl, array[si]
           mov ah,4ch
           int 21h
 code ends
      end start

Объяснение кода листинга программы

Список действий, которые происходят в коде:

  1. Макроопределение Zamena с тремя аргументами (a, b, addr) и тремя локальными переменными (loop1, cont, exit).
  2. Код цикла, который выполняется до тех пор, пока значение байта в текущей ячейке массива не станет равным значению переменной a.
  3. Сохранение результата в переменной ah.
  4. Переход к следующей ячейке массива.
  5. Выход из цикла и возврат в основную программу.
  6. Загрузка сегмента данных в регистр ax.
  7. Загрузка сегмента данных в регистр ds.
  8. Загрузка адреса массива в регистр bx.
  9. Вызов макроса Zamena с аргументами a, b и bx.
  10. Переменная si устанавливается равной 4.
  11. Переменная dl загружается значением элемента массива с индексом 4.
  12. Выполнение интеррутации int 21h.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5