使用lc3应用位掩码

时间:2016-05-19 03:40:41

标签: assembly lc3

我目前正在参加集会课程,并且遇到了一个问题,即使在网上进行研究并与教授教授谈话之后,我仍然完全不知道如何实施它

简而言之,我想知道如何在值上实现位掩码。例如,如果您想要取16位值(1000 0011 1100 0001),并将其转换为此(0000 0000 0111 1111),则应使用此值的掩码(0000 0000 0111 1111)我被告知是一个OR命令....除了我在课程提供的lc3文档中看不到这样的命令。也许它以不同的方式完成,但我发现在我的旅行中没有找到概述它的文件。

总之,我不知道如何使用lc3程序集将位掩码应用于某个值,对于我可用的资源没有运气,这里的任何人都能更好地理解这些材料,那么我对如何做到这一点有任何有用的建议?

编辑:是的,这是家庭作业,但正如你所看到的,我已经用尽了其他选择。

1 个答案:

答案 0 :(得分:0)

对于任何偶然发现这一点的人来说,这就是我解决这个问题的方法,以及如何在lc3汇编中执行OR指令

;Initialize the variables
.ORIG   x3000
LD  R0, valueRO     
LD  R1, valueR1     
LD  R2, lowOrderZero

;The OR instruction begins now
NOT R3, R0 ;Inverse the value in Register 0 to Register 3
NOT R4, R2 ;Inverse the value in Register 2 to Register 4
AND R5, R3, R4 ;Select either the largest or the closest value and store in R5 (not certain on this one)
NOT R0, R5 ;Inverse the value in Register 5 to Register 0

HALT

valueRO     .FILL   x0014
valueR1     .FILL   x0023
lowOrderZero    .FILL   x007F

在这个例子中,我将值设为R0,并将位掩码0000 0000 0111 1111应用于R0中的值

Special thanks to the Comp Sci instructors at the University of Auckland