我正在使用 LC3 微架构模拟器来编写汇编代码。我只写了大约三个星期的汇编,所以我还是很新。
我的目标是打印所有达到设定值的数字,例如,如果用户选择“6”,控制台将打印 012345
我的代码有效,但单元测试显示我的代码效率低下或有无限循环。
我通过手动将模拟器中的 R1 设置为任何值来设置该值,其余部分通过代码自动设置。从 0x3000 开始
LD, R0, X3001 ;Load R0 with 0
0 ;I did this b/c I don't know how to load a register with ascii values
AND R2, R2, #0 ; Set R2=0
NOT R3, R1 ;invert R1, store in R3
ADD R3, R3, #1 ;Add 1 to R3, now R3=-R1
ADD R4, R0, R3 ; better way to perform loop? added these to maintain loop
BRz X300b ; if previous math ever produces 0, skip to halt
OUT ; print single char
ADD R0, R0, #1 ; R0++
ADD R1, R1 #-1 ; R1--
BRnzp X3006 ;Always branch back to the above BR instruction
HALT
十六进制:
3000
2000
0030
54a0
967f
16e1
1803
0404
f021
1021
127f
0ffb
f025
所以我的问题是,有什么办法可以提高效率吗?