x86汇编基础

时间:2022-12-08 14:58:09

一、定义数据

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位编程