版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第44章 汇编语言程序基础 本章主要内容 4.1机器语言与汇编语言 4.2汇编语言的基本语法 4.3伪指令 4.4 宏指令 4.5 DOS功能调用和BIOS中断简介 4.6 汇编语言程序设计方法 4.7 宏汇编程序设计 4.8 汇编语言上机及调试过程4.1机器语言与汇编语言 程序设计语言按其级别可以划分为机器语言、汇编语言和高级语言三大类。 1机器语言 机器语言就是计算机指令系统。用机器语言编的程序可以被计算机直接执行。 2汇编语言 汇编语言用助记符来代替机器指令的操作码和操作数,如用ADD表示加法,SUB表示减法,MOV表示传送数据等。 4.2汇编语言的基本语法4.2.1语句格式 汇编语言的
2、源程序是由若干条语句构成的,每条语句可以由四项构成,格式如下。 标识符 操作码 操作数 ;注释 其中,标识符用来对程序中的变量、常量、段、过程等进行命名,它是组成语句的一个常用成分,它的命名应符合下列规定。 (1)标识符是一个字符串,第一个字符必须是字母、“?”、“”或“_”这四种字符中的一个。 (2)从第二个字符开始,可以是字母、数字、“?”、“”、“_”。 (3)一个标识符可以由131个字符组成。 4.2.2 语句类型与结构 1指令性语句的结构 标号:前缀 指令助记符 操作数;注释 说明: (1)方括号中的成分可以选用或默认。 (2)标号是后面紧跟“:”的一个标识符,标号代表该行指令在存储
3、器中的首地址,标号可作为转移指令和调用指令的一个操作数。 (3)前缀包括重复前缀、总线封锁前缀等。 (4)操作数可以是一个、两个或没有,由指令类型决定,若有两个操作数,前面为目的操作数,后面为源操作数,中间用逗号隔开。 (5)注释是以“;”开始的字符串,不影响程序的汇编与执行,仅用于增加源程序的可读性。 2指示性语句的结构 名字 伪指令助记符 操作数;注释 说明: (1)名字可以是符号常量名、变量名、过程名、段名等,名字后面不能有“:”。 (2)伪指令助记符共有四十多个,按功能不同分成八类,本章介绍常用的五类共二十多个。 (3)操作数可少到一个没有,多到两个以上,操作数之间须用逗号分隔。 3宏
4、指令语句的结构 宏名 宏操作助记符 操作数;注释 说明: (1)宏名即宏指令名,是一个标识符,宏名后面不能有“:”。 (2)宏操作助记符共有8个,分别是MACRO、ENDM、EXITM、LOCAL、REPT、IRPC、IRP、PURGE。 (3)其余同指示性语句。 4.2.3 汇编语言中的表达式 表达式由操作数和运算符组成,在汇编时一个表达式得到一个值。表达式分为数值表达式和地址表达式。 1表达式中的常量 常量是在汇编时已经确定的常数值,常量可以是数据和字符。常量表示一个固定的数值,它又分成多种形式。 (1)常数:指由10、16、2和8进制形式表达的数值。 (2)字符串:字符串常量是用单引号或
5、双引号括起来的单个字符或多个字符,其数值是每个字符对应的ASCII码值。 2表达式中的变量 常以变量名的形式出现在程序中,可以看作是存放数据的存储单元的符号地址,它用来定义存储器中的数据。变量具有三种属性。 (1)段属性(SEG):变量所在段的段地址。 (2)偏移地址属性(OFFSET):变量所在段的段内偏移地址。 (3)类型属性(TYPE):变量占用存储单元的字节数。 3表达式中的标号 标号是给指令性语句所在单元地址取的名字,它表明该指令在存储器中的位置,可作为转移类指令的操作数。它有以下三种属性。 (1)段属性:标号所在段的段地址。 (2)偏移地址属性:标号所在段的段内偏移地址。 (3)类
6、型(距离)属性:NEAR,近标号,表示该标号在段内使用;FAR,远标号,表示该标号在段间使用。4.2.4 汇编语言的运算符 1算术运算符 算术运算符包括(加)、(减)、*(乘)、/(除)、MOD(模除)、SHL(左移)、SHR(右移)。其中,除号只取商,模除只取余,SHL一次相当于乘2,SHR一次相当于除2。 2逻辑运算符 逻辑运算符包括AND(与)、OR(或)、XOR(异或)、NOT(非)四种。逻辑运算符只出现在语句的操作数部分,运算在汇编时完成;逻辑操作指令只出现在指令的操作码部分,运算在执行指令时完成。 3关系运算符 关系运算符包括EQ(等于)、NE(不等)、LT(小于)、GT(大于)、
7、LE(小于等于)、GE(大于等于)共六种。它们对两个运算对象进行比较操作,若满足条件,表示运算结果为真“TRUE”,输出结果为全“1”;若比较后不满足条件,则运算结果为假“FALSE”,输出结果为全“0”。 4分析运算符 分析运算符的操作对象必须是存储器操作数,即变量、标号或过程名。返回的结果是一个数值常量。 1)SEG运算符 取段地址运算符,该运算返回变量或标号所在段的段地址(字常量)。 2)OFFSET运算符 取段内偏移地址符,该运算返回变量或标号所在段的段内偏移地址。 3)TYPE运算符 取类型属性运算符,该运算返回变量或标号的类型值。若运算对象是标号,则返回标号的距离属性值,若运算对象
8、是变量,则返回变量类型所占字节数。 4)LENGTH运算符 取数组变量元素个数运算符,如果变量是用重复数据操作符DUP说明的,则返回DUP前面的数值(即重复次数);如果没有DUP说明,则返回值总是1。 5)SIZE运算符 取数组变量总字节数运算符,该运算符返回数组变量所占的总字节数,相当于LENGTH和TYPE两个运算符返回值的乘积。 5分离运算符 1)LOW运算符 取地址表达式或16位绝对值低8位。 2)HIGH运算符 取地址表达式或16位绝对值高8位。 3)SHORT运算符 当转移指令的目标地址与该指令之间的距离在128127字节范围内时,可用SHORT运算符进行说明,以保证汇编程序能为该
9、指令生成最短的机器码,从而提高运行效率。 6组合运算符 1)“:”运算符 用来临时给变量、标号或地址表达式指定一个段属性。 2)PTR运算符 赋予表达式指定的类型,新的类型只在所处的指令内有效。格式为 类型 PTR 表达式 3)THIS运算符 该运算符和“”(或EQU)伪指令连用,把它后面指定的类型属性或距离属性赋给当前的变量或标号。常用的格式为 变量或标号=THIS 属性 4)圆括号“( )”运算符 用来改变被括运算符的优先级别。 4.3伪指令4.3.1 符号定义伪指令 1EQU伪指令 格式:名字 EQU 表达式 功能:将数值或字符序列与一个指定的名字等价。 2“”伪指令 与EQU具有相同的
10、功 3LABEL伪指令 格式:变量或标号名 LABEL 类型 功能:为当前存储单元定义一个指定类型的变量名或标号。能,区别仅在于“”定义的符号允许重新定义。4.3.2 变量定义伪指令 常用的变量定义伪指令有DB、DW、DD、DQ、DT,分别用来定义字节、单字、双字、四字及十字节类型变量。基本应用格式如下。 变量名 DBDWDDDQDT 表达式 其中,变量名是可选的; 中的伪操作指令必须选用一种,表达式有以下几种。 1数值表达式 这种形式定义的变量具有表达式给定的数值初值。 例如: BETA DW 4*10H;BETA为字类型,初值为64 2ASCII字符串 字符串必须用单引号括起来。DB伪指令
11、为串中每一个字符分配一个字节单元,且自左到右按地址递增的顺序依次存放,字符个数不得超过255个。 例如: MSG DB STUDENT 3地址表达式 地址表达式的运算结果是一个地址,因此只能用DW或DD定义。如果用DW定义,则将原变量或标号的偏移地址定义为新变量;如果用DD定义,则将原变量或标号的偏移地址和段地址分别置入新变量的低位和高位字中。 4?表达式 表示所定义的变量未指定初值。 例如: BUF DW ?;定义一个字变量BUF,初值为一随机数 5nDUP表达式 用于定义重复变量,DUP是重复数据操作符,n表示重复次数,括号内的表达式表示要重复的内容。DUP可以嵌套使用,即圆括号中的表达式
12、又是一个带DUP的表达式。4.3.3 段定义伪指令 1SEGMENT和ENDS 1)语句格式 段名 SEGMENT 定位方式 组合方式 分类名 ;段内语句 段名 ENDS 其中,段名是为该段起的名字;定位方式、组合方式和分类名是可选的,选两个以上时,书写顺序必须与格式中的顺序一致。当某段作为堆栈段使用时,必须至少有组合方式STACK。 2)组合方式 组合方式指出如何链接不同模块中的同名段,把不同模块中的同名段按照指定的方式组合起来。既便于程序运行,又可以达到有效使用存储空间的目的。组合方式有六种。 (1)PUBLIC (2)STACK (3)COMMON (4)MEMORY (5)数值表达式
13、(6)不指定方式。 3)定位方式 定位方式通过汇编告知LINK程序如何将组合后的新段定位到存储器中。定位方式有四种。 (1)PARA方式 (2)BYTE方式 (3)WORD方式 (4)PAGE方式 4)分类名 指令对分类名相同的各模块中的所有段是如何处理的呢?LINK程序把各模块中分类名相同的所有段(段名未必相同)放在连续的存储区域内,但仍然是不同的段。分类名相同的各个段在链接时,先出现的在前,后出现的在后。分类名应用单引号括起来。 2ORG伪指令 格式:ORG 表达式 功能:该指令后生成的目标代码,从表达式提供的偏移地址开始存放。 3GROUP伪指令 格式:组名 GROUP 段名1,段名2,
14、 GROUP是群或组的意思,用来把模块中若干不同名的段集合成一个组,并赋予一个组名,使它们都装在同一个逻辑段中(64K)。组内各段名间的跳转都可以看作是段内跳转。组名和段名一样,它表示该组的段地址。 4ASSUME 格式:ASSUME段寄存器:段名 ,段寄存器:段名 功能:告诉汇编哪个段寄存器将为哪个段名寻址。 4.3.4 过程定义伪指令 子程序通常是具有某种特定功能的程序段,可供其他主程序多次调用。子程序通常以过程的形式编写。格式如下。 过程名 PROC 类型 RET 过程名 ENDP (1)过程名是为该过程取的名字。 (2)地址属性是指过程中第一个语句的地址。 (3)类型属性由格式中的类型
15、指明,可以有NEAR和FAR两种 (4)RET为过程返回指令,不能省略,否则过程将无法返回。 (5)过程既允许嵌套定义,也允许嵌套调用。 4.3.5 模块定义与通信伪指令 1NAME和END 格式: NAME 模块名 END 标号 2PUBLIC 格式:PUBLIC 符号表 功能:表示该模块中符号表中的符号常量、变量、标号、过程名等可以被其他模块 引用。 3EXTRN 格式:EXTRN 符号:类型, 功能:表示在其他模块中定义过并说明为PUBLIC的那些符号,在本模块中需要引用。 4INCLUDE 格式:INCLUDE 文件名 功能:把另一个源文件插入到当前源文件中一起汇编,直到该文件中语句汇
16、编完毕,汇编程序继续汇编INCLUDE语句之后的语句。 4.4 宏指令 1宏指令的使用 宏指令的使用包括宏定义、宏调用和宏扩展。 1)宏定义 格式:宏指令名 MACRO 形参,形参 ENDM 2)宏调用 格式:宏指令名 实参,实参 3)宏扩展 当汇编程序扫描到源程序中的宏调用时,就把对应宏定义的宏体指令序列插入到宏调用所在处,用实参替代形参,并在插入的每条指令前面加上一个“”号,这一过程就称为宏扩展。 2用于宏定义的其他伪指令1)LOCAL格式:LOCAL 符号表2)PURGE格式:PURGE 宏指令名表3)特殊的宏操作符 (1)%取表达式操作符。 (2)标识字符串或符号中的形参操作符。 (3
17、)!标识普通字符操作符。4.5 DOS功能调用和BIOS中断简介 1基本的输入与输出 1)AH01H,输入一个字符 2)AH02H,输出一个字符 3)AH05H,输出一个字符到打印机 4)AH09H,输出字符串 5)AH0AH,输入字符串 2文件管理 文件:文件是具有名字的一维连续信息的集合。DOS以文件的形式管理数字设备和磁盘数据。 文件名:在DOS文件系统中,文件名是一个以零结尾的字符串,该字符串可包含驱动器名、路径、文件名和扩展名,如:C:SAMPLEMY.ASM。 文件管理:将工作文件名和一个16位的数值相关联,对文件的操作不必使用文件名,而直接使用关联数值,这个数值称为文件称号。文件
18、管理从PC-DOS2.0版本开始引入。 3其他 1)AH00H,程序终止 功能:退出用户程序并返回操作系统。其功能与INT 20H指令相同。 2)AH4CH,进程终止 功能:结束当前执行的程序,并返回父进程DOS或DEBUG(加载并启动它运行的程序)。返回时,AL中保留返回的退出码。4.6 汇编语言程序设计方法4.6.1 设计步骤 1建立数学模型 2确定数据结构与算法 3绘制流程图及编制程序 4调试 4.6.2 顺序程序设计 1数字/字符的输入和输出 1)接收键盘输入的一个字符 功能号:01H 功能:等待接收键盘输入的一个字符,将字符的ASCII码送入AL中,同时在屏幕上显示该字符。 2)显示
19、一个字符 功能号:02H 功能:在当前光标位置显示DL中的字符,光标右移。 3)接收一个字符串 功能号:0AH 功能:从键盘中接收一字符串,存入DS:DX指示的缓冲区。 4)显示一个字符串 功能号:09H 功能:在当前光标处显示由DS:DX指示的,以字符 “$”作为结束标志的一个字符串。 2代码转换程序设计 (1)BCD码-ASCII码转换。因为数字09的ASCII码值等于数字本身加上30h,所以在转换时要将数字值加上30h。 (2)十六进制-ASCII码转换。09的ASCII码可以加上30h得到,AF的ASCII码,需要加7。 (3)BCD码-二进制转换。各位分离后,从高位开始反复乘10加次
20、位。 4.6.3 分支程序设计 计算机的一个重要特点在于它能“判断”情况。计算机指令系统中的比较指令、测试指令和条件转移指令等就反映了这种能力。 例如,程序设计中经常会遇到判断“相等”和“不相等”、“负”和“正”、“大于”和“小于”、“满足条件”和“不满足条件”等。这种判断使程序的流程不再是一条顺序执行的直线,而变为由两个或多个分支所组成的倒树型结构,其中每个分支只有在满足条件时才被执行。4.6.4 循环程序设计 1循环程序的构成 任何循环程序都可分为循环初始部分、循环体和循环结束部分。循环初始部分为进入循环做必要的准备工作。循环体是程序中重复执行的程序段,由两部分组成。 (1)循环工作部分
21、(2)循环参数修改及循环控制部分。 2循环的类型 循环体的结构依照问题的不同,一般可以分为两种类型:先判断后处理;先处理后判断。 3控制循环次数的方法 (1)用计数控制循环。 (2)用条件控制循环。 (3)多重循环程序设计。 4.6.5 子程序设计 1子程序的组成 (1)保护现场(一些将要在子程序运行时被破坏的寄存器的内容)。 (2)依入口参数从指定位置取要加工处理的信息。 (3)加工处理。 (4)依出口参数向指定位置送经加工处理后的结果信息。 (5)返回调用程序。 2子程序调用 子程序调用可分为段内调用和段间调用两种情况。段内调用是主程序和子程序处在同一代码段中,此时只需保存主程序中调用指令
22、的下一条指令的偏移地址,并将子程序的入口地址送入IP,从而转去执行子程序。子程序返回时再将保存的断点地址送入IP,即可继续执行主程序。段间调用则必须保存好断点的段地址和偏移地址,并将子程序入口的偏移地址和段地址分别送入IP和CS。返回时需将保存的偏移地址和段地址重新送回IP和CS。 4.7 宏汇编程序设计4.7.1 宏汇编 1宏定义 宏定义的一般格式为: 宏指令名 MACRO形式参数列表 宏体 ENDM 2宏调用 宏调用格式如下: 宏指令名 实际参数列表 宏调用中的实参应与宏定义中的形参一一对应,实参之间应用逗号隔开。 3宏体内标号的使用 其格式为 LOCAL 标号名,标号名 4宏定义中的参数
23、 宏定义中的参数可以是操作数也可以是操作码,为了使宏定义中的参数更加灵活,汇编程序提供了一些宏操作符。这里介绍一下宏定义的变元中使用%操作符的情况,它的格式是: %表达式4.7.2 重复汇编 1重复伪操作 重复伪操作的格式为 REPT 表达式 (重复块) ENDM 其中表达式的值用来确定重复块的重复次数,表达式中如包含外部或未定义的项则汇编指示出错。 2不定重复伪操作 1)IRP伪操作 格式为 IRP哑元, (重复块) ENDM 2)IRPC伪操作 格式为 IRPC哑元,字符串(或) (重复块) ENDM4.7.3 条件汇编 汇编程序能根据条件把一段源程序包括在汇编语言程序内或者把它排除在外,
24、这里就用到条件汇编这样的伪指令。 格式为 IF XX argument ;自变量满足给定条件汇编此块 ELSE ;自变量不满足给定条件汇编此块 ENDIF4.8 汇编语言上机及调试过程4.8.1 汇编过程 1源文件的建立和汇编 这个过程也称为源代码录入。 2汇编过程 汇编过程是把编写的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。 3链接为可执行文件 即链接为.EXE或.COM文件。在DOS提示符下输入:LINK filename并按Enter键。4.8.2 DEBUG调试 1DEBUG的调用 用于调试程序的命令格式: DEBUG FILENAME.? 其中,FILENAME是文件名,?是扩展名。例如,已编译好了一个文件,它的名称为djx.exe,要对它进行调试时就在DOS提示符下输入DEBUG djx.exe,并按Enter键执行,便可见到提示符,如无任何提示说明正确,则可进行调试。 2DEBUG常用命令 1)D命令 功能:显示指定内存单元的内容,一般用来查看DS数据段的内容。 格式:-d 地址;表示从地址指定的内存单元显示128个字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店技工培训
- 棋类社团比赛活动安排计划
- 班级荣誉感的培养途径计划
- 西南林业大学《文学概论》2021-2022学年第一学期期末试卷
- 西南交通大学《微机与接口技术》2021-2022学年第一学期期末试卷
- 西京学院《中国历代文学作品》2021-2022学年第一学期期末试卷
- 妊娠期糖尿病的管理
- 2024年01月11044合同法期末试题答案
- 西北大学《外国美术史》2021-2022学年第一学期期末试卷
- 西华大学《开源硬件与编程》2021-2022学年第一学期期末试卷
- 医用化学期末复习资料(试题与答案)
- 中国灾备行业发展技术白皮书
- 《高等数学》第三版全册电子教案完整版教学设计
- 苏州地图高清矢量可填充编辑PPT模板(精美)
- 海为工业物联网整体解决课件
- 受限空间作业施工组织方案
- 课堂观察记录表 (2)
- 2022年安徽中考语文试题(图片版无答案)
- (完整版)LM317的直流稳压电源课程设计
- 工程经济学课程设计
- 集中供热一次管网工程施工组织设计
评论
0/150
提交评论