我决定学习汇编程序设计语言。我正在使用this。在底部行使它找到一些指令错误,其中之一就是MASM大会将8位寄存器移动到16位寄存器(即mov cx,ch)
mov cx, ch
我发现了一些类似的问题对SO有关这个主题的解释如何实现呢,但现在我想知道为什么这个操作是被禁止的?
我们假设我在CH中有10d = 00001010b,并且想把它放到CL并同时擦除CH。 mov cx, ch
似乎这样做,因为它显示了10D的16位00000000 00001010,并将其分别CH和CL(整个CX)
有什么不妥之处,为什么给教程问找到这种表达错误?
这与其说是被禁止的,更多“不在[所有英特尔操作码的完整列表](http://www.intel。nl/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-2a-manual.pdf)(链接到PDF)“。禁止因为操作码不存在 – usr2564301
我高度怀疑您的困惑之处在于作者为此问题(可能故意)选择了“CH”,“CL”和“CX”寄存器。为了帮助你理解这种不连续性,你可以用'mov dx,ch'得到一个非常类似的错误,这可能会更好地说明错误的原因,只是一个建议;如果不满意就退款 –