欢迎来到天天文库
浏览记录
ID:50143558
大小:924.00 KB
页数:124页
时间:2020-03-09
《微机原理、汇编语言与接口技术教学课件唐瑞庭第05章 汇编语言程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章汇编语言程序设计内容提要本章描述了汇编语言源程序结构、汇编语言语句及其格式,讲解了常用伪指令语句、语句中操作数项表达式及常用操作符,介绍了常用汇编技术、汇编语言上机过程、DOS功能调用及BIOS中断调用、DEBUG调试程序,叙述了常用程序设计方法和保护方式下的编程、模块化程序设计以及汇编语言和C语言的混合编程。5.1汇编语言程序结构5.2汇编语言语句5.3汇编语言程序上机过程5.4汇编语言程序设计5.5模块化程序设计5.1汇编语言程序结构1.方式选择伪指令Intel系列微处理器不断发展换代并保持向上
2、兼容,不同版本的MSAM对应不同代的微处理器的指令集和汇编伪指令。因此方式选择伪指令既是选择微处理机,实质上也是选择相应的指令集。MASM宏汇编程序提供的方式选择伪指令如下:.8086——只汇编8086/8088的指令,此为默认方式.286或.286C——同.8086并只汇编80286非特权(实模式)指令.286P——同.8086并汇编80286全部指令(包括保护方式).287——用于汇编80287协处理器指令.386或.386C——同.286并汇编80386非特权(实模式)指令.386P——同.286P并汇编
3、80386全部指令(包括保护方式).387——用于汇编80387协处理器指令.486或.486C——同.386并汇编80486非特权(实模式)指令.486P——同.386P并汇编80486全部指令(包括保护方式).586或.586C——用于汇编Pentium微处理器非特权(实模式)指令.586P——用于汇编Pentium微处理器保护方式在内的所有指令1.方式选择伪指令(续)以下三条伪指令是MASM6.12引入的:.686——用于汇编PentiumPro到Pentium4微处理器非特权(实模式)指令.686P——
4、用于汇编PentiumPro到Pentium4微处理器保护方式在内的所有指令.MMX——用于汇编MMX指令.K3D——用于汇编AMD微处理器3DNOW!指令。是MASM6.13引入的.XMM——用于汇编SSE和SSE2指令。是MASM6.15引入的2.完整的段定义使用完整的段定义伪指令来定义一个段,可具体控制汇编程序MASM和连接程序LINK在内存中组织代码和数据的方式。整个逻辑段必须用段定义语句括起来。(1)SEGMENT——ENDS伪指令<段名>SEGMENT[定位类型][组合方式][段长度][分类名]
5、{段体}<段名>ENDS每个逻辑段都以SEGMENT语句开头,以ENDS语句结束;两语句前的段名作为逻辑段的标识符,它必须是唯一的,确定该段在存储器中的位置。(1)SEGMENT——ENDS伪指令(续)段开始和结束语句之间部分是段的内容——对数据段、堆栈段和附加段而言,一般由存储单元定义、分配等伪指令所组成,对代码段,则主要是由可执行指令以及某些伪指令组成。方括号中是定位类型、组合方式、分类名和段长度等的说明,视情况可以省略。若对本逻辑段在内存中的定位加以限定、或需与其它段相连接,则须按规定选择这些项。定位
6、类型(Align-type)规定该段的起始位置。有以下几种选择:BYTE:段的起始地址可以从任何单元开始,段间不留空隙,存储器利用率最高;WORD:段的起始地址为偶数,即从字的边界开始;适合字类型的数据段定位;DWORD:段的起始地址是4的整数倍,适合双字类型的数据段定位;PARA:段的起始位置是16的整数倍,即从节(24=16为一节)的边界开始;PAGE:段的起始地址必须是256的整数倍,即从页(28=256为一页)的边界开始;INPAGE:该段长度不超过256个字节(一页之内),不允许跨页存放。定位类型缺省
7、时为PARA方式。(1)SEGMENT——ENDS伪指令(续)组合方式(Combinetype)又称连接方式,规定连接程序LINK处理本段与其它逻辑段时如何进行相互连接。可以有以下几种:NONE:本段与其它段无组合关系,这是缺省方式。也可用等价的关键字PRIVATE。PUBLIC:在满足定位的条件下,将本段与其它具有PUBLIC属性的同名段连接成一个连续的大逻辑段,公用一个段基址;连接次序由连接命令指定。COMMON:本段和其它具有COMMON属性的同名段重叠,对各段指定相同的起始地址(即段基址),因而产生
8、复盖。COMMON连接后段的长度是各连接段中最大段的长度。STACK:把不同模块中具有STACK属性的同名段连接成一个连续的堆栈段,连接后的堆栈空间是被连接的各个堆栈空间之和。LINK自动将新段的段基址送SS,将新段的长度送SP;定义堆栈段时没有将其说明为STACK类型,就要在程序中用指令给SS和SP赋值;连接程序LINK在连接时会给出一个警告信息。MEMORY:早期版本的选项
此文档下载收益归作者所有