我无法将此实现为汇编语言。我不理解它的逻辑。
我们说我有一个数字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
答案 0 :(得分:0)
你的循环目前还没有检查任何东西。你有一个数字进入循环并立即跳转到完成,因为它是一个非零数字。
你需要用某种掩码和你的号码来检查第一次出现的号码。
假设您的号码为010001010,并且您和它有10000000,它会给你00000000或零,所以你知道第一位也是零,
但是如果你尝试01000000然后它会给你010000000所以你知道第一个发生在第二位。
让它成为某种循环并计算你到达第一个循环所需的次数。