- Assembly code
.ORIG x3000LD R6,ZEROnot R6, R6add R6, R6, #1;multiplicandLEA R0, askInput1PUTSGETCOUTadd r4, r0, 0add r4, r4, r6;multiplierLEA R0, askInput2PUTSGETCOUTadd r5, r0, 0add r5, r5, r6and r3,r3,#0multiplicationadd r3,r3,r4add r5,r5,#-1BRz OUTSIDEBRnzp multiplicationOUTSIDELEA R0,changeLinePUTSAND R0,R0,#0ADD R0,R3,0OUTHALTZERO .FILL #48askInput1 .stringz "\nPlease enter the multiplicand, an integer between 0 and 9: "askInput2 .stringz "\nNow enter the multiplier, another integer between 0 and 9: "changeLine .stringz "\n".END
这是小弟写的LC3程序,目的是让使用者输入两个数字(放在R4和R5)然后计算乘积(放在寄存器R3)
问题是乘积一般都是两位数,该怎样输出两位数以上的数字?LC3的输出都是用ASCII的,譬如说0~9都要加48才是它们的ascii代码,两位数就更加不能直接输出。该怎么办?
还有,有没有办法使得两个相乘的数字突破9的限制?该怎样做?
------解决方案--------------------------------------------------------
你去找一个C TO LC3 COMPILER的玩意,可以将C语言的CODE转化为LC3,但是出来的CODE非常恶心就是了
估计LZ你的是作业题吧,一般用到LC3的都是从PATT的那本计算机系统概论上来的,而那本书是很多大学的教材,只是毕竟用这本书的还是少数,不知道也正常