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

来源:互联网 发布:windows无法访问共享 编辑:程序博客网 时间:2024/06/05 15:37

基于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  

列表文件有两部分:源代码和各种标示符的说明。

 


0 0
原创粉丝点击