这些指令集有什么作用?

What do these set of instructions do?

这段代码是什么意思?

有我的意见。我可能是错的。不过我觉得是。

        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 这样的结构。这是什么意思?

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

可能是什么型号的处理器?你怎么看?

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

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

mvi相同,mov-immediate to 8-bit register 需要一个8-bit immediate,并且他们选择为两半写入明确的零。 0FFF 上的前导 0 也是消除符号名称歧义所必需的。


回复:其他未解之谜,请查看 8080 的指令集参考以了解 DCX 的作用。 (剧透警报:我检查过 dcx 确实需要一个操作数 。除非一些汇编器有一个默认的 16 位寄存器对递减?大概 HL 又名H,循环计数器?)

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