Уравнение - Assembler (225442)
Формулировка задачи:
Не могли бы вы проверить мою программу... считает z=2-5*(k+t/16) Уже не соображаю правильно считает всё или нет
start: jmp metka t db 10 k db 4 z db 0 metka: mov AL, t mov CL, k SAR AL, CL mov BL, k add AL, BL mov CL, 2 mov BL, AL SAL BL, CL add AL, BL mov BL, 2 sub BL, AL mov z, BL mov AX, 4c00h int 21h end start
Решение задачи: «Уравнение»
textual
Листинг программы
start: mov AL, t mov CL, 4 SAR AL, CL add AL, k mov CL, -5 imul CL add AX,2 mov z, AX mov Ah, 4Ch int 21h t db 10 k db 4 z dw ? end start
Объяснение кода листинга программы
- Переменная
t
инициализируется значением 10. - Переменная
k
инициализируется значением 4. - Переменная
z
инициализируется значением AX. - Код выполняет следующие действия:
- Сдвигает значение переменной
AL
на 4 позиции вправо. - Умножает значение переменной
CL
на 5. - Прибавляет к значению переменной
AL
значение переменнойk
. - Сдвигает значение переменной
CL
на 5 позиций влево. - Прибавляет к сумме регистров AX и CH значение 2.
- Сохраняет результат в переменную
z
. - Запускает прерывание 21h, функция 4Ch, передавая в него значение регистра AX.
- Сдвигает значение переменной
- Результат вычислений сохраняется в переменной
z
.