我的作业的最后一部分有问题。我们得到一个比特流等,在流中是一个整数,文本部分中有 1 的个数。我得到那个整数和它的 24 是正确的,现在我遍历我得到的文本数据,并尝试计算其中的所有 1。但我的过程总是返回零。
我能够确保它正确循环并且确实如此。
文本 = Hello,它是 16 个 1,这是我的 proc,用于循环遍历该文本以计算其中的个数。
sub AX,AX
sub SI,SI
mov bx,[bp+6] ;get message offset
@@mainLoop:
mov cx,8
mov dh,80h
cmp byte ptr [bx + si],0
je @@endChecker
@@innerLoop:
test byte ptr [bx + si],dh
jz @@zeroFound
inc AX
@@zeroFound:
shr bh,1
loop @@innerLoop
@@continue:
inc si
jmp @@mainLoop
proc 的其余部分只是推送/弹出。我真正想要做的是使用 TEST 将 100000000 与一个字节进行比较,如果它是 1 inc AX,则将掩码右移 1 并循环整个字节,而不是 inc 到下一个字节并再次执行。