【发布时间】:2016-03-08 20:30:21
【问题描述】:
写一个 LC-3 用于查找内存中正数列表的最大值的汇编代码。 R0 包含列表开头的内存位置,以及列表的结尾 数字由零或负数表示。代码应该放置最大 列表中的值存入寄存器 R5。如果列表的第一个数字为零或 负数,R5 应包含零。 例如,如果 R0 包含值 x4000,并且内存包含以下内容 价值观: x4000:10 x4001:20 x4002:15 x4003:-1
问题说书中有一个例子,但我发现没有任何帮助,我之前为这个问题写了一些代码,
.orig x3000
LD R1, NUMBER1 ;load NUMBER1 into R1
LD R2, NUMBER2 ;load NUMBER2 into R2
BRz Equals ;we jump to Equals if NUMBER1 = NUMBER2 (we can just jump directly to END)
BRn GreaterR2 ;we jump to GreaterR2 if NUMBER1 < NUMBER2
BRp GreaterR1 ;we jump to GreaterR1 if NUMBER1 > NUMBER2
Equals BRnzp End ;
GreaterR2 ADD R5, R5, #2 ;R0 = -1
BRnzp End
GreaterR1 ADD R5, R5, #6 ;R0 = 1
BRnzp End
End HALT ;THE END
NUMBER1 .FILL #2 ;
NUMBER2 .FILL #6 ;
.END
所以我有这个,但是在我不知道如何做一个列表之后。我能得到一些帮助吗?
【问题讨论】: