伪指令dd 和 操作符dup

伪指令dd

db:define byte 定义字节型数据 —— 八位数据
dw:define word 定义字型数据 —— 十六位数据
dd:double word 定义双字型数据 —— 三十二位数据

比如:

data segment
	dd 1
	dw 1
	db 1
data ends

可以用debug观察内存分配情况
在这里插入图片描述
问题:用div计算data段中第一个数据除以第二个数据后的结果,商存放在第三个数据的存储单元中

data segment
	dd 100001;  100001B=186A1H,超过了ax所能存储的最大值
	dw 100
	dw 0
data ends

分析:data段的第一个数据是 被除数,为dword(双字)型,32位,所以在做除法之前用DX存放高16位,用AX存放低16位(将data:0字单元中低16位存储在ax,data:2字单元中高16位存储在dx)

完整代码如下:

data segment
	dd 100001;  100001B=186A1H,超过了ax所能存储的最大值
	dw 100
	dw 0
data ends

mov ax,data
mov ds,ax
mov ax,ds:[0] ;ds:0字单元中低16位存储在ax中
mov dx,ds:[0] ;ds:2字单元中高16位存储在dx中
div word ptr ds:[4];用dx:ax中的32位数据除以ds:4字单元中数据
mov ds:[6],ax  ;将商存放在ds:6字单元中

;ax存放商,dx存放系数

操作符dup

dup是一个操作符,在汇编语言中同dw、db、dd等一样,也是由编译器识别处理的符号。它是和db、dd、dw等数据定义伪指令配合使用的,用来进行数据的重复

db 3 dup (0)  ;定义了三个字节,相当于db 0,0,0   这个0有多大是通过前面的db确定
db 3 dup (0,1,2) ;定义了九个字节,相当于db 0,1,2,0,1,2,0,1,2
db 100 dup ('12') ;重复了100个‘12’
db 3 dup (‘123’,‘abc’)

dup使用格式如下:
dd 重复的次数 dup (重复的双字型数据)
dw 重复的次数 dup (重复的字型数据)
db 重复的次数 dup (重复的字节型数据)


汇编重点:
针对数据在内存中的排列或者说分布,采取合适的访问内存的方式去读取数据、处理数据(这一点会贯穿整个计算机的学习)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值