您的位置:首页 > 其它

对汇编中一些基础知识的理解

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

列表文件有两部分:源代码和各种标示符的说明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: