3.4 定义数据
知识点:
1.内部数据定义
BYTE 8位无符号整数
SBYTE 8位有符号整数
WORD 16位无符号 (实地址模式近指针)
SWORD 16位有符号
DWORD 32位无符号(保护模式近指针)
SDWORD 32位有符号
FWORD 48位整数
QWORD 64位整数
TBYTE 80位整数
REAL4 32位IEEE短实数
REAL8 64位IEEE长实数
REAL10 80位IEEE扩展精度实数
2.数据定义语句
[名称] 数据定义伪指令 初始值[,初始值] ...
数据定义语句至少要有一个初始值或者“?” 符号。
3.定义BYTE和SBYTE数据
value1 BYTE 'A'
value2 BYTE 0
value3 BYTE 255
value4 SBYTE -128
value5 SBYTE +127
value6 BYTE ? ;未初始化
DB伪指令:
val1 DB 255
val2 DB -128
无法区分有符号数据和无符号数据
多个初始值: list BYTE 10,20,30,40
并非所有的数据定义都需要标号:
list BYTE 10,20
BYTE 30,40
可以同时使用不同进制的数字
list1 BYTE 10,32,41h,00100010b
list2 BYTE 0AH,20h,'A',22h
4.定义字符串
greeting1 BYTE "Good afternoon",0 ; 空字符结尾的字符串
greeting BYTE "Welcome to the encryption demo program"
BYTE "created by KIP",0dh,0ah
BYTE " if you wish",0
以上是连续字符串,中间夹杂回车换行。
行延续符: greeting \
BYTE "welcome to the encry"
DUP 操作符:
BYTE 20 DUP(0) ;20个0
BTTE 20 DUP(?) ;20 字节,未初始化
BYTE 4 DUP("STACK") ;4 个STACK
5.定义WORD,SWORD
word word 65525
word2 sword -32768
word3 word ?
DW 指令:
val1 DW 65525 ;无符号
val2 DW -32768 ;有符号
字数组:
mylist word 1,2,3,4 ; 每个2字节
array word 5 dup(?)
5.DWORD SDWORD
val1 dword 12345678h
val2 sdword -2147483648
val3 dword 20 dup (?)
DD伪指令
VAL1 DD 12345678
mylist DWORD 1,2,,3 每个4字节
6.QWORD
quad1 qword 1111111111111111h
quad1 dq 1111111111111111h
7.TBYTE
val1 TBYTE 111111111111111111h ; 80 bit
val1 dt 1111111 ; 80 bit
8 定义实数
rval1 REAL4 -2.1 ;单精度,有效位数 6,范围 1.18E-38 ---------3.40E+38
rval2 REAL8 3.2E-260 ;双精度, 有效位数15,范围2.23E-308----------1.79E+308
rval3 REAL10 4.6E+4096 ;扩展精度,有效位数19,范围3.37E-4932 -------1.18E+4932
老版本用DD,DQ,DT定义实数
9.小尾顺序
最低有效字节存储在地址值最小的地址单元。
12345678H,在内存中的实际存储时78563412.
10.带变量的程序
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
