汇编quad_汇编语言数据类型以及数据定义详解

本文详细介绍了汇编语言中的数据类型,包括BYTE、SBYTE、WORD、SWORD、DWORD、SDWORD、FWORD、QWORD、TBYTE、REAL4、REAL8和REAL10等,以及数据定义语句的使用方法,如DB、DQ、DW、DD等。通过实例展示了如何在内存中为变量分配空间并赋值,同时讨论了数据的初始化和未初始化状态。此外,还讲解了如何在汇编程序中定义和使用变量,以及小端存储顺序的概念。
摘要由CSDN通过智能技术生成

汇编器识别一组基本的内部数据类型(intrinsic data type),按照数据大小(字节、字、双字等等)、是否有符号、是整数还是实数来描述其类型。这些类型有相当程度的重叠,例如,DWORD 类型(32 位,无符号整数)就可以和 SDWORD 类型(32 位,有符号整数)相互交换。

可能有人会说,程序员用 SDWORD 告诉读程序的人,这个值是有符号的,但是,对于汇编器来说这不是强制性的。汇编器只评估操作数的大小。因此,举例来说,程序员只能将 32 位整数指定为 DWORD、SDWORD 或者 REAL4 类型。

下表给出了全部内部数据类型的列表,有些表项中的 IEEE 符号指的是 IEEE 计算机学会出版的标准实数格式。

类型

用法

BYTE

8 位无符号整数,B 代表字节

SBYTE

8 位有符号整数,S 代表有符号

WORD

16 位无符号整数

SWORD

16 位有符号整数

DWORD

32 位无符号整数,D 代表双(字)

SDWORD

32 位有符号整数,SD 代表有符号双(字)

FWORD

48 位整数(保护模式中的远指针)

QWORD

64 位整数,Q 代表四(字)

TBYTE

80 位(10 字节)整数,T 代表 10 字节

REAL4

32 位(4 字节)IEEE 短实数

REAL8

64 位(8 字节)IEEE 长实数

REAL10

80 位(10 字节)IEEE 扩展实数

数据定义语句

数据定义语句(data definition statement)在内存中为变量留岀存储空间,并赋予一个可选的名字。数据定义语句根据内部数据类型(上表)定义变量。

数据定义语法如下所示:

[name] directive initializer [,initializer]...

下面是数据定义语句的一个例子:

count DWORD 12345

其中:

名字:分配给变量的可选名字必须遵守标识符规范。

伪指令:数据定义语句中的伪指令可以是 BYTE、WORD、DWORD、SBTYE、SWORD 或其他在上表中列出的类型。此外,它还可以是传统数据定义伪指令,如下表所示。

伪指令

用法

伪指令

用法

DB

8位整数

DQ

64 位整数或实数

DW

16 位整数

DT

定义 80 位(10 字节)整数

DD

32 位整数或实数

数据定义中至少要有一个初始值,即使该值为 0。其他初始值,如果有的话,用逗号分隔。对整数数据类型而言,初始值(initializer)是整数常量或是与变量类型,如 BYTE 或 WORD 相匹配的整数表达式。

如果程序员希望不对变量进行初始化(随机分配数值),可以用符号 ? 作为初始值。所有初始值,不论其格式,都由汇编器转换为二进制数据。 初始值 0011 0010b、32h 和 50d 都具有相同的二进制数值。

向 AddTwo 程序添加一个变量

前面《整数加减法》一节中介绍了 AddTwo 程序,现在创建它的一个新版本,并称为 AddTwoSum。这个版本引入了变量 sum,它出现在完整的程序清单中:

;AddTowSum.asm

.386

.model flat,stdcall

.stack 4096

ExitProcess PROTO, dwExitCode:DWORD

.data

sum DWORD 0

.cod

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值