Уравнение, результат неверен - Assembler
Формулировка задачи:
Расчет уравнения s=2+6(1-e/2-j)
Я делаю лабу, тема - изучении эмулятора emu 8086 и как видно из скрина s=0)
Помогите понять почему значение переменной s остается равной нулю)
Ну или может я что-то не понимаю, тогда объясните в чем я ошибаюсь)
org 100h segment para assume DS:segc, CS:segc, SS:segc org 100h start: e db 20 j db 2 s db 0 mov AL,e mov CL,1 SAR AL,CL mov BL,j sub AL,BL mov BL,1 sub BL,AL mov AL,BL mov CL,2 SAL AL,CL mov CL,1 SAL BL,CL add AL,BL mov s, AL mov AX, 4c00h int 21h end start segc ends ret
Решение задачи: «Уравнение, результат неверен»
textual
Листинг программы
start: mov AL,e SAR AL,1; AL=e/2 add AL,j; AL=e/2+j dec AL; AL=e/2+j-1 mov BL,-6 imul BL; AX=6*(1-e/2-j) add AX,2 mov s, AX;s=2+6(1-e/2-j) mov Ah, 4Ch int 21h e db 20 j db 2 s dw ? end start
Объяснение кода листинга программы
- Переменная «e» содержит значение 20.
- Переменная «j» содержит значение 2.
- Код выполняет деление переменной «e» на 2 и сохраняет результат в регистре AL.
- К результату деления переменной «e» на 2 прибавляется переменная «j», и результат сохраняется в регистре AL.
- Результат в регистре AL уменьшается на единицу.
- Переменная «s» будет содержать результат вычисления (20/2 + 6*(1-20/2-2)).
- На экран выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д