x86汇编基础
一、定义数据
1.内部数据类型
Byte; 8位无符合整数 SByte; 8位有符合整数 Word; 16位无符合整数 SWord; 16位有符合整数 DWord; 32位无符合整数 SDWord; 32位有符合整数 FWord; 48位整数 QWord; 64位整数 TByte; 80位(10字节)整数 Real4; Real8; Real10;
a DWORD 88
2.伪指令
DB; 8位整数 DW; 16位整数 DD; 32位整数或实数 DQ; 64位整数或实数 DT; 80位(10字节)整数
a DD 88
3.Byte和SByte --1个字节
value BYTE 'a' ; value byte 6 value sbyte -100
(1)?
value BYTE ? ;变量未初始化
(2)多初始值
list BYTE 10,20,30
连续每个字节分别存储 10 20 30
(3)字符串
str1 BYTE 'h','e','l','l','o' str2 BYTE "hello",0 ;0作为结束标记,每个字符占一个字节
(4)dup
BYTE 3 DUP('abc') ;连续abcabcabc
4.word和sword --2个字节
list word 1,2,3; 一个数占2个字节
5.dword和sdwrod --双字-4个字节
a dword 1 ;一个数字占4个字节
6.qword --64位--8个字节
7.real4 --4个字节
保存浮点数
aaa real4 -1.2
8.知识点
x86指令集不允许两个变量相加
x86内存按小端(由低到高)存放和搜索数据
9.等号伪指令
count=10 mov al,count
10.当前地址计数器
在汇编源程序时,使用地址计数器保存正在汇编的指令在当前段内的偏移地址,用户可以用$来引用地址计数器的值。
$是一个数值常量,它可以出现在一切允许出现的位置。例如,利用$可以求当前位置与某变量之间的距离等
list byte 3,3,5,2 count=($-list) ;必须紧跟上一句 计算出count偏移量为4
11.EQU伪指令
把某变量当成一个常数
pi equ a;表达式 pi equ b;用或equ定义过的符号 pi equ <3.14> ;可以是任意数值和文本
12.TEXTEQU伪指令
类似equ创建的文本宏
13.64位编程