我如何将 R2 的值更改为负数以便我可以减去两个数字?
How do i change the value of R2 into a negative so i can minus two numbers?
我正在尝试减去两个数字,但是当我不使用 r2 时,r2 不会变成负数有什么帮助吗?
; Start calculation
NOT R2, R2
ADD R2, R3, R2 ; The second operand is at R3
JSR CONV
AND R0, R0, #0
ADD R0, R0, #10 ; Print a new line
OUT
BRnzp REDO
;
LC3 没有用于减法的操作码。它依赖于在无符号意义上将减数的二进制补码加到被减数上并忽略溢出。二进制补码与按位补码(即 NOT
)不同。一个数的补码就是它的按位补码(相对于适用的位宽),加一:
NOT R2, R2
ADD R2, R2, #1 ; This is missing from your version
ADD R2, R3, R2
话虽如此,我不确定您这么说时希望看到什么 "r2 isn't becoming a negative"。对于以补码形式表示的负数,负数和大的正数之间的区别是解释,而不是形式。对于在二进制补码系统中被认为是正的 R2
的值,NOT R2
肯定会被认为是负的——只是不是正确的加法逆。
我正在尝试减去两个数字,但是当我不使用 r2 时,r2 不会变成负数有什么帮助吗?
; Start calculation
NOT R2, R2
ADD R2, R3, R2 ; The second operand is at R3
JSR CONV
AND R0, R0, #0
ADD R0, R0, #10 ; Print a new line
OUT
BRnzp REDO
;
LC3 没有用于减法的操作码。它依赖于在无符号意义上将减数的二进制补码加到被减数上并忽略溢出。二进制补码与按位补码(即 NOT
)不同。一个数的补码就是它的按位补码(相对于适用的位宽),加一:
NOT R2, R2
ADD R2, R2, #1 ; This is missing from your version
ADD R2, R3, R2
话虽如此,我不确定您这么说时希望看到什么 "r2 isn't becoming a negative"。对于以补码形式表示的负数,负数和大的正数之间的区别是解释,而不是形式。对于在二进制补码系统中被认为是正的 R2
的值,NOT R2
肯定会被认为是负的——只是不是正确的加法逆。