MOV r,M: Где пара HL вписывается в это?

https://encrypted.google.com/books?id=FIYGSv3-C6IC&pg=PA59&lpg=PA59&dq=mov+r,+M+8085&source=bl&ots=aX-essc34w&sig=vyGYCHeeJP_Dv_iE8ZjggI2Zh1k&hl=en&sa=X&ei=iZd8U6uJNNWhugSNoILADg&ved=0CF8Q6AEwCQ

Из приведенной выше ссылки:Content of the memory location whose address is available in H,L pair is transferred to the destination register r.

Что я не понимаю, так это как адрес входит в пару H,L? У меня есть адрес памяти, и я хочу, чтобы значение, присутствующее в нем, было перенесено в регистр. Как мне сделать это с помощью MOV r,M инструкция?

2 ответа

Решение

Сначала вы должны загрузить требуемый адрес в HL, затем вы можете получить содержимое адреса, на который указывает HL, например:

LXI HL,1000h          ; load 16 bit address 0x1000 into HL register pair
MOV B,(HL)            ; read contents of address 0x1000 into register B

8085 включает в себя некоторые "недокументированные" инструкции, которых нет на 8080 и которые не реализованы в Z80, поэтому они используются редко. Вот включаемый файл для конкретных инструкций 8085. В моем случае они использовались для BIOS и служебных программ для компьютера CP/M на базе 8085. Обратите внимание, что DE может использоваться как адрес для загрузки или сохранения HL как 16-битное значение:

ARHL    MACRO       ;ARITH RIGHT SHIFT HL
    DB  10H
    ENDM
DSUB    MACRO       ;HL=HL-BC
    DB  08H
    ENDM
JNXC    MACRO   X   ;JMP IF NOT X CARRY (INX, DCX)
    DB  0DDH
    DW  X
    ENDM
JXC MACRO   X       ;JMP IF X CARRY
    DB  0FDH
    DW  X
    ENDM
LDHI    MACRO   I   ;DE=HL+I
    DB  28H
    DB  I
    ENDM
LDSI    MACRO   I   ;DE=SP+I
    DB  38H
    DB  I
    ENDM
LHLX    MACRO       ;HL=(DE)
    DB  0EDH
    ENDM
RDEL    MACRO       ;ROTATE DE,CY LEFT
    DB  18H
    ENDM
RIM MACRO           ;RESET INT MASK
    DB  20H
    ENDM
RSTV    MACRO       ;RST IF V SET TO 40H
    DB  0C8H
    ENDM
SHLX    MACRO       ;(DE)=HL
    DB  0D9H
    ENDM
SIM MACRO           ;SET INT MASK
    DB  30H
    ENDM
Другие вопросы по тегам