对于计算机而言,它只能识别机器指令,因此必须把汇编语言“翻译”
成机器语言,这一过程由编译器完成,下图是汇编语言程序的工作过程:
一、汇编语言的组成:
汇编语言主要由3种指令组成:
1.汇编指令:机器码助记符,有对应机器码
2.伪指令:没有对应机器码,由编译器执行,计算机并不执行
3.其他符号无对应机器码,编译器识别
二、通用寄存器的介绍:
寄存器是CPU中存储数据的地方,根据具体情况分为:
32位CPU包含:8,16,32位三种类型的寄存器
64位CPU包含:8,16,32,64位四种类型的寄存器
其中通用寄存器(是指寄存器中可以存人任何数据和存放于位置的寄存器)分为:
EAX,ESP,ECX,EBP,EDX,ESI,EBX,EDI(这些都是32位的)
AX,CX,DX,BX,SP,BP,SI,DI(这些都是16位的)
A,CL,DL,BL,AH,CH,DH,BH(这些都是8位的)
三、计算机中内存的介绍:
计算机中内存太大没法起名字,所以只能使用编号,当我们想向内存中存数据时,或者从内存中读取数据时,必须使用到这个编号,这个编号又称为内存地址(32位),注意:每个应用程序都有自己独立的4GB的内存空间
内存地址的5种表现形式介绍:
1.[0x13FFC4]
2.[reg]:reg代表寄存器,可以是8个通用寄存器的任意一个,如:mov dword ptr ds:[EAX],12345678
3.[reg+立即数]:如:mov EAX,DWORD ptr ds:[ECX+4]
4.[reg+reg*{1,2,3,4}],使用如(读取内存中的值):
mov EAX,13ffc4
mov ECX,2
mov EDX,DWORD PTR DS:[EAX+EDX*4]
5.[reg+reg*{1,2,3,4}+立即数]:使用如(向内存中写入数据):
mov EAX,13FFC4
mov ECX,2
mov DWORD PTR DS:[EAX+ECX*4+4],87654321
四、汇编语言常用指令的学习:
1.MOV指令:
---mov edx,1:将立即数(普通数)1存到寄存器中去
---mov edx,ecx:将一个寄存器中的值存到另外一个寄存器中去
//汇编语言中绝大多数的指令不允许内存向内存中写入数据:
---mov byte ptr ds:[0018ff0],1:把立即数1写入内存(0018ff0),其中0018ff0必须是可用内存地址,byte表示数据宽度为1个字节,word代表2个字节,dword代表4个字节
---mov dword ptr ds:[0018ff0],EAX:把寄存器中的值写入内存中去,其中dword(4个字节)和EAX(32位)的数据宽度必须一致
---mov eax,dword ptr ds:[0018ff0]:将内存中的值写入到寄存器中去
2.分别以字节/字/双字形式查看内存(db,dw,dd),如:db 18FF9C