Я понял, почему я не смог получить отрицательный результат (степень).Раньше размер моего регистра был слишком мал, чтобы содержать биты для отрицательных чисел, поэтому для исправления я использовал регистры EAX, чтобы увеличить пространство.
включает PCMAC.INC
.модель малый .586 .стек 100h .данные
msg db 'Введите градусы в градусах Фаренгейта: $'
inputdw?
cel dw?
outputmsg db "Преобразование выполнено, результат - $"
outputmsg2 дБ "Цельсия", 13, 10, '$'
A dw 5
B dw 9
.code
extRN GetDec: рядом, PutDec: рядом с основным PROC
_Begin
_Putstr msg
call GetDec
mov input, ax
mov ebx, 32
sub eax, ebx
;mov bl, 32
;sub al, bl
; sub ax, 32
mov cx, A
imul cx
;mov cx, A
;imul cx
mov cx, B
idiv cx
;mov cx, B
;idiv cx
mov dx, 0
mov cx, ax
;mov cel, ax
_putstr outputmsg
mov eax, ecx
call PutDec