汇编语言
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