mul и выделение памяти в регистрах edx :: eax с masm
Я пытаюсь понять логику использования операнда "mul" в ассемблере (я использую Visual Studio Community и MASM). Почему после "mul ebx" результат меняется также на edx, а не только на eax? «Результат (MUL) сохраняется в регистре AX, паре регистров DX: AX или паре регистров EDX: EAX (в зависимости от размера операнда), причем старшие биты произведения содержатся в регистре AH, DX или EDX». Так зависит ли расположение от размера операнда? В каком случае?
.586
.model flat,c
.stack 100h
.data
.code
doit proc
;EAX = 0062EEF0 EBX = 7EFDE000 ECX = 0029FD00 EDX = 00000000
mov eax,8;
;EAX = 00000008
mov ebx,4
;EBX = 00000004
mov edx,23498
;EDX = 00005BCA
mul ebx
;EAX = 00000020 EDX = 00000000 ???? 4*8 =20(hexa).So, there is no
;overflow;why is edx changing too?
doit endp
end