Я очень новичок в Assembly и не могу найти источник этой ошибки после большого количества отладок.
У меня есть следующая функция Assembly.Цель состоит в том, чтобы вычислить значение х.Все входные переменные имеют тип short и имеют значения:
a = 3
b = 1
c = 1
d = 1
e = -2
f = 5
Функция:
void calculate_x()
{
__asm
{
mov ax, c
imul e
mov numer, ax
mov ax, b
imul f
sub numer, ax
mov ax, a
imul e
mov denom, ax
mov ax, b
imul d
sub denom, ax
mov bx, numer
idiv bx
mov x, ax
}
}
Я получаю результат x = 0
, но он должен быть x = 1
.
Когда я устанавливаю точки останова, кажется, что проблема заключается в третьей от последней строки mov bx, numer
.Это приводит к bx
получению значения мусора, но оно должно получить значение -7
.
Почему bx
получает значение мусора?