汇编语言摘录35:伪指令dd、dup

汇编语言摘录35:伪指令dd、dup

前面对于数据的定义:db:定义字节型数据(8位);dw:定义字型数据(16位)。

dd定义dowrd(double word,双字)型数据。比如:
data segment
db 1
dw 1
dd 1
data ends

解释:
在data段总定义了3个数据:
第一个数据为01H,在data:0处,占一个字节;
第二个数据为0001H,在data:1处,占1个字(2个字节);
第三个数据为00000001H,在data:3处,占2个字(4个字节)。


用div计算data段中第一个数据除以第二个数据后的结果,商存放在第三个数据的存储单元中。
data segment
dd 100001
dw 100
dw 0
data ends

分析:data段中的第一个数据是被除数,为dword型(32位)。在做除法之前,用dx和ax进行存储。将data:0字单元中的低16位存储在ax中,data:2字单元中的高16位存储在dx中。
mov ax, data
mov ds, ax

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


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

db 3 dup (0):定义了3个字节,它们的值都是0,相当于db 0, 0, 0。

db 3 dup (0,1,2);定义了9个字节,它们是0,1,2,0,1,2,0,1,2,相当于:db 0,1,2,0,1,2,0,1,2。

db 3 dup ('abc', 'ABC');定义了18个字节,他们'是abcABCabcABCabcABC',相当于:db 'abcABCabcABCabcABC'。


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


dup是一个十分有用的操作符,比如我们要定义一个容量为200个字节的栈段,如果不用dup,则需要大量的代码来进行定义。如果用dup的话:
stack segment
db 200 dup (0)
stack ends
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值