匯編語言
1. mul乘指令
- 兩個相乘的數,要么都是8位,要么都是16位
兩個8位數相乘
- 一個默認放在al中,另一個放在8位reg或內存字節單元中
- 8位乘法,結果默認放在ax中
- 例如:計算100*10
100和10小于255,可以做8位乘法
mov al,64
mov bl,a
mul bl
結果:ax = 1000(03e8h)
兩個16位數相乘
- 一個默認在ax中,另一個放在16位reg或內存字節單元中
- 16位乘法,結果高位默認放在dx中,低位在放在ax中
- 例如:計算100*10000
100小于255,可10000大于255,所以必須做16位乘法
mov ax,64
mov bx,2710
mul bx
結果:ax = 4240h, dx = 000fh (f4240h = 1000000)
2.div除指令
- 除數:有8位和16位兩種,在一個reg或內存單元中
16位除以8位
- 被除數:如果除數為8位,被除數則為16位,默認在ax中存放;
- 除數為8位,則al存儲除法操作的商,ah存儲除法操作的余數
- 計算10000 / 100
mov ax,2710
mov bx,64
div bx
結果 ax = 64h
- 計算10001 / 100
mov ax,2711
mov bl,64
div bl
結果 ax = 0164h ,ah = 01 , al = 64
32位除以16位
-
如果除數為16位,被除數則為32位,在dx和ax中存放,dx存放高16位,ax存放低16位
-
除數為16位,則ax存儲除法操作的商,dx存儲除法操作的余數
-
例如:1000000 / 10000
mov dx,f
mov ax,4240
mov bx,2710
div bx
結果 ax = 64h
-
例如:1000001 / 10000
mov dx,f
mov ax,4241
mov bx,2710
div bx
結果 ax = 64h
3.and邏輯與指令
- 邏輯與指令,按位進行與運算
- 二進制里,同1則1,其余為0;在用debug時要把b轉換為h
- 例如指令:
mov al , 01100011b
and al , 00111011b
執行后:al = 00100011b
mount c d:masm
c:
debug
a 073f:0100
mov al,63
and al,3btt
4.or邏輯或指令
- 邏輯或指令,按位進行或運算
- 二進制里,有1則1,其余為0;在用debug時要把b轉換為h
- 例如:
mov al , 01100011b
or al , 00111011b
執行后:al = 01111011b
a 073f:0104
mov al,63
or al,3btt