написание ассемблера с использованием функциональной техники - PullRequest
0 голосов
/ 26 февраля 2019

Мне задают вопрос, в котором мне нужно переместить 8-битное число из ячейки памяти ABCDH: 1200H в ячейку памяти DCBAH: 3456H.Вот мой код:

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

    MOV [3456H],AL
    RET

Это правильно?

1 Ответ

0 голосов
/ 02 марта 2019

переместить 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
...