汇编语言复习(三)

汇编语言基础

定义数据

汇编器识别一组基本的内部数据类型,按照数据大小(字节,字,双字等等)、是否有符号、是整数还是实数来描述其类型。
在这里插入图片描述

数据定义语句

数据定义语句在内存中为变量留出存储空间,并赋予一个可选的名字。数据定义语句根据内部数据类型定义变量
下面举一个简单的例子:

count DWORD 12345

**名字:**分配给变量的可选名字必须遵守标识符规范
**伪指令:**数据定义语句中的伪指令可以是基本的内部数据类型
在这里插入图片描述
初始值: 数据定义中至少要有一个初始值

定义BYTE和SBYTE数据

BYTE(定义字节)和SBYTE(定义有符号字节)为一个或多个无符号或有符号数值分配内存空间。每个初始值在存储时,都必须是8位的。
问号初始值使得变量未初始化,这意味着在运行时分配数值到该变量
DB伪指令也可以定义有符号或无符号的8位变量

多初始值
list BYTE 10203040

在这里插入图片描述

字节数组:
list BYTE 10,20,30,40。
     BYTE 50,60,70,80
     BYTE 81,82,83,84

注意:
在单个数据定义中,其初始值可以使用不同的基数。

定义字符串

定义一个字符串,要用单引号或者双引号将其括起来。最常见的的字符串类型是用一个空字节(值为0)作为结束标记,称为以空字节结束的字符串

greeting BYTE "hello,world",0

每个字符占一个字节的存储空间

DUP操作符

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

BYTE  20 DUP(0)  ;  20个字节,值都为0
BYTE  20 DUP(?)  ;  20个字节,非初始化
定义WORD和SWORD数据

WORD(定义字)和SWORD(定义有符号字)伪指令为一个或多个16位整数分配存储空间

word1 WORD 65535    最大无符号数
word2 SWORD -32768  最小有符号数
word3 WORD ?  未初始化,无符号数

也可以使用传统的DW伪指令

16位字数组

通过列举元素或使用DUP操作符来创建字数组。

myList WORD 1,2,3,4,5

在这里插入图片描述

array WORD 5 DUP(?) :    5个数值,未初始化
定义DWORD和SDWORD数据

DQORD(定义双字)和SWORD(定义有符号双字)伪指令为一个或多个32位整数分配空间

vall DWORD  12345678h  ;  无符号
val2 SDWORD -12324353 
val3 DWORD 20 DUP(?)  无符号数组 
32位双字数组
myList DWORD 1,2,3,4,5

在这里插入图片描述

定义压缩BCD数据(TBYTE)

在这里插入图片描述
MASM使用TBYTE伪指令来定义压缩BCD变量。常量初始值必须是十六进制的。

小端顺序

在这里插入图片描述

符号常量

通过为整数表达式或文本指定标识符来创建符号常量(也称为符号定义)
注意:符号不预留存储空间。只在汇编器扫描程序是使用,并且在运行时不会改变

等号伪指令
COUNT = 500

MOV EAX,COUNT  等价于  MOV EAX,500

这块的话和C语言中的 #define 联系一下

当前地址计数器:最重要的符号之一被称为当前地址计数器,表示为$

selfPtr DWORD $  这条语句声明了一个变量selfPtr  并将其初始化为该变量的偏移量

键盘定义 程序通常定义符号来识别常用的数字键盘代码。比如,27是Esc建的ASCII码

Esc_key = 27

mov al,Esc_key
_
计算数字和字符串的大小

字节

list BYTE 10,20,30,40
ListSize = ($ - list)

注意:当要计算元素数量的数组中包含的不是字节时,就应该用数组总的大小(按字节计)除以单个元素的大小。

List WORD 1000h,2000h,3000h.4000h
ListSize = ($ - List) / 2

List DWORD 10000000h,20000000h,30000000h.40000000h
ListSize = ($ - List) / 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walkerrev_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值