我目前正在参加集会课程,并且遇到了一个问题,即使在网上进行研究并与教授教授谈话之后,我仍然完全不知道如何实施它
简而言之,我想知道如何在值上实现位掩码。例如,如果您想要取16位值(1000 0011 1100 0001),并将其转换为此(0000 0000 0111 1111),则应使用此值的掩码(0000 0000 0111 1111)我被告知是一个OR命令....除了我在课程提供的lc3文档中看不到这样的命令。也许它以不同的方式完成,但我发现在我的旅行中没有找到概述它的文件。
总之,我不知道如何使用lc3程序集将位掩码应用于某个值,对于我可用的资源没有运气,这里的任何人都能更好地理解这些材料,那么我对如何做到这一点有任何有用的建议?
编辑:是的,这是家庭作业,但正如你所看到的,我已经用尽了其他选择。答案 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