[masm32] Вычисление кусочной функции - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите найти ошибки в программе. Задание следующее- 2(x-2)+y, если 2x+y=>10 Иначе- 2x+y+1 Если задать значения Х- 2 У- 1 То z получается 6, все работает, так как срабатывает иначе. Но если задать значения Х- 10 У- 1 То Z должен получиться 17, а при откладке программы с этими значениями получается 56 (Выдаёт 38 в 16-ой системе). Почему программа не переходит на метку м1? Код следующий:
x DB 2
y DB 1
z DW ?
 
...
 
Start:
 
MOV AL, x
MOV BL, y
Call pepa 
MOV CX, 10
CMP AX,CX
JNB M1
ADD AX,1
JMP FIN
 
M1:
MOV AL,x
MOV BL,y
SUB AL,2
MOV BL,AL
MOV AL,2
MUL BL
MOV BH,0
ADD AX,BX
Call pepa
fin: mov z, AX
Подпрограмма
MOV CH,2
MUL CH
MOV CX,AX
MOV BH,0
ADD AX,BX

Решение задачи: «[masm32] Вычисление кусочной функции»

textual
Листинг программы
MOV CH,2
MUL CH
MOV CX,AX
MOV BH,0
ADD AX,BX

Объяснение кода листинга программы

  1. MOV CH,2 - переменной CH присваивается значение 2.
  2. MUL CH - переменная CH умножается на AX.
  3. MOV CX,AX - переменная CX получает значение AX.
  4. MOV BH,0 - переменной BH присваивается значение 0.
  5. ADD AX,BX - переменные AX и BX складываются.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5