我遇到一个问题,我必须将一个8位数字从存储位置ABCDH:1200H移到存储位置DCBAH:3456H。以下是我的代码:
MOV [1200H], 6
MOV AL,[1200H]
CALL FUNC
HLT
FUNC:
MOV [3456H],AL
RET
对吗?
答案 0 :(得分:2)
将8位数字从内存位置 ABCDH :1200H移到内存位置 DCBAH :3456H。
鉴于源和目标位于不同的内存段中,您当前的解决方案会将AL
值移动到检索到的同一段中的位置。我们希望这是段ABCDh开头!
mov ax, 0ABCDh
mov ds, ax
mov [1200h], 6 ;Initialize the source byte
mov al, [1200h] ;Read source ABCDh:1200h
CALL FUNC
HLT
如果要在函数中进行此传输,则至少应保留(将要使用的)段寄存器。
; Input AL
; Output none
; Changes none
FUNC:
push ds
push dx
mov dx, 0DCBAh
mov ds, dx
mov [3456h], al ;Write destination DCBAh:3456h
pop dx
pop ds
ret