LC-3编程找到第一个" 1"的相应位置。在一个数字

时间:2018-04-05 01:45:45

标签: assembly lc3

我无法将此实现为汇编语言。我不理解它的逻辑。

我们说我有一个数字b0100000000000001,第一个有效位是14。

.ORIG x3000
ld    r0, number      ;address of the number in r0

number .fill b0100000000000001      ;allocates the number to r0

所以在我将数字存储在r0之后,我必须遍历数字并找到相应的1?我怎么用汇编语言来做这件事。

编辑:这就是我现在拥有的,这是正确的吗?

    .ORIG   x3000
LEA  R0, NUMBER     ;address of the number into R0
LOOP BRz finish
     ADD R1, R1, #1

finish  HALT






NUMBER  .fill   b0100000000000001   ;allocates number to r0
.END

1 个答案:

答案 0 :(得分:0)

你的循环目前还没有检查任何东西。你有一个数字进入循环并立即跳转到完成,因为它是一个非零数字。

你需要用某种掩码和你的号码来检查第一次出现的号码。

假设您的号码为010001010,并且您和它有10000000,它会给你00000000或零,所以你知道第一位也是零,

但是如果你尝试01000000然后它会给你010000000所以你知道第一个发生在第二位。

让它成为某种循环并计算你到达第一个循环所需的次数。