除法
Tutorial: 汇编基础
Category: C语言
Published: 2026-04-07 13:58:26
Views: 20
Likes: 0
Comments: 0
1. 除法的存储
除数:8bit / 16bit 存在在内存单元或者寄存器中
被除数:AX 或者 AX 和 DX 中
如果除数为 8bit 则被除数为16bit, 存放在AX中
如果除数为 16bit 则被除数为32bit, AX存放低16位, DX存放高16bit
结果:
如果除数为 8bit, AL存商,AH存余数
如果除数为 16bit, AX存商,DX存余数
例如:div bx
bx 是 16bit 寄存器, 则被除数在AX和DX中,除过之后, AX存商, DX存余数
div byte ptr ds:[0] 8bit
div word ptr ds:[0] 16bit
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0100 NV UP EI PL NZ NA PO NC
0DC0:0100 0000 ADD [BX+SI],AL DS:0000=CD
-a
0DC0:0100 mov ax,a
0DC0:0103 mov bx,3
0DC0:0106 div bx
0DC0:0108
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0100 NV UP EI PL NZ NA PO NC
0DC0:0100 B80A00 MOV AX,000A
-t
AX=000A BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0103 NV UP EI PL NZ NA PO NC
0DC0:0103 BB0300 MOV BX,0003
-t
AX=000A BX=0003 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0106 NV UP EI PL NZ NA PO NC
0DC0:0106 F7F3 DIV BX
-t
AX=0003 BX=0003 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0108 NV UP EI PL NZ NA PO CY
0DC0:0108 0000 ADD [BX+SI],AL DS:0003=AD
2. 100001 / 100
# 如果除数为 16bit 则被除数为32bit, AX存放低16位, DX存放高16bit
# AX 最大 FFFF = 65535 100001 = 186A1(H) 100 = 64(H)
# AX = 86A1 DX = 1
-a
0DC0:0100 mov ax,86a1
0DC0:0103 mov dx,1
0DC0:0106 mov bx,64
0DC0:0109 div bx
0DC0:010B
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0100 NV UP EI PL NZ NA PO NC
0DC0:0100 B8A186 MOV AX,86A1
-t
AX=86A1 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0103 NV UP EI PL NZ NA PO NC
0DC0:0103 BA0100 MOV DX,0001
-t
AX=86A1 BX=0000 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0106 NV UP EI PL NZ NA PO NC
0DC0:0106 BB6400 MOV BX,0064
-t
AX=86A1 BX=0064 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0109 NV UP EI PL NZ NA PO NC
0DC0:0109 F7F3 DIV BX
-t
AX=03E8 BX=0064 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=010B NV UP EI PL NZ NA PO CY
0DC0:010B 0000 ADD [BX+SI],AL DS:0064=20
03E8 = 1000
3. 1001 / 100
如果除数为 8bit 则被除数为16bit, 存放在AX中
如果除数为 8bit, AL存商,AH存余数
1001 = 03E9H 100 = 64H
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0100 NV UP EI PL NZ NA PO NC
0DC0:0100 B8A186 MOV AX,86A1
-a
0DC0:0100 mov ax,3E9
0DC0:0103 mov bl,64
0DC0:0105 div bl
0DC0:0107
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0100 NV UP EI PL NZ NA PO NC
0DC0:0100 B8E903 MOV AX,03E9
-t
AX=03E9 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0103 NV UP EI PL NZ NA PO NC
0DC0:0103 B364 MOV BL,64
-t
AX=03E9 BX=0064 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0105 NV UP EI PL NZ NA PO NC
0DC0:0105 F6F3 DIV BL
-t
AX=010A BX=0064 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DC0 ES=0DC0 SS=0DC0 CS=0DC0 IP=0107 NV UP EI PL NZ NA PO CY
0DC0:0107 64 DB 64