前面对于数据的定义: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 bup (0)
stack ends
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。