Копирование переменной в переменную - Assembler

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

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

У меня есть две переменных:
buf DB 3 dup (' ') 
buf2 DB 3 dup (' ')
Расположены в смежных адресах,причем в первои во второй переменных может находить любые символы. Почему они так расположены не спрашивайте,так нужно! Мне нужно скопировать переменную buf2 в переменную buf.Как это сделать? [IMG]http://s54.***********/i146/0902/5b/26ccfe865344.jpg[/IMG] причем команды Lods и Stos не подходяn,они увеличивают автоматически Di и SI ,поэтому нужно как-то без них обойтись,пробовал с ними создать спец цикл,чтобы не декреметировались Si и Di,но не получилось,поэтому с этим не надо мучаться!

Решение задачи: «Копирование переменной в переменную»

textual
Листинг программы
addr1 dw offset buf
addr2 dw offset buf2
 
; ------------------------
 
mov cx,длина строк
 
m1:
 
mov bx,addr2
mov al,[bx]
mov bx,addr1
mov [bx],al
 
inc addr1
inc addr2
 
loop m1

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

  1. Задачей кода является копирование строки из одного буфера в другой.
  2. Переменные addr1 и addr2 содержат смещения в байтах от начала буферов до начала копируемых строк.
  3. Переменная cx содержит длину строки, которую необходимо скопировать.
  4. Цикл m1 выполняется до тех пор, пока не будет выполнено условие остановки (копирование строки не будет завершено).
  5. Внутри цикла происходит следующее:
    • В регистре bx сохраняется адрес второго буфера (buf2).
    • Из буфера по адресу bx в регистр al копируется первый байт строки.
    • Адрес первого буфера (buf1) сохраняется в регистре bx.
    • В буфер по адресу bx записывается байт из регистра al.
    • Адреса буферов увеличиваются на 1 байт.
  6. После выполнения цикла, в буфере buf1 будет содержаться скопированная строка.

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

14   голосов , оценка 3.643 из 5
Похожие ответы