对汇编中一些基础知识的理解
来源:互联网 发布: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
列表文件有两部分:源代码和各种标示符的说明。
- 对汇编中一些基础知识的理解
- WIN32汇编的一些基础知识
- JAVA基础知识: 对synchronized(this)的一些理解
- JAVA基础知识: 对synchronized(this)的一些理解
- JAVA基础知识: 对synchronized(this)的一些理解
- 对java中static的一些理解
- 对数据结构中栈的一些理解
- C和汇编的一些基础知识
- 对C++中关联容器一些基础知识的认识
- 对XEN中HVM虚拟机的一些理解
- 对java中equals和hashCode函数的一些理解
- 对java中equals和hashCode函数的一些理解
- 对java中equals和hashCode函数的一些理解
- 对 Java 中 synchronized(this) 的一些理解和认识
- ios中对KVO、KVC的一些理解
- ios中对KVO、KVC的一些理解
- 对java中equals和hashCode函数的一些理解
- ios中对KVO、KVC的一些理解
- Dining
- 指向函数的指针
- hdoj.2203 亲和串【水题】 2015/03/27
- Going Home
- HTML 参考手册2
- 对汇编中一些基础知识的理解
- 结构-03. 平面向量加法(10)
- 黑马程序员_日记13_Java多线程(三)
- 读写二进制文件
- hdoj.1709 The Balance【母函数】 2015/03/27
- 【RFID第二次作业】课后习题第1题
- cocos2dx帧动画
- Basic Swift Syntax
- Windows下利用C语言程序设置环境变量---能否用环境变量实现进程间的通信?