mul
Tutorial: 汇编基础
Category: C语言
Published: 2026-04-07 13:58:26
Views: 20
Likes: 0
Comments: 0
1. 基础
8 b it 乘法: 1个字节, al, bl(也可以放在其他8位寄存器), 也可以 mul byte ptr ds:[0], 结果放在AX中
16 bit 乘法: AX, BX(也可以放在其他16位寄存器), 也可以 mul word ptr ds:[0], 结果:高16位放在DX, 低16位放在AX中
2. 举例
assume cs:code,ds:data,ss:stack
data segment
db 50
dw 5000
data ends
stack segment stack
db 128 dup(0)
stack ends
code segment
start:
mov ax, stack
mov ss,ax
mov sp,128
mov bx, data
mov ds,bx
mov ax,0
mov al,100
mov bl, 10
mul bl
; AX=0064 BX=0E0A CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=0014 NV UP EI PL NZ NA PO NC
; 0E2D:0014 F6E3 MUL BL
; -t
; AX=03E8 BX=0E0A CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=0016 OV UP EI PL NZ NA PE CY
mov ax,0
mov al,100
mul byte ptr ds:[0]
; AX=0064 BX=0E0A CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=001B OV UP EI PL NZ NA PE CY
; 0E2D:001B F6260000 MUL BYTE PTR [0000] DS:0000=32
; -t
; AX=1388 BX=0E0A CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=001F OV UP EI PL NZ NA PO CY
mov ax,100
mov bx,10000 ; (AX = FFFF = 65536 最大)
mul bx ; F4240
; AX=0064 BX=2710 CX=00BC DX=0000 SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=0025 OV UP EI PL NZ NA PO CY
; 0E2D:0025 F7E3 MUL BX
; -t
; AX=4240 BX=2710 CX=00BC DX=000F SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=0027 OV UP EI PL NZ NA PO CY
mov ax,100
mul word ptr ds:[1] ; 7A120
; AX=0064 BX=2710 CX=00C3 DX=000F SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=002A OV UP EI PL NZ NA PO CY
; 0E2D:002A F7260100 MUL WORD PTR [0001] DS:0001=1388
; -t
; AX=A120 BX=2710 CX=00C3 DX=0007 SP=0080 BP=0000 SI=0000 DI=0000
; DS=0E24 ES=0E14 SS=0E25 CS=0E2D IP=002E OV UP EI PL NZ NA PO CY
mov ax,4c00h
int 21h
code ends
end start