我正试图使用MARIE.js编写校验和算法,但我一直在做1的补码。我看到其他汇编语言都有CMA代码,但我在MARIE上找不到这些信息。因此,我键入了操作码为2F的G来查找校验和字节,但输出不是我所期望的。我错过了什么或做错了什么?
Input /Takes user input
Store A /Stores user input to A
Input /Takes user input
Store B /Stores user input to B
Input /Takes user input
Store C /Stores user input to C
Input /Takes user input
Store D /Stores user input to D
Load A /Load A to AC
Add B /Add B to A
Add C /Add C to B
Add D /Add D to C
Subt F /Subtract F from Sum of data 1,2,3,4
Store E /Sum of data 1,2,3,4 ignoring carry
Subt G
/Add ONE
Output /Print checksum byte
HALT /End program
/Variable decleration
A, HEX 0 /Data 1
B, HEX 0 /Data 2
C, HEX 0 /Data 3
D, HEX 0 /Data 4
E, HEX 0 /Checksum byte
F, HEX 100 /Ignore carry
G, HEX 2F
ONE, DEC 1
二的补码-n
定义为一个补码+1,例如~n + 1
因此,由于MARIE有减法,您可以生成2的补码(例如0-n
(,从中减去1将生成1的补码~n
。