为什么我在 LC-3 模拟器中看到 R3 寄存器而不是 R1,就像我在 sample.bin 文件中写的那样?
Why do I see R3 register in the LC-3 simulator instead of R1, as I wrote in a sample.bin file?
程序代码如下:
1110 001 011111111 ; R1 <-- x3100 (PC+0xFF)
0101 011 011100000 ; R3 <-- 0
0101 010 010100000 ; R2 <-- 0
0001 010 010101100 ; R2 <-- 12
0000 010 000000101 ; if Z, goto x300A (PC+5)
0110 100 001000000 ; Load next value to R4
0001 011 011000100 ; Add to R3
0001 001 001100001 ; Increment R1 (pointer)
0001 010 010111111 ; Decrement R2 (counter)
0000 111 111111010 ; Goto x3004 (PC-6)
有一个屏幕截图显示了我遇到的问题。
enter image description here
如果您使用原始模式,使用 LC-3 模拟器,第一行会告诉它后续代码的位置。因此,您的 0xE2FF
— 您打算作为一条指令 — 被视为 ORG
地址,并且放置在那里的第一条指令是第一条 AND
指令(您的第二条预期指令)。
尝试在第一行插入以下内容:
0000 000 000000000 ; ORG 0x0000
或使用
0011 000 000000000 ; ORG 0x3000
程序代码如下:
1110 001 011111111 ; R1 <-- x3100 (PC+0xFF)
0101 011 011100000 ; R3 <-- 0
0101 010 010100000 ; R2 <-- 0
0001 010 010101100 ; R2 <-- 12
0000 010 000000101 ; if Z, goto x300A (PC+5)
0110 100 001000000 ; Load next value to R4
0001 011 011000100 ; Add to R3
0001 001 001100001 ; Increment R1 (pointer)
0001 010 010111111 ; Decrement R2 (counter)
0000 111 111111010 ; Goto x3004 (PC-6)
有一个屏幕截图显示了我遇到的问题。 enter image description here
如果您使用原始模式,使用 LC-3 模拟器,第一行会告诉它后续代码的位置。因此,您的 0xE2FF
— 您打算作为一条指令 — 被视为 ORG
地址,并且放置在那里的第一条指令是第一条 AND
指令(您的第二条预期指令)。
尝试在第一行插入以下内容:
0000 000 000000000 ; ORG 0x0000
或使用
0011 000 000000000 ; ORG 0x3000