2013-10-01 4 views
-1

Я пытаюсь выполнить свое задание, которое создает петли, и прямо сейчас я застреваю в цикле для счетчика флагов. Вот требование:Счетчик флагов переноса языка ассемблера

«поместите значение 1 в регистр eax и сдвиньте влево до тех пор, пока не будет установлен флаг переноса, сохраняя счетчик того, сколько раз сдвиг выполнен».

Так что я не понимаю, как это делается. Все, что я сделал до сих пор, оказалось отрицательным. Какие-нибудь советы о том, что я делаю неправильно?

 mov  eax, 1 
Loop3: 
     shl  eax, 1 
     cmp  eax, 0 
     jnz  Loop3 
     mov  eax, counter 

ответ

2

Что вы должны сделать, это следующее дело:

mov eax, 1 
    mov ecx, 0 
Loop3: 
    inc ecx 
    shl eax, 1 
    jnc Loop3 
    mov counter, ecx 
+2

'исключающее ECX, ecx' эквивалентно' мов ECX, 0' и два байта короче. Только мои 2 цента. –

Смежные вопросы