我正在尝试计算LC3模拟器中的字符数,并继续“使用非法矢量编号执行陷阱”。 这些是我执行的对象
charcount.obj:
00110000亿
0101010010100000 0010011000010000 1111000000100011 01100010.11亿 0001100001111100 0000010000001000 1001001001111111 0001001001100001 00010010.01亿 0000101000000001 0001010010100001 0001011011100001 01100010.11亿 0000111111110110 0010000000000100 0001000000000010 1111000000100001 1111000000100101 1110001011111111 0000000000110000
和诗: .ORIG x3100
.STRINGZ "Simple Simon met a pieman,"
.STRINGZ "Going to the fair;"
.STRINGZ "Says Simple Simon to the pieman,"
.STRINGZ "Let me taste your ware."
.FILL x04
.END
答案 0 :(得分:0)
在我们为您提供帮助之前,我们似乎需要更多信息。我知道你为我们提供了一些二进制文件,我通过LC3模拟器运行了它。在这里,我有点迷失,您想要计算哪个字符串以及存储在哪里?
在尝试拼凑您在此提供的内容后,我发现了什么。
寄存器:
R0 x0061 97
R1 x0000 0
R2 x0000 0
R3 xE2FF -7425
R4 x0000 0
R5 x0000 0
R6 x0000 0
R7 x3003 12291
PC x3004 12292
IR x62C0 25280
CC Z
内存:
x3000 0101010010100000 x54A0 AND R2, R2, #0
x3001 0010011000010000 x2610 LD R3, x3012
x3002 1111000000100011 xF023 TRAP IN
x3003 0110001011000000 x62C0 LDR R1, R3, #0
x3004 0001100001111100 x187C ADD R4, R1, #-4
x3005 0000010000001000 x0408 BRZ x300E
x3006 1001001001111111 x927F NOT R1, R1
x3007 0001001001100001 x1261 ADD R1, R1, #1
x3008 0001001001000000 x1240 ADD R1, R1, R0
x3009 0000101000000001 x0A01 BRNP x300B
x300A 0001010010100001 x14A1 ADD R2, R2, #1
x300B 0001011011100001 x16E1 ADD R3, R3, #1
x300C 0110001011000000 x62C0 LDR R1, R3, #0
x300D 0000111111110110 x0FF6 BRNZP x3004
x300E 0010000000000100 x2004 LD R0, x3013
x300F 0001000000000010 x1002 ADD R0, R0, R2
x3010 1111000000100001 xF021 TRAP OUT
x3011 1111000000100101 xF025 TRAP HALT
x3012 1110001011111111 xE2FF LEA R1, x3112
x3013 0000000000110000 x0030 NOP
寄存器中显示的值是我在第x3003行后停止时得到的值。由于某种原因,xE2FF
的字面值被加载到寄存器R3
中。之后,将内存位置xE2FF
的值0加载到寄存器R1
中,然后从那里安装问题。
我建议您显示您的asm代码,然后对每一行进行评论,以便我们更好地了解您尝试完成的内容。