我目前正在上一门关于装配的课程,并且遇到了一个问题,即使在网上进行研究并与教授交谈之后,我仍然完全不知道如何实现它。
简而言之,我想知道如何在值上实现位掩码。例如,如果您想取16位值(1000 0011 1100 0001),并将其转换为此值(0000 0111 1111),则可以使用课程提供的lc3文档中没有这样的命令来应用此值的掩码(0000 0111 1111)。也许这是以一种不同的方式完成的,但到目前为止,我还没有在旅行中找到任何概述它的文档。
总之,不知道如何使用lc3程序集将位掩码应用于值,对我可用的资源没有任何进展,这里的任何人比我更了解该材料,我对如何做到这一点有任何有用的建议吗?
编辑:是的,这是家庭作业,但正如你所看到的,我已经用尽了我的其他选择。
发布于 2016-05-19 23:49:54
对于遇到这种情况的人,我就是这样解决的,以及如何在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中的值,并对R0中的值应用了0000 0111111的位掩码。
https://stackoverflow.com/questions/37313568
复制相似问题