MUL
無符號乘法指令,默認操作數與eax相乘(這里只說32位,其他與下面的div類似)
格式:
mul 操作數 //操作數只有一個
操作數與eax相乘,結果共有16位(這里的16位是16進制數),高8位放在edx中,低8位放在eax中
執行命令下面的命令,此時,ecx為00000005,eax為ffff fff9
ffff fff9的無符號十進制是4294967289,ecx無符號十進制是5,是這兩個數相乘,然后計算的結果轉成16進制就是我們的結果,我們用計算機算一下,結果為
mul ecx
執行完這條語句,我們看到edx(高8位)=00000004,eax(低8位)=ffff ffdd
DIV
無符號除法指令,默認是eax(或al或ax)除以操作數
格式:
div 操作數
- 操作數為8位(二進制):al除以操作數,商放在al中,余數放在ah中
執行指令:
div cl
此時eax=0000 0017,ecx=0000 0003,所以al=17,cl=3
結果為:ah=2(余數),al=07(商)
- 操作數為16位(二進制):ax除以操作數,商放在ax中,余數放在dx中
執行指令:
div cx
此時eax=0000 0017,ecx=0000 0003,所以ax=0017,cx=0003
結果為:ax=0007,dx=0002
- 操作數為32位(二進制):eax除以操作數,商放在eax中,余數放在edx中
執行指令:
div ecx
此時eax=0000 0017,ecx=0000 0003
結果為:eax=0000 0007,edx=0000 0002