我是 LC-3 汇编语言的新手,正在编写一个比较两个字符的程序。程序提示用户输入要检查的字符(我使用 GETC 将用户输入加载到 R0 中)。
我得到的框架代码将“g”的负值加载到 R0 中,该值以十六进制形式给出为 xFF99(但我不确定如何获得该值,因为它是给定的)。然后,将一个单独的字符加载到 R7 中,并检查它们是否相等,程序将 R0 与 R7 相加,并将结果存储在 R0 中。然后,如果设置了零条件代码,则运行分支语句。
我的问题是如何获得用户输入内容的负值?我所要做的就是简单地使用 GETC 将用户输入获取到 R0,然后否定该值。之后,程序将按预期运行。
最佳答案
LC-3 没有求反指令,甚至没有减法指令 (!),因此您需要通过直接构造 2 的补码来对数字取负。这需要使用 NOT 指令对位求补,然后使用 ADD 加 1。
关于assembly - 如何用 LC-3 汇编语言对寄存器中的值取反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65162548/