使用函数技术编写汇编代码

writing assembly code using function technique

我有一个问题,我必须将一个 8 位数字从内存位置 ABCDH:1200H 移动到内存位置 DCBAH:3456H。以下是我的代码:

   MOV [1200H], 6 
   MOV AL,[1200H]
    CALL FUNC
   HLT
   FUNC:

    MOV [3456H],AL
    RET

是否正确?

move an 8-bit number from memory location ABCDH:1200H into the memory location 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