0

这段代码是什么意思?

有我的评论。我可能错了。但我认为是的。

        PUSH    H       ;There we push data from H-register to the stack.
        LXI     H, OFFF ;I can't understand... Why OFFF, not 0xFFF?
REP:    DCX             ;It decrements passed register. But there's nothing to decrement. Is it correct?
        MVI     A, OO   ;Again... What do two O mean?
        CMP     H       ;CMP takes two arguments. Why does it take one there?
        JMP     REP     ;It's a kind of loop. Jumping to the REP label.
        POP     H       ;This instruction pops data from the stack to the H register.
        RET             ;Return to the caller.

我从来没有遇到过像OFFF、OO这样的结构。这是什么意思?

这段代码有什么作用?主要目的可能是什么?

它可能是哪种型号的处理器?你怎么想?

4

1 回答 1

1

你从哪里得到这个代码?这通常是它用于什么架构的一个重要提示。我想可能是 8080;它有 A 和 H 寄存器(https://en.wikipedia.org/wiki/Intel_8080),以及许多类似于其后代 8086 的指令助记符。

回复:十六进制常量,大概这个汇编程序默认为数字文字的十六进制,并且加载立即到扩展寄存器对(lxi)需要一个 16 位立即数,所以他们用 4 个十六进制数字写入它。 (那是一个0,不是一个O

同样mvi, mov-immediate 到 8 位寄存器采用 8 位立即数,并且他们选择为两半写入显式零。0FFF 上的前导0也是消除符号名称歧义的必要条件。


回复:其他谜团,查看 8080 的指令集参考,了解 DCX 的作用。(剧透警告:我检查并dcx确实需要一个操作数。除非某些汇编程序有一个默认的 16 位寄存器对递减?大概HLH循环计数器?)

但是cmp将显式操作数与累加器 ( A)进行比较;隐式操作数是多少条指令可能只有 1 个字节:https ://pastraiser.com/cpu/i8080/i8080_opcodes.html

于 2022-01-11T15:09:59.997 回答