Вычисление по формуле - Assembler (223023)
Формулировка задачи:
Здравствуйте, я написал программу вычисления по формуле:
Но дело в том, что программа всегда выводит 'Y=0' независимо от того, какие данные А и В я ввожу.
Подскажите, пожалуйста, в какой строке кода обнуляется АХ.
Вот, что я написал:
program sfgjafnh; var a,b:byte; y:word; begin writeln('vvedite A,B'); readln(A,B); asm mov AL,A mov BL,7 mul BL mov BL,B mul BL sub BX,AX mov AL,A mul AL shl AX,4 xor DX,DX div BX mov Y,AX end; writeln('Y=' ,Y); readln; end.
Решение задачи: «Вычисление по формуле»
textual
Листинг программы
mov AL,A ;al=A mov BL,7 ;bl=7 mul BL ;ax=7*A mov BL,B ;bl=B mul BL ;ax=al*B - уже непонятно что sub BX,AX ;а тут уже нет смысла читать - ведь ранее пошло не так mov AL,A mul AL shl AX,4 xor DX,DX div BX mov Y,AX
Объяснение кода листинга программы
- Значение переменной A копируется в регистр AL:
mov AL, A
. - Значение переменной 7 копируется в регистр BL:
mov BL, 7
. - Значение, находящееся в регистре BL, умножается на значение, находящееся в регистре AL, и результат сохраняется в регистре AX (расширенный регистр):
mul BL
. - Значение переменной B копируется в регистр BL:
mov BL, B
. - Значение, находящееся в регистре BL, умножается на значение, находящееся в регистре AX, и результат сохраняется в регистре AX:
mul BL
. - Значение, находящееся в регистре AX, вычитается из значения, находящегося в регистре BX, и результат сохраняется в регистре BX:
sub BX, AX
. - Значение переменной A копируется в регистр AL:
mov AL, A
. - Значение, находящееся в регистре AL, умножается на само себя, и результат сохраняется в регистре AX:
mul AL
. - Значение, находящееся в регистре AX, сдвигается влево на 4 бита:
shl AX, 4
. - Регистр DX обнуляется:
xor DX, DX
. - Значение, состоящее из соединения значений, находящихся в регистрах AX и DX, делится на значение переменной B, и результат сохраняется в регистре AX:
div BX
. - Значение, находящееся в регистре AX, копируется в переменную Y:
mov Y, AX
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д