高效的LC3汇编代码可以打印导致任何数字的数字,单位测试表明我的效率太低

时间:2018-02-09 04:51:25

标签: assembly lc3 lc3-trap

我正在使用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

所以我的问题是,有什么方法可以提高效率吗?

0 个答案:

没有答案