X86汇编数据类型

本文详细介绍了C/C++编程中的各种数据类型(如BYTE、DWORD等)、数据定义语句、传统数据伪指令,以及数组和字符串的内存分配技巧。重点讲解了数组名作为首地址的概念,以及DUP操作符在数据初始化中的应用。同时讨论了如何声明和区分初始化的和未初始化的数据区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.内部数据类型

BYTE	8位无符号整数,B代表字节
SBYTE	8位有符号整数,S代表有符号
WORD	16位无符号整数
SWORD	16位有符号整数
DWORD	32位无符号整数,D代表双字
SDWORD	32位有符号整数,SD代表有符号双字
FWORD	48位整数(保护模式中的远指针)
QWORD	80(10字节整数),T代表10字节
REAL4	32(4字节)IEEE短实数
REAL8	64(8字节)IEEE长实数
REAL10	80(10字节)IEEE拓展实数

2.数据定义语句

数据定义语句在内存中为变量留出存储空间,并赋予一个可选的名字。

[name] directive	initializer [, initializer].....
COUNT	DWORD 12345

3.传统数据伪指令

DB	8位整数	DATA BYTE
DW	16位整数	DATA WORD
DD	32位整数或实数	DATA DWORD
DQ	64位整数或实数
DT	80(10字节)整数

4.定义一个Int数组

MyIntArr	DWORD	10H, 20H, 30H, 40H, ....

每次访问的时候 MyIntArr+4*n
C语言中为什么数组名是数组的首地址,就来自于这

5.定义一个字符串

MyString	BYTE	"Hello World", 0

以’\0’结尾的字符串其实也就是字符数组

6.DUP操作符

DUP操作符使用一个整数表达式作为计数器,为多个数据项分配存储空间。
在为字符串或数组分配存储空间时,这个操作符非常有用,可以初始化或非初始化数据

BYTE 20 DUP(0)	;20个字节 值都是0
BYTE 20 DUP(?)	;20个字节,非初始化
BYTE 4 DUP("stack")	;20个字节

7.声明未初始化数据

.data
SmallArr DWORD 10 DUP(0)	;40字节
.data?
BigArr DWORD 5000 DUP(?)	;20000字节未初始化
.data
SmallArr DWORD 10 DUP(0)	;40字节
BigArr DWORD 5000 DUP(?)	;20000字节

下面比上面编译出来会多出20000字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值