Я хотел бы добавить следующие цифры: 40, 90, 50 и 155, и я получаю в общей сложности 355.Ассамблеи предел бит памяти в арифметике
Я хотел поэкспериментировать и проверить ли регистр AL будет иметь бит (2^8) - 1, и когда я скомпилировал код и выполнил код, я получаю десятичное число 1376331855. Как это произошло?
Кроме того, я думал, что 355 больше 255, и в результате должно отображаться исключение переполнения.
Я понимаю, что если я использую MOVZX, я смогу провести вычисление в верхнем регистре AX.
Кроме того, я очень смущен различием между AL и AH. Есть ли разница в распределении памяти для AL и AH?
TITLE Adding
INCLUDE Irvine32.inc
.code
main PROC
mov al,0h ;
add al,28h ; 40
add al,5Ah ; 90
add al,32h ;50
add al,9Bh ;155
; total is 355
call DumpRegs
call writedec
exit
main ENDP
END main
Замените 'mov al, 0h' на' mov ax, 0h' или 'mov eax, 0h'. Я думаю, что библиотека Irvine использует EAX. –
Я понимаю, почему вы это сделаете, но мне интересно узнать значение, полученное в результате использования регистра AL. Почему это значение, а не ошибка переполнения? Спасибо. –
Возможно, что переполнение происходит, но вы не проверяете его. –