У меня проблема с последней частью моего задания. Мы получаем поток битов и т. Д., И т. П. В потоке есть целое число с числом единиц в текстовой части. Я получаю это целое число и его 24, что является правильным, теперь я перебираю текстовые данные, которые я получаю, и я пытаюсь посчитать все 1 там. Но мой процесс всегда возвращает ноль.
Я смог убедиться, что он зацикливается правильно, и это так.
Текст = Привет
это 16 единиц, вот мой процесс для циклического прохождения по этому тексту для подсчета количества единиц в нем.
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
Остальная часть процесса - это просто push / pops. То, что я действительно хочу сделать, это использовать TEST для сравнения 100000000 с байтом, если его AX еще на 1 дюйм сместит маску вправо на 1 и зациклит целый байт, чем inc на следующий байт и сделает снова.