對于加減指令來說CPU對有符號加減和無符號加減一視同仁,根據我們需要把它作為有符號的結果還是無符號的結果,但是乘除法指令區分有符號乘除和無符號乘除指令
無符號數乘法指令MUL(MULtiply)
MUL?OPRD(OPRD可以用除立即數以外的任何尋址方式)
???OPRD是八位一個乘數默認在AL中?則:AL*OPRD?結果保存在AX中
???OPRD是16位一個乘數默認在AX中?則:AX*OPRD?DX保存結果的高16位,AX保存結果的低16位
code?segment mov?bl,2
mul?bl ;ax<--bl*al
mov?bx,2
mul?bx ;dx,ax?<--bx*ax?,DX保存結果的高16位,AX保存低16位
code?ends
assume?cs:code
data?segment
db?2,5
data?ends
code?segment
start:
mov?ax,data
mov?ds,ax
mov?si,0
mov?al,50H
mul?byte?ptr?ds:[si] ;BYTE?取出data段中一個字節進行8位乘法al*02H
mov?ax,50H
mul?word?ptr?ds:[si] ;WORD?取出data段中一個字進行16位乘法??ax*0502H
mov?ax,4c00H
int?21H
code?ends
end?start
有符號數乘法指令IMUL(sIgned?MULtiply)
IMUL?OPRD?;該指令把乘數與被乘數均作為有符號數,此外與MUL相同
乘法指令影響FLAG標志寄存器......