汇编语言程序格式课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言程序格式课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 格式 课件
- 资源描述:
-
1、汇编语言程序格式汇编语言程序格式汇编语言程序格式汇编语言程序格式汇编语言程序格式汇编语言程序格式一、汇编语句类型和格式一、汇编语句类型和格式1 1语句类型语句类型硬指令语句(指令性语句)是指能产生目标代码,CPU可以执行的,能完成特定功能的语句,它主要由CPU指令组成伪指令语句(指示性语句)是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编宏指令语句 是一个指令序列,汇编时凡有宏指令语句的地方都将用相应的指令序列的目标代码插入汇编语言程序格式汇编语言程序格式2 2语句的格式语句的格式(1 1)执行性语句)执行性语句 标号标号:硬指令助记符硬指令助记符 操作数,操作数操作数,操
2、作数 ;注释;注释(2 2)说明性语句)说明性语句 名字名字 伪指令助记符伪指令助记符 参数,参数参数,参数 ;注释;注释汇编语言程序格式汇编语言程序格式 8086按照逻辑段组织程序,具有代码段、数据段、附加段和堆栈段一个汇编语言源程序可以包括若干个代码段、数据段或堆栈段段与段之间的顺序可以随意排列。逻辑段用汇编语言源程序中的段定义伪指令段定义伪指令来定义汇编语言程序格式汇编语言程序格式 完整段定义伪指令 指定段寄存器伪指令 段寄存器的装入 可执行程序的正常结束汇编语言程序格式汇编语言程序格式1 1完整段定义伪指令(完整段定义伪指令(SEGMENTSEGMENT、ENDSENDS)作用:作用:
3、控制汇编程序和连接程序在内存中组织代码和数据的方式。控制汇编程序和连接程序在内存中组织代码和数据的方式。格式:格式:段名段名 SEGMENTSEGMENT 定位类型定位类型 组合类型组合类型 类别名类别名 段名段名 ENDSENDS注意:注意:uSEGMENTSEGMENT和和ENDSENDS总是总是成对出现成对出现u中间省略部分称为中间省略部分称为段体段体。对代码段来说,则主要是程序代码;。对代码段来说,则主要是程序代码;对其它段来说,一般用于变量、符号等的定义对其它段来说,一般用于变量、符号等的定义u方括号中的为可选项,当有可选项时方括号中的为可选项,当有可选项时各项顺序不能错各项顺序不能
4、错,可选,可选项之间用空格隔开项之间用空格隔开汇编语言程序格式汇编语言程序格式(1)(1)段名段名 段名是用户自定义的,但不要与指令助记符或伪指令段名是用户自定义的,但不要与指令助记符或伪指令重名重名 用来用来指示汇编程序为该段分配的存储区的首地址指示汇编程序为该段分配的存储区的首地址 段名有段地址和偏移地址两个属性段名有段地址和偏移地址两个属性 段开始和段结束的段名必须相同段开始和段结束的段名必须相同汇编语言程序格式汇编语言程序格式(2)(2)定位类型定位类型 说明说明段的起始地址的边界要求段的起始地址的边界要求,指示连接程序按定位类,指示连接程序按定位类型提出的要求,安排各段在内存的型提出
5、的要求,安排各段在内存的相互衔接方式相互衔接方式。它有。它有5 5种可种可选择类型:选择类型:BYTE BYTE:段的起始地址可以从任何地址开始段的起始地址可以从任何地址开始。段起始地址段起始地址(20(20位位):B B WORDWORD:段的起始地址必须以:段的起始地址必须以偶地址开始偶地址开始 段起始地址段起始地址(20(20位位):0 B0 B汇编语言程序格式汇编语言程序格式 DWORD DWORD:段的起始地址:段的起始地址必须为必须为4 4的倍数的倍数 段起始地址段起始地址(20(20位位):0 0 B0 0 B PARA PARA:段的起始地址必须:段的起始地址必须从小段边界开始
6、从小段边界开始 段起始地址段起始地址(20(20位位):0 0 0 0 B 0 0 0 0 B PAGEPAGE:段的起始地址:段的起始地址必须从页的边界开始必须从页的边界开始 段起始地址段起始地址(20(20位位):0 0 0 0 0 0 0 0 B 0 0 0 0 0 0 0 0 B如未指定定位类型,则汇编程序默认为如未指定定位类型,则汇编程序默认为PARAPARA。汇编语言程序格式汇编语言程序格式(3)(3)组合类型组合类型 当程序有多个段时,组合类型用来说明段与段之间是怎样连接和定位的,共有6种组合类型:不指定或称隐含方式:表示本段与其他模块中的同名段无连接关系,它将作为一个独立的段运
7、行。PUBLIC:本段与其他模块中说明为PUBLIC方式的同名段顺序连接,组成一个大的逻辑段,它们共用同一个段起始地址。COMMON:本段与其他模块中说明为COMMON方式的同名段从同一地址开始重叠连接,段长是同名段中最长的段的长度。汇编语言程序格式汇编语言程序格式 STACK STACK:表示:表示该段是堆栈段的一部分。把所有相同该段是堆栈段的一部分。把所有相同 类类别名别名的具有的具有STACKSTACK组合类型的段连接成一个连续段组合类型的段连接成一个连续段,该段,该段长度为各原有段的总和。将长度为各原有段的总和。将连续段首地址送连续段首地址送SSSS,段内最大,段内最大偏移地址送偏移地
8、址送SPSP(SPSP指向栈顶)。当指向栈顶)。当定义了定义了STACKSTACK属性后,在属性后,在主程序中可省略对主程序中可省略对SSSS和和SPSP的初始化的初始化。MEMORY MEMORY:与:与PUBLICPUBLIC同义。同义。汇编语言程序格式汇编语言程序格式(4)(4)类别名类别名 类别名必须用单引号括起来。连接时对不同模块、类别名必须用单引号括起来。连接时对不同模块、不同名的程序段只要不同名的程序段只要类别名类别名相同相同,则,则放在一个连续放在一个连续的物理空间的物理空间,但每段之间是独立的,不进行组合。,但每段之间是独立的,不进行组合。汇编语言程序格式汇编语言程序格式2
9、2指定段寄存器伪指令(指定段寄存器伪指令(ASSUMEASSUME)作用:作用:明确段和段寄存器之间的关系明确段和段寄存器之间的关系,即,即告诉汇编程序,告诉汇编程序,在运行期间通过哪个段才能找到所要的指令和数据在运行期间通过哪个段才能找到所要的指令和数据 格式:格式:ASSUMEASSUME 段寄存器名:段名段寄存器名:段名,段寄存器名:段名段寄存器名:段名 例如:例如:ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA,SSSS:STACKSTACK汇编语言程序格式汇编语言程序格式3 3段寄存器的装入段寄存器的装入 ASSUME伪指令只是指出各段和段寄存器之
10、间的关系,但并未真正将段基地址装入相应的段寄存器中,所以在程序的代码段开始处就应该先进行段基址的装入 数据段DS、附加段ES和堆栈段SS的段基址由用户程序代码装入 代码段CS在加载程序后由系统自动装入汇编语言程序格式汇编语言程序格式(1)DS(1)DS、ESES的装入的装入 MOV AXMOV AX,DATA DATA ;数据段段基地址送;数据段段基地址送AXAX寄存器寄存器 MOV DSMOV DS,AX AX ;AXAX寄存器的内容送数据段寄存器寄存器的内容送数据段寄存器DSDS或或 MOV AXMOV AX,SEG X SEG X ;变量;变量X X所在数据段的段基址送所在数据段的段基址
11、送AXAX寄存器寄存器 MOV DSMOV DS,AXAX汇编语言程序格式汇编语言程序格式(2)CS(2)CS的装入的装入 对对CSCS和和IPIP的装入方法是利用的装入方法是利用ENDEND后的后的标号来完成的。标号来完成的。如:如:STARTSTART:END END STARTSTART 系统自动将系统自动将STARTSTART所在段的段地址送所在段的段地址送CSCS寄存器,将寄存器,将STARTSTART所在所在段内的偏移地址段内的偏移地址送送IPIP寄存器寄存器。汇编语言程序格式汇编语言程序格式(3)SS(3)SS的装入的装入方法方法1 1:由系统自动装填。由系统自动装填。要求在要求
12、在定义堆栈段时,必须把定义堆栈段时,必须把参数写全。参数写全。这时,将程序装入内存,系统会自动地把堆这时,将程序装入内存,系统会自动地把堆栈段地址和堆栈指针置入栈段地址和堆栈指针置入SSSS和和SPSP中,因而可以不在代码中,因而可以不在代码段中装入段中装入SSSS和和SPSP的值。的值。STACK1 SEGMENT STACK1 SEGMENT PARA STACK STACKPARA STACK STACKDB 50H DUP(?)DB 50H DUP(?)STACK1 ENDSSTACK1 ENDS汇编语言程序格式汇编语言程序格式方法方法2 2:手动装填手动装填STACK1 SEGMEN
13、T PARASTACK1 SEGMENT PARADW 50H DUP(?)DW 50H DUP(?)TOP LABEL WORDTOP LABEL WORD;TOPTOP属性为属性为WORDWORDSTACK1 ENDSSTACK1 ENDSCODE SEGMENTCODE SEGMENTASSUME CSASSUME CS:CODECODE,SSSS:STACK1STACK1STARTSTART:MOV AXMOV AX,STACK1STACK1MOV SSMOV SS,AXAX ;堆栈段的段地址送;堆栈段的段地址送SSSSMOV SPMOV SP,OFFSET TOPOFFSET TOP
14、;堆栈段的栈顶地址送;堆栈段的栈顶地址送SPSPTOPTOP是该堆栈的初始栈顶部地址。是该堆栈的初始栈顶部地址。汇编语言程序格式汇编语言程序格式4 4操作系统下操作系统下可执行程序的正常结束可执行程序的正常结束方法方法1(1(非标准方法非标准方法):):在在CODE ENDSCODE ENDS之前增加如下语句:之前增加如下语句:MOV AXMOV AX,4C00H4C00H INT 21H INT 21H方法方法2(2(标准方法标准方法):):MAIN PROC FARMAIN PROC FARPUSH DSPUSH DS ;保存原来的;保存原来的PSPPSP段地址段地址MOV AXMOV A
展开阅读全文