【问题标题】:MOV r,M : Where does HL pair fit into this?MOV r,M:HL 对在哪里适合?
【发布时间】:2014-05-21 12:21:39
【问题描述】:

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#v=onepage&q=mov%20r%2C%20M%208085&f=false

从上面的链接: 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指令?

【问题讨论】:

    标签: assembly microcontroller instruction-set microprocessors 8085


    【解决方案1】:

    你首先要把需要的地址加载到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
    

    【讨论】:

    • 所以基本上是注册到注册转移?
    • 否 - 它是从内存加载的,使用间接寻址,地址保存在寄存器对 (HL) 中。
    • 不,HL 是特殊的,所以虽然你可以将地址加载到 BC 或 DE 中,但你只能将 HL 用于像这样的寄存器间接寻址。
    • 这个芯片是在大约 35 年前开发的,他们必须让每个晶体管都计数。大多数设计限制是由于功能与可用于实现该功能的硅片数量之间的权衡。如果你看看稍晚一点的 Z80,它基本上是一个 8085,但它仍然有其局限性。即使是现代 CPU 也必须在功能和缓存大小等之间进行权衡。
    • 完美,有道理。非常感谢。
    【解决方案2】:

    8085 包含一些在 8080 上找不到且未由 Z80 实现的“未记录”指令,因此这些指令很少使用。这是 8085 特定指令的包含文件。在我的例子中,这些被用于基于 8085 的 CP/M 计算机的 BIOS 和实用程序。请注意,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
    

    【讨论】:

      猜你喜欢
      • 2017-01-17
      • 2010-09-16
      • 2011-12-21
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 2021-01-01
      • 2015-01-17
      • 1970-01-01
      相关资源
      最近更新 更多