对汇编中一些基础知识的理解
2015-03-27 23:10
176 查看
基于IA-32处理器和32位汇编语言
一:指令的格式
指令由操作码和操作数组成。
在IA-32中采用的是可变长度指令格式,指令代码异常复杂,一般格式为:
指令前缀+操作码+ModR/M或SIB+位移量+立即数。
指令前缀有0-4个字节,可以分成 四组。
操作码就是操作的编码。其中指令前缀和操作码组成操作码。
ModR/M或SIB指示了操作数的地址,表示操作数在哪。
二:汇编的语句格式
有两种语句:执行性语句和说明性语句。
执行性语句格式:标号:硬指令助记符 操作数 ;注释
说明性语句格式:名字 伪指令助记符 参数 ;注释
其中标号和名字符合高级语言的标示符命名规则。
硬指令 助记符就是处理器执行的指令,伪指令助记符就是类型声明。
操作数和参数可以是常量等。
注释前面要有;引导。
三:源程序框架
在此使用简化 段格式。
汇编程序由代码段,数据段和堆栈段组成。
通常将执行性语句放在代码段,说明性语句放在数据段。
include inc.32
.data
各种说明
.code
Start:
各种说明
exit 0
end start
include 是包含伪指令,.code和.data是伪指令,exit 0指示执行结束,end start指示汇编结束。
在汇编中 没有子程序库,这就要利用操作系统的资源,但这对初学者来说有点难了,于是就有人编了I/O子程序库,使用格式为:
mov eax offset 变量名
call 函数名
另一种格式:
宏名 参数入口
四:开发过程
编辑:用编辑软件编辑,保存为.asm的文件。
编译(汇编):在MASM6.x中汇编程序是ML.EXE。
格式:bin\ml /c/coff eg0201.asm
bin\ml -c-coff eg0201.asm
连接:格式:bin\link32 /subsestem:consle eg0201.obj
生成控制台可执行文件,如果把consle 改成windows就生成图形窗口可执行文件。
执行:在控制台中输入文件名字再按尽善尽美回车即可。
拓展:列表文件.LST
生成列表文件格式:bin\ml /c/coff/Fl eg0201.asm
列表文件有两部分:源代码和各种标示符的说明。
一:指令的格式
指令由操作码和操作数组成。
在IA-32中采用的是可变长度指令格式,指令代码异常复杂,一般格式为:
指令前缀+操作码+ModR/M或SIB+位移量+立即数。
指令前缀有0-4个字节,可以分成 四组。
操作码就是操作的编码。其中指令前缀和操作码组成操作码。
ModR/M或SIB指示了操作数的地址,表示操作数在哪。
二:汇编的语句格式
有两种语句:执行性语句和说明性语句。
执行性语句格式:标号:硬指令助记符 操作数 ;注释
说明性语句格式:名字 伪指令助记符 参数 ;注释
其中标号和名字符合高级语言的标示符命名规则。
硬指令 助记符就是处理器执行的指令,伪指令助记符就是类型声明。
操作数和参数可以是常量等。
注释前面要有;引导。
三:源程序框架
在此使用简化 段格式。
汇编程序由代码段,数据段和堆栈段组成。
通常将执行性语句放在代码段,说明性语句放在数据段。
include inc.32
.data
各种说明
.code
Start:
各种说明
exit 0
end start
include 是包含伪指令,.code和.data是伪指令,exit 0指示执行结束,end start指示汇编结束。
在汇编中 没有子程序库,这就要利用操作系统的资源,但这对初学者来说有点难了,于是就有人编了I/O子程序库,使用格式为:
mov eax offset 变量名
call 函数名
另一种格式:
宏名 参数入口
四:开发过程
编辑:用编辑软件编辑,保存为.asm的文件。
编译(汇编):在MASM6.x中汇编程序是ML.EXE。
格式:bin\ml /c/coff eg0201.asm
bin\ml -c-coff eg0201.asm
连接:格式:bin\link32 /subsestem:consle eg0201.obj
生成控制台可执行文件,如果把consle 改成windows就生成图形窗口可执行文件。
执行:在控制台中输入文件名字再按尽善尽美回车即可。
拓展:列表文件.LST
生成列表文件格式:bin\ml /c/coff/Fl eg0201.asm
列表文件有两部分:源代码和各种标示符的说明。
相关文章推荐
- JAVA基础知识: 对synchronized(this)的一些理解
- 引擎一些基础知识的理解
- 关于Mxnet的一些基础知识理解(1)
- WIN32汇编的一些基础知识
- JAVA基础知识: 对synchronized(this)的一些理解
- 学JavaWeb一年,小谈一些基础知识的理解
- C和汇编的一些基础知识
- 计算机体系结构的一些基础知识
- 网络基础知识讲座之九:初步理解TCP协议
- 网络基础知识讲座之一:理解IPv4地址的含义
- socket网络编程的一些基础知识
- 网络基础知识讲座之七:理解和使用ICMP协议
- 关于DNS的一些基础知识
- 网络基础知识讲座之十:TCP协议理解进阶
- 一些C#方面的基础知识(转载)
- 破解基础知识汇编
- 网络基础知识讲座之八:初步理解IP协议
- java的一些基础知识(引用BlogJava 落花飞雪)
- 汇编语言的基础知识标识符和表达式的继续
- DNS的一些相关基础知识