汇编语言[王爽]-08 数据处理相关操作[div mul dd dup]

数据处理的两个基本问题

  1. 处理的数据在哪里
    1. cpu内部:寄存器,指令缓冲器(立即数)
    2. 内存
    3. 端口
  2. 处理的数据有多长
    1. 通过寄存器指明
    2. 通过标注指明: inc byte ptr [bx] inc word ptr [bx]
    3. 有些指令默认指明: push [1000H] 只进行 字操作

Untitled

div指令

运算数 位数 位置
除数 8/16 reg或mem
被除数 16/32【除数的两倍】 AX/DX:AX
商和余数 8/16 【和除数一样】 AL:AH/AX:DX

由于被除数、商和余数都是隐含寻址,所以在使用的时候只需要制定除数的位置和大小就可以了

div reg
div mem ;需要指明大小

例子

;计算100001/100
;100001 = 186A1H
mov dx.1
mov ax,86A1h
mov bx,100 ;32bit/16bit
div bx

;计算1001/100
mov ax,1001
mov bl,100 ;16bit/8bit
div bl

mul指令

被乘数 乘数
al reg/mem ax
ax reg/mem dx:ax

由于被乘数、乘数和积都是隐含寻址,所以在使用的时候只需要制定乘数的位置和大小就可以了

mul reg
mul mem ;需指明大小

例子

;计算100*10
;100和10小于255,用8位乘法
mov al,100
mov bl,10
mul bl
;结果 (ax) = 1000(03E8h)

;计算100*10000
;1000大于255,必须用16位乘法
mov ax,100
mov bx,10000
mul bx
;结果 (ax) = 4240h , (dx) = 000Fh , (F4340h = 1000000)

伪指令dd

  • dd :定义Byt数据,8bit
  • dw :定义Word数据,16bit
  • dd : 定义Double Word, 32bit

例子:

Untitled

mov ax,data
mov ds,ax

mov dx,data:[2]
mov ax,data:[0]

div word ptr data:[4]
mov data:[6],ax

小端存储,高位在高地址

dup

用来数据重复

db 3 dup (0) ; 等价于 db 0,0,0
db 3 dup(0,1,2) ; 等价于 db 0,1,2,0,1,2,0,1,2
; dw 和 dd 同理
posted @ 2025-09-15 16:04  Miaops  阅读(8)  评论(0)    收藏  举报