assembly - 如何用 LC-3 汇编语言对寄存器中的值取反?

标签 assembly lc3

我是 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/

相关文章:

linux - LC-3 汇编语言 - 交换值

lc3 - 如何编写一个简单的 LC-3 程序

c - 如何使用 GNU 链接器而不是 Darwin 链接器?

将 C 编译成 MIPS

linux - 在linux中,文件末尾没有空字符是否正常

if-statement - 代码执行条件错误?

assembly - or32-uclinux-gcc 给出汇编消息 : no such instruction

assembly - 我的 LC-3 输入代码没有按预期工作

assembly - LC3 LEA 指令和存储的值