Предел памяти сборочного бита в арифметике
Я хотел добавить следующие числа: 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