gpt4 book ai didi

assembly - 关于位比较的 x86 问题

转载 作者:行者123 更新时间:2023-12-04 07:11:41 26 4
gpt4 key购买 nike

我的作业的最后一部分有问题。我们得到一个比特流,等等,流中是一个整数,文本部分中 1 的数量。我得到了那个整数和它的 24,这是正确的,现在我遍历我得到的文本数据,并尝试计算其中的所有 1。但我的 proc 总是返回零。

我能够确保它正确循环并且确实如此。

文字 = 你好
这是 16 个 1,这是我循环遍历该文本以计算其中 1 的数量的过程。

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 的其余部分只是 push/pops。我真正想要做的是使用 TEST 将 100000000 与一个字节进行比较,如果它是 1 inc AX,则将掩码右移 1 并循环整个字节,而不是 inc 到下一个字节并再次执行。

最佳答案

'shr bh,1' 应该是 'shr dh,1',不是吗?

关于assembly - 关于位比较的 x86 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/232280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com