汇编语言-南京航空航天大学课程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言-南京航空航天大学课程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 南京航空航天 大学 课程 课件
- 资源描述:
-
1、第第4章章 汇编语言程序设计汇编语言程序设计n 4.1 程序设计语言概述程序设计语言概述n 4.2 汇编语言的程序结构与语句格式汇编语言的程序结构与语句格式n 4.3 汇编语言的伪指令汇编语言的伪指令n 4.4 汇编语言程序设计方法汇编语言程序设计方法 n 4.5 模块化程序设计技术模块化程序设计技术n 4.6 综合应用程序设计举例综合应用程序设计举例n 4.7 汇编语言与汇编语言与C/C+C/C+语言的混合编程语言的混合编程第第4章章 汇编语言程序设计汇编语言程序设计本章重点:本章重点:源程序基本结构 汇编语言的语法规则(基本语法及常用伪指令)汇编语言程序设计方法16位实模式程序设计。程序程
2、序:是一组为完成某种功能而按一定顺序(由算法确定)编排的指令序列指令序列。汇编语言汇编语言:具有执行速度快、易于实现对硬件控制等优点,是实时控制等应用软件经常使用的程序设计语言。第第4章章 汇编语言程序设计汇编语言程序设计 南京航空航天大学 电子信息工程学院 4.1 程序设计语言概述机器语言机器语言:当指令和数据都用二进制代码表示时,计算机 能够直接识别与执行,因而称之为机器语言。高级语言:高级语言:是完全独立于机器的通用语言,效率低。面向过程、面向对象,必须译成机器语言。汇编语言汇编语言:是将机器指令符号化了的编程语言。是将机器指令符号化了的编程语言。是一种采用助记符表示的、面向CPU指令系
3、统的 程序设计语言。1.3种语言机器语言程序(目标代码)高级语言源程序编译或解释编译或解释(可由编译程序完成)(可由编译程序完成)汇编语言源程序汇编汇编(可由汇编程序完成)可由汇编程序完成)第第4章章 汇编语言程序设计汇编语言程序设计 南京航空航天大学 电子信息工程学院能够利用硬件系统的特性能够利用硬件系统的特性(寄存器、标志、中断系统等)直接对位/字节/字/寄存器/存储单元/I/O端口进行处理。采用采用CPU指令系统提供的各种寻址方式编制程序指令系统提供的各种寻址方式编制程序 目标代码占用内存少,执行速度快,效率高,具有实时性。用汇编语言编写程序的优点:优点:常用于编写系统软件、实时通信与控
4、制程序、常用于编写系统软件、实时通信与控制程序、I/O接口驱动接口驱动 等。等。缺点:缺点:依赖于机器硬件,通用性和移植性较差。依赖于机器硬件,通用性和移植性较差。2.汇编程序(Assembler)(1)汇编程序的作用 将源程序翻译成机器语言程序;按用户要求自动分配存储区域(如程序区、数据区、堆栈区等);自动将各种进制 2#数;将字符 ASCII码;计算表达式的值;自动对源程序进行检查,指出语法错误 (如,非法格式、未定义的助记符和标号、漏掉操作数等)南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计汇编程序提供汇编语言源程序的所有语法规则汇编程序提供汇编语言源程序
5、的所有语法规则,常用的有:ASM 基本汇编,占内存少;MASM 宏汇编,除ASM功能外,还支持:宏操作、条件汇编、结构、记录等高级宏汇编语言功能。有各种版本,并不断在升级中;TASM(Turbo Assembler)Borland公司的汇编编译器,性能同MASM。OPTASM(Optimizing Assembler)一种优化的MASM(2)汇编程序分类3.汇编语言程序的上机与处理过程Microsoft公司公司 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计上机环境上机环境硬件硬件系统软件系统软件 应用软件应用软件操作系统:操作系统:DOS系统编辑器:编辑器:E
6、DIT.exe编译程序:编译程序:MASM.exe连接程序:连接程序:LINK.exe调试程序:调试程序:DEBUG.exe用户开发的程序:用户开发的程序:ABC.exe等CPU、存储器、存储器(ROM、RAM)、I/O接口、输入、输出设备接口、输入、输出设备第第4章章 汇编语言程序设计汇编语言程序设计编辑源程序编辑源程序 EDIT ABC.ASM汇编源程序汇编源程序 MASM ABC.ASM形成目标程序形成目标程序 ABC.OBJ连接目标程序连接目标程序 LINK ABC.OBJ有连接错误信息有连接错误信息?形成可执行程序形成可执行程序 ABC.EXE装入可执行程序到内存装入可执行程序到内存
7、,并执行并执行D:subABC下一程序下一程序用用DEBUG 调试可执行程序调试可执行程序D:sub DEBUG ABC.EXE找到原因找到原因YNYNNYN有汇编错误信息有汇编错误信息?Y运行结果正确运行结果正确?用用DEBUG调试程序查错调试程序查错?汇编语言上机过程汇编语言上机过程D:EDIT ABC.ASMD:MASM ABC 有语法错,回EDIT下修改程序D:LINK ABC 有错,回EDIT下修改程序D:ABC 运行结果错,回EDIT下改程序 或在DEBUG下调试,找原因。D:DEBUG ABC.exe第第4章章 汇编语言程序设计汇编语言程序设计语法语法:语句和程序结构必须遵循的规
8、则语句和程序结构必须遵循的规则4.2 汇编语言的程序结构与语句格式 4.2.1 汇编语言源程序的框架结构源程序应按编译器源程序应按编译器(如,如,MASM汇编程序汇编程序)能够理解的语法编写能够理解的语法编写每段由伪指令SEGMENT开始,至ENDS结束(完整段定义)。代码段:程序的主体(必不可少的段必不可少的段)。堆栈段:在内存建立堆栈区,以存放中断或子程序调用时 的断点地址、各模块间传递的参数等。数据段和附加数据段:在内存中建立适当容量的工作区,以存放程序需要的常数或变量等。(1)源程序由若干个逻辑段组成程序中段的顺序:数据段、堆栈段定义在前,代码段在后。程序中段的顺序:数据段、堆栈段定义
9、在前,代码段在后。(变量应先定义;汇编过程遇到变量时需要知道变量的属性)源程序的结构特点:源程序的结构特点:按逻辑段组织源程序。包括代码段、堆栈段、数据段等。第第4章章 汇编语言程序设计汇编语言程序设计程序结构程序结构(P133);-段名1SEGMENT;一个段的开始语句1语句2 段名1ENDS;一个段的结束;-段名2SEGMENT;另一个段的开始段名2ENDS;另一个段的结束;-;其它段;-ENDSTART;源代码结束源程序以源程序以END结束,它通知汇编程序停止汇编。结束,它通知汇编程序停止汇编。START标号为程序运行时的起始地址。标号为程序运行时的起始地址。第第4章章 汇编语言程序设计
10、汇编语言程序设计程序中段的使用:程序中段的使用:u 8086/8088/80286允许同时使用4种类型的段:代码段代码段 CS、堆栈段、堆栈段 SS、数据段、数据段 DS 和附加数据段和附加数据段 ES u 80386/80486和Pentium系列允许同时使用6种段:以上以上4个段个段 FS和和GS两个附加数据段两个附加数据段 一个源程序中每种类型的段可不止使用一个,如:一个源程序中每种类型的段可不止使用一个,如:n个数据段。个数据段。(2)ASSUME伪指令 在代码段起始处用ASSUME伪指令说明说明各个段Reg与逻辑段 的关系,并在程序起始处设置段设置段Reg的初值的初值(代码段CS除外
11、)。(3)每段由若干语句行组成 每行只有一条语句且不能超过128个字符,允许有后续行。u 在8086/8088和实地址模式实地址模式下,每段的最大长度均为64KB;u 在保护模式保护模式下,80286允许每个段的最大长度为16MB,80386Pentium系列CPU允许4GB。END通知汇编程序停止汇编通知汇编程序停止汇编,START标号为程序运行时的起始地址。标号为程序运行时的起始地址。第第4章章 汇编语言程序设计汇编语言程序设计终止当前程序使其正确返回到终止当前程序使其正确返回到DOS状态的常用方法有:状态的常用方法有:u 将源程序中的主程序定义为FAR,其最后一条指令为RET;u 在主程
12、序的开始处使用3条指令:PUSH DS;保存程序段前缀程序段前缀PSP的段地址MOV AX,0 ;保存PSP的0偏移地址PUSH AX;注注:所保存地址保存地址中内容是INT 20H(4)每条语句由4个字段构成。各字段间用空格分开。(5)源程序中应设有返回设有返回DOS的指令语句,的指令语句,使程序执行完后能够 返回DOS系统的命令接受状态。标准序法 使用DOS的4CH号功能调用u 不定义主程序为FAR过程并去掉上面3条指令;u 在代码段结束(CODE ENDS)之前增加两条语句:MOV AH,4CH;功能号4CHAHINT21H;软中断调用MASM从从5.0版开始支持简化段定义,它通过伪指令
13、版开始支持简化段定义,它通过伪指令EXIT返回返回DOS。当程序执行当程序执行到到RET,这两这两个地址会弹个地址会弹出出送送IP、CS第第4章章 汇编语言程序设计汇编语言程序设计u 源程序与源程序与PC DOS的接口的接口 汇编语言源程序(.ASM)经过汇编转变为目标程序(.OBJ),当用链接程序对其进行链接和定位时,操作系统为用户程序:建立1个256字节的程序段前缀区(PSP)INT 20HPSP起始0000H定位用户程序PSP用于存放用户程序信息,包括:在在PSP的开始处的开始处(偏移地址偏移地址0000H)安排了一条安排了一条INT 20H 软中断指令软中断指令 INT 20H功能:系
14、统返回到DOS管理状态据此特征,用户编写程序时必须:在程序执行完毕后,能够转到在程序执行完毕后,能够转到PSP起始处起始处执行执行INT 20H指令。指令。定位用户程序设置DS和ES的值,使之指向PSP的起始(DS/ES PSP的段地址的段地址)以用户程序第1条指令的地址设置CS、IP;以堆栈段地址设置SS、SP。运行用户程序 表明:表明:DS/ES在用户程序中应重新设置在用户程序中应重新设置第第4章章 汇编语言程序设计汇编语言程序设计4.2.2 汇编语言的语句1.语句的种类与格式(1)语句的种类语句:语句:汇编语言源程序的基本组成单位,规定一个基本操作。源程序源程序:语句序列,完成某个特定的
15、操作任务。指令语句 可执行语句,对应可执行语句,对应CPU指令系统规定的一条指令指令系统规定的一条指令。三种基本语句:三种基本语句:指令语句、伪指令语句和宏指令语句 汇编时,汇编程序为之产生一一对应的机器目标代码。例:MOV DS,AX;双字节指令,机器码为双字节指令,机器码为8EH、D8H 伪指令语句 由伪指令构成的说明语句由伪指令构成的说明语句(不不可执行可执行),可在任何段内。,可在任何段内。汇编时,指示汇编程序如何汇编源程序,如分配存储单元、将程序分段等,本身不产生目标代码,本身不产生目标代码,CPU不执行。不执行。第第4章章 汇编语言程序设计汇编语言程序设计例:SEGMENT/END
16、S ;将程序分段信息提供给汇编程序,以不同 ;的名字来说明是数据段、代码段、堆栈段例:MESSAGE DB THIS IS A SAMPLE PROGRAM.;定义变量MESSAGE在数据段DATA中的存放形式 ;汇编时,汇编程序将MESSAGE定义为一个字节类 ;型数据区的首地址,并按字节存储字符串。宏指令语句 是是以某个以某个宏宏名字定义的一段指令序列名字定义的一段指令序列汇编时,程序中有宏指令语句的地方被展开成相应的指令序列。宏指令语句宏指令语句是一般性指令语句的扩展。是一般性指令语句的扩展。例:SHIFTMACRO;定义宏指令语句SHIFT MOV CL,4 SALAL,CL ENDM
17、 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 标号和名字 为指令单元和伪指令所起的符号名称,是自定义的标识符。为指令单元和伪指令所起的符号名称,是自定义的标识符。u 命名必须符合汇编语言对命名必须符合汇编语言对标识符标识符的规定:的规定:以字母开头,由字母(不区分大小写)、数字(09)及部分特殊 字符(?$和下划线_等)组成的字符串,长度不超过31。不能是有特定意义的保留字,如寄存器名AL和助记符等。u 标号标号 后必须有冒号,代表指令所在存储单元的符号地址。在程序中作为JMP、LOOP等指令的转移目标。u 名字名字 用于定义常量、变量、过程、段名等,指示所
18、定义变量、过程以及段的起始地址。(2)语句的格式指令语句的一般格式:标号:前缀 指令助记符 操作数;注释 伪指令语句的格式:名字伪指令定义符 操作数;注释 表示可选表示可选 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 助记符、定义符 规定指令或伪指令的操作功能,规定指令或伪指令的操作功能,语句中唯一不可缺少的部分语句中唯一不可缺少的部分u 指令助记符,汇编程序将其翻译成机器代码。MOV AX,100H ;B8 00 01u 伪指令定义符,汇编程序根据其要求的功能进行处理。data SEGMENT ;data与某个段地址对应 string DB Tsinghu
19、a ;定义string为字节存储区的起始地址u 前缀仅可出现在指令助记符前前缀仅可出现在指令助记符前(如,REP及段超越前缀等)u 指令语句中的指令语句中的操作数操作数提供操作对象、存放位置、访问形式。操作数可以是1个、2个或0个,2个时用逗号,分开。(INC BX;MOV AX,DATA;RET)u 伪指令语句中操作数伪指令语句中操作数的格式和含义随伪操作指令各有不同。操作数 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 注释u 汇编程序对“;”之后的内容不做处理。u 注释对汇编不起任何作用,注释对汇编不起任何作用,不对应于任何机器码,仅增强 源程序的可读性
20、。u 操作数的表现形式有4种 常量操作数:如,34 等。寄存器操作数:如,AX 等。存储器操作数:如,0100H 等。表达式操作数:如,BX+2、OFFSET NUM1 等。以以“;”开始,对程序的功能加以说明。开始,对程序的功能加以说明。第第4章章 汇编语言程序设计汇编语言程序设计2.语句中的操作数(4种)(1)常量操作数 汇编时值已确定且程序运行期间不变化汇编时值已确定且程序运行期间不变化(立即数立即数/端口地址端口地址)整型数值常量 用相应的后缀来定义:2#(B)、10#(D)、8#(Q)、16#(H)16#:必须以数字开头以数字开头来区别H结尾的字符串(AH,abcdH)即,最高位为字
21、母AF时,必须加前缀 0。字符串常量 用单引号括起来的一个或多个字符,值为每个字符的ASCII码值。例:2=32H,12=3132H,A=41H,AB=4142H MOV AL,G ;AL G的ASCII码值符号常量 在程序中用标识符形式表示的常量,以提高程序的通用性通用性。(2)寄存器操作数 操作数是寄存器名。操作数是寄存器名。如:AX、SI等,MOV AL,05。(程序中程序中,字符串常量与整型数值常量可交替使用字符串常量与整型数值常量可交替使用)第第4章章 汇编语言程序设计汇编语言程序设计(3)存贮器操作数 地址型操作数,地址型操作数,有标号与变量两种。有标号与变量两种。标号和变量都与存
22、储器地址相关联,应具有三种属性具有三种属性:段属性段属性(SEG):标号和变量对应存储单元的段地址,是段基 地址的高16位。偏移量属性偏移量属性(OFFSET):标号和变量对应存储单元的偏移地址。类型属性类型属性(TYPE):对标号对标号 指标号与使用它的指令之间的距离远近,有NEAR (近,段内转移或调用标号)和FAR(远,段间)。对变量对变量 指变量占用存取单元的字节数,有BYTE(字节)、WORD(字)、DWORD(双字)、4字、10字节5种。变量:在数据段或堆栈段内在数据段或堆栈段内 是以存储器寻址方式访问的操作数是以存储器寻址方式访问的操作数。在程序中通过变量名变量名(变量存储单元的
23、符号地址符号地址)来引用。标号:在代码段内在代码段内 是指令所存放单元的符号地址是指令所存放单元的符号地址。南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计(4)表达式操作数 由各种由各种操作数、运算符操作数、运算符和和操作符操作符组成组成,在汇编时计算在汇编时计算。(不是在程序执行过程中)。汇编程序先对表达式进行计算,再将得到的值汇编到指令中。汇编程序先对表达式进行计算,再将得到的值汇编到指令中。数值表达式和地址表达式数值表达式数值表达式(汇编时产生一个数值):由常量及算术逻辑运算符或关系运算符等连接而成。地址表达式地址表达式(值表示存储器地址,有上述三种属性)
24、:由常量、变量、标号、寄存器及一些运算符组成。例:MOV AX,124 ;MOV AX,8 ;数值表达式数值表达式 LEA BX,string+4 ;地址表达式地址表达式 MOV BX ES:SI+4*3 ;地址表达式地址表达式 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 运算符和操作符 MASM宏汇编中有三类运算符三类运算符:算术、逻辑、关系运算符算术、逻辑、关系运算符 两类操作符两类操作符:分析、合成操作符分析、合成操作符 运算符:运算符:实现对操作数的相关运算。操作符:操作符:完成对操作数属性的定义、调用和修改。主要有:主要有:u 算术运算符(+、/、
25、MOD)u 逻辑运算符(AND、OR、NOT、XOR)u 关系运算符(EQ、NE、GT、GE、LT、LE)真:FFFFH 或 假:0u 分析操作符(SEG、OFFSET、TYPE、SIZE、LENGTH、HIGH、LOW)u 合成操作符(PTR、DS:、THIS、SHORT)南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计u 算术运算符(+、/、MOD(取余数取余数)MOV AX,6 8 ;MOV AX,48数值表达式中可使用所有算术运算符算术运算符不影响标志位 例:完成 80H+90H 可以可以 MOV AL,80H+90H ;使用数值表达式 ;AL=10H、C
展开阅读全文