Вычисление по формуле - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д