已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 汇编语言程序设计,本章主要教学内容 l 汇编语言和汇编程序的基本概念 l 汇编源程序书写规则、语句格式及程序分段 l 伪指令语句的格式、功能及应用 l 汇编语言源程序的建立、汇编、连接、调试及运行 。,第4章 汇编语言程序设计,4.1 汇编语言和汇编程序的基本概念,4.2 汇编语言源程序书写格式,4.3 8086汇编语言中标识符、表达式和运算符,4.5 汇编语言程序上机过程,4.4 伪指令语句,4.1 汇编语言和汇编程序的基本概念,4.1.1 汇编语言 面向CPU指令系统的程序设计语言 采用助记符表示操作码和操作数 用符号地址表示操作数地址 用汇编语言编写程序占用内存空间少,执行速度快,将汇编语言源程序翻译成目标程序的过程称为汇编,所用的软件称为汇编程序。 宏汇编程序MASM 汇编产生目标程序文件和源程序列表文件: 目标程序文件经连接定位后由计算机执行 源程序列表文件将列出源程序、目标程序的机器语言代码及符号表,4.1.2 汇编程序,语句类型 8086宏汇编MASM使用的语句分成3种类型: 指令语句:能够产生目标代码,CPU可执行 伪指令语句:为汇编程序和连接程序提供的管理性语句,不产生目标代码 宏指令语句:可包括多条指令或伪指令,4.2 汇编语言语句的格式,一般情况下,汇编语言的语句可以由14部分组成: 名字 操作码项 操作数 ;注释 名字(标号)项是一个符号。 操作码项是一个操作码的助记符,它可以是指令、伪操作或宏指令。 操作数项由一个或多个表达式组成,它提供为执行所要求的操作而需要的信息。 注释项用来说明程序或语句的功能,分号(;)为识别注释项的开始,也可以从一行的第一个字符开始,此时整行都是注释,常用来说明下面一段程序的功能。 其中带方括号的部分表示任选项,即可以选用,也可以不用。 下机分别说明每一项的作用及表示方法。,4.2.1 名字项,4.2.1 名字项 名字项可以是语句标号或标量。标号是可执行指令语句的符号地址,在代码段中定义,用作转移指令或调用指令的操作数,表示转移地址;变量通常是指存放数据的存储器单元符号地址,它在除段码段以外的其它段中定义,可以用作指令的操作数。名字和变量统称为标识符。,1组成名字的字符及规则,它是由字母打头的字符串,可由下列字符组成: 字母 AZ,az。 数字 09。 专用字符 ?、。 除数字09外,其他字符都可以放在名字的第一个位置。字符“”只能出现在名字的第一个位置,其他位置不允许出现。名字最长由31个字符组成。汇编程序对31个以后的字符不予理会,所以,当两个名字的前31个字符完全相同而从第32个字符开始有不同字符时,汇编程序将它们视为同一名字。,2标号和变量的区别,标号是某条指令所存放单元的符号地址,而变量是某操作数据所存放单元的符号地址。在汇编语言程序中,指令语句中的名字一般采用标号,这个标号可以是任选的,即可以不写。标号出现在代码段,后面跟着冒号“:”。,3 变量和标号的属性,标号和名字一经定义便具有两类三种属性: 段值 标号和名字对应存储单元的段地址 偏移值 标号和名字对应存储单元的偏移地址 类型 标号、子程序名的类型可以是NEAR(近)和FAR(远),分别表示段内或段间 变量名的类型可以是BYTE(字节)、WORD(字)和DWORD(双字)等,4.2.3 操作数项,操作数项是操作符的操作对象。 操作符在完成相应的操作时要求有一系列的操作数。当有两个或两个以上的操作数时,各操作数之间用逗号隔开。对于指令语句,操作数项一般给出操作数地址,它们可能一个或多个,或一个也没有。对于伪指令和宏指令语句,操作数项则给出所要求的参数。 操作数一般有常数、寄存器、标号、变量和表达式等几种形式。,1常数,常数是操作数位置出现的数值数据或字符型数据,它的值在汇编时已完全确定,程序运行过程中,不会发生变化。 在8086宏汇编中,允许有以下几种常数: 二进制常数:是一串0和1数字的组合,以字母B结尾。 八进制常数:由数字07组成,必须以字母O结尾。 十进制常数:这是最常用的一种常数,后跟字母D或不跟任何字母。 十六进制常数:由数字09和字母AF组成,这类数据必须以字母H结尾。 字符串常数:用单引号括起来的字符以及字符串,其各个字符的ASCII码值构成字符串常数。字符串常数可以和整数常数等价使用,但这些字符串常数的长度必须为一个字节或一个字,以便与目标操作数的长度相匹配。 在指令中,常数通常被称为立即数,它只能用作源操作数,不能作为目标操作数。它的允许取值范围由指令中的目标操作数的形式自动确定为8位或16位。,2 表达式和运算符,指由运算符连接的各种常数构成的表达式 汇编过程中计算表达式得数值 程序运行之前,已算出结果 增强程序可读性,2、表达式和运算符,(1)算术运算符 + - * / MOD (2)逻辑运算符 AND OR XOR NOT (3)移位运算符 SHL SHR (4)关系运算符 EQ NE GT LT GE LE (5)分析运算符 HIGH LOW,(1)算术运算符,实现加、减、乘、除、取余的算术运算 MOV AX,3*4+5 ;等价于 MOV AX,17 其中MOD也称为取模,它产生除法之后的余数,如19 MOD 7 = 5 加+和减-运算符还可以用于地址表达式 除加、减外,其他运算符的参数必须是整数,(2) 逻辑运算符,实现按位相与、相或、异或、求反的逻辑运算 OR AL,03H AND 45H ;等价于 OR AL,01H,(3) 移位运算符,实现对数值的左移、右移的逻辑操作;移入低位或高位的是0 格式为: 数值表达式 SHL/SHR 移位次数 MOV AL,0101B SHL (2*2) ;等价于 MOV AL,01010000B,(4) 关系运算符,用于比较和测试符号数值 MASM用0FFFFH(补码 -1)表示条件为真 MASM用0000H表示条件为假 MOV BX, PORT GE 5 ; PORT5时,汇编结果为MOV BX,0FFFFH ;否则,汇编结果为MOV BX,0,(5) 分析运算符,对存储器地址进行运算的 5个:SEG(求段基值)、OFFSET(求偏移量)、TYPE(求变量类型)、LENGTH(求变量长度)和SIZE(求字节数) 例如: MOV BX,SEG ARR MOV ES,SEG DATA1,ORG $+10 ARRAY DB 45,45H MOV BX,OFFSET ARRAY ;等价于 LEA BX,ARRAY MOV CL,ARRAY+4 ;等效于 MOV CL,ARRAY4 MOV AX,ES:2000H,分析运算符实例,属性修改运算符,用来建立和临时改变变量或标号的类型 6个:PTR、段属性前缀、SHORT、THIS 例如: MOV BX,OFFSET ARR ;等同于 LEA BX,ARR MOV AX,ES:DATA1 MOV CX,WORD PTR BX MOV DX,HIGH DATA1,(6) 综合运算符,运算符的优先级,() LENGTH SIZE PTR OFFSET SEG TPYE THIS : HIGH LOW * / MOD SHL SHR + - EQ NE GT LT GE LE NOT AND OR XOR SHORT,建议采用圆括号“( )”显式表达,它可以极大地提高程序的可阅读性,5.3 伪指令语句,给汇编程序(软件)的命令, 在汇编过程中处理 5.3.1 数据定义伪指令 用来定义变量的类型 分配存储单元,可赋值或不赋值 一般格式: 变量名 伪指令 操作数 ,操作数 ;注释,2. 常用的数据定义伪指令 定义字节变量伪指令DB 定义字变量伪指令DW 定义双字变量伪指令DD 定义四字变量伪指令DQ 定义十字节变量伪指令DT,变量定义伪指令最常使用,字节单元定义实例,DATA SEGMENT ;数据段 X DB A,-5 DB 2 DUP(100),? Y DB ABC DATA ENDS,应用,指定复制次数,用复制运算符DUP复制操作数,字单元定义实例,DATA SEGMENT ;数据段 COUNT DW 8000H,?,AB MAXINT EQU 64H NUMBER DW MAXINT ARRAY DW MAXINT DUP(0) DATA ENDS,应用,4.3.2 符号定义伪指令 给符号重新命名或定义新的类型属性 常用的有EQU、LABLE 5.4.3 段定义伪指令 定义逻辑段时指定段的名称和范围,并指明段的定位类型、组合类型及类别 常用SEGMENT、ENDS和ASSUME等,符号定义 DCHAR EQU 2 ENTER = 13 CALLDOS EQU 符号应用(左边程序段等价右侧的符号形式) MOV AH,DCHAR ; MOV AH,2 MOV DL, ENTER ; MOV DL,13 CALLDOS ; INT 21H,符号常数实例,4.3.4 过程定义伪指令 将一些重复出现的语句组定义为子程序,又称为过程,可以采用CALL指令来调用。 定义格式: 过程名 PROC NEAR/FAR (语句系列) RET (语句系列) 过程名 ENDP 2. 调用过程的格式:CALL 过程名,4.3.5 结构定义伪指令 结构是相互关联的一组数据的组合形式。 用伪指令STRUC和ENDS把相关数据定义语句组合起来,便构成一个完整的结构。 使用格式: 结构名 STRUC (数据定义语句序列) 结构名 ENDS,4.3.6 模块定义与连接伪指令 编写规模较大的汇编语言源程序时,可将整个程序划分为几个独立的源程序,称之为模块。 将各模块分别进行汇编,生成各自的目标程序,最后连接成为一个完整的可执行程序。 各模块之间可以相互进行符号访问。 为了进行模块间连接和相互访问,通常使用伪指令NAME、END、PUBLIC、EXTRN,4.3.7 程序计数器$和ORG伪指令,1程序计数器$ 用在表达式里,为下一个能分配的存储单元的偏移地址 2ORG伪指令 起始位置设定伪指令 用来指出源程序或数据块的起点 可改变位置计数器的值,4.4 汇编语言程序的段结构,汇编语言源程序的分段结构 若干个任意排序的逻辑段 每个逻辑段以SEGMENT语句开始,以ENDS语句结束 整个源程序以END语句结束,4.5 汇编语言程序上机过程,4.5.1 汇编语言的工作环境及上机步骤 1硬件环境 一般IBM PC/XT及其兼容机基本配置 2软件环境 1)DOS操作系统 2)编辑程序 3)宏汇编程序MASM.EXE 4)连接程序LINK.EXE 5)调试程序DEBUG.COM,3运行汇编语言程序的步骤,1)编辑汇编语言源程序,扩展名为.ASM; 2)用MASM.EXE汇编成.OBJ目标文件; 3)有语法错,用编辑软件重新调入修改。无错用LINK.EXE把.OBJ文件转化成.EXE可执行文件; 4)在DOS命令状态下直接键入可执行文件文件名执行该文件。,编辑,文本编辑器,如 EDIT.COM,源程序:文件名.asm,汇编,汇编程序,如 ML.EXE,目标模块:文件名.obj,连接,连接程序,如 LINK.EXE,可执行文件:文件名.exe,调试,调试程序,如 DEBUG.EXE,错误,汇编语言程序的开发过程,本节教学要求,熟悉伪指令DB、DW、DD、SEGMENT/ENDS、ASSUME、END、$、ORG 、EQU和= 、PROC/ENDP 了解伪指令DQ / DT、S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮安市人民医院年度专业理论综合考试中级难度
- 赣州市人民医院超声报告质量考核
- 新余市中医院医务管理岗位准入综合知识笔试试题
- 九江市中医院人力资源管理创新项目成果与效益评估
- 抚州市人民医院医学影像学CTMRIPET-CT在放疗中应用试题
- 金华市中医院IMRT计划验证Gamma分析实操考核标准
- 南京市人民医院肩周炎诊疗技能考核
- 福州市中医院急诊手术麻醉快速反应考核
- 绥化市中医院皮肤肿瘤早期诊断考核
- 南京市中医院锅炉运行参数监控与安全检查试题
- 2025年山东省招聘社区工作者考前冲刺卷(附答案)
- 消毒和隔离技术知识培训课件
- 2024北森图形推理题
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 土壤微量元素含量分级与评价
- GB/T 4688-2020纸、纸板和纸浆纤维组成的分析
- GB/T 19638.1-2014固定型阀控式铅酸蓄电池第1部分:技术条件
- 隧道工程施工技术及质量控制要点培训
- 社区营养学-第二章营养调查与监测课件
- 食品加工操作流程图
- 文书档案的收集与整理
评论
0/150
提交评论