资源预览内容
第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
第9页 / 共52页
第10页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 汇编语言的基本语法主要内容 汇编语言程序的结构 汇编语言语句类型和组成 汇编语言程序设计5.1 汇编语言的特点1、机器指令:计算机能识别的代码,机器指令是由二 进制数组成的。例如: PUSH AX机器指令为:010100002、汇编语言:汇编语言是一种符号语言,用助记符表 示操作码,用符号或符号地址表示操作数或操作数地 址,它与机器指令是一一对应的。3 、高级语言:面向过程(如C, FORTRAN)或对象(如 C+, Java)的语言,不依赖于机器,因而有很好的通用 性和可移植性汇编语言与高级语言的比较特 征汇编语言高级语言目标程序运行时间短长 程序运行时占用的存储空间小大 直接访问硬件的能力强弱程序可读性和可维护性差强 程序开发的复杂程序高低 程序的可移植性差强 对硬件环境和软件的兼容性差强采用汇编语言进行程序设计的优点:可充分利用机器的硬件功能和结构特点,加快程 序的执行速度,减少目标程序所占用的存储空间 。常用来编写实时控制程序、实时通信程序,有时 也用来编制某些系统软件程序。文件名.ASM 文件名.OBJ 文件名.EXE汇编语言 源程序汇编目标 程序连接执行/调试 程序编辑程序 EDIT.EXE汇编程序 MASM.EXE连接程序 LINK.EXE汇编语言程序的开发过程ML 文件名.ASM DATA SEGMENT ;数据段 NUM DW 0011101000000111BNOTES DB The result is : , $ DATA ENDSSTACK SEGMENT STACKSTA DB 50 DUP(?)TOP EQU LENGTH STA STACK ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATABEGIN:MOV AX, DATA MOV DS,AXMOV DX,OFFSET NOTES ;显示提示信息MOV AH,9HINT 21HMOV BX,NUM ;将数装入BXMOV CH,4 ;CH作循环计数器 ROTATE : DISPLAY: MOV CL, 4 ;CL中放移位位数 MOV DL, AL ;显示16进制数ROL BX,CL MOV AH,2 MOV AL,BL INT 21H AND AL,0FH ;AL中为一位16进制数 DEC CHADD AL,30H ;转换为ASCII码值 JNZ ROTATECMP AL,9 ;是09的数码? MOV AX,4C00H;返回DOSJL DISPLAY INT 21HADD AL,07H ;在AF之间 CODE ENDS ;代码段结束END BEGIN ;模块结束2、结构 DATA SEGMENTDATA ENDSSTACK SEGMENT STACKSTACK ENDSCODE SEGMENTCODE ENDSENDS 源程序由若干条语句组成 程序由最多4个段组成,数据段、堆栈段、代码段、附加段 每个段有一名字,并以符合SEGMENT表示段的开始,以END作为段的结束符号5.2 汇编语言程序结构和基本语法汇编语言的基本语法:词法和句法 一、词法 字符集、标识符、保留字、数的表示、运算符和表达式1、字符集 英文字符:A - Z,a - z; 数字字符:0 - 9 算术运算符号:+ - * / 关系运算符号: 分隔符:, :;( ) TAB 控制符:CR、LF、FF 其他字符:如 Memory: 45H,23H,01H,00H ? 表达式,不带引号的?表示可预置任何内容例: DA_B DB ? , ? ;要求分配两个字节单元DA_W DW ? , ? ;要求分配两个字单元 字符串表达式数据项可以写成字符串形式,但只能用DB、DW、DD定义,而且DW、DD语句定义的串只允许包含两个字符。例: S1 DB ABCDEFS2 DW AB, CD, EFS3 DD AB, CD这几个变量在存储器中存放情况如下:S1 41H S2 42H S3 42H42H 41H 41H 43H 44H 00H44H 43H 00H45H 46H 44H46H 45H 43H00H00H 注意:定义多于两个以上字符的字符串时,只能使 用DB 伪指令,不能使用DW和DD等伪指令。格式2:变量名 伪指令名 表达式 DUP(表达式)用于定义重复的数据或分配一数据块空间例:D_B1 DB 20H DUP(?) ;保留20H个字节D_B2 DB 10H DUP(ABCD) ;字符串ABCD;重复10H次D_W1 DW 10H DUP(4) ;字4重复10H次3、段定义语句 段开始语句SEGMENT和段结束语句ENDS 段定义格式:段名 SEGMENT 定位类型 组合类型 类别段名 ENDS 定位类型:用来规定段起始边界的要求,可以为以下四种,缺省 为 PARA)PAGE: 16位段地址的最低8位必须为0,即从一页的起点开始;PARA: 16位段地址的最低4位必须为0,即从一段的起点开始;WORD: 16位段地址的最低1位必须为0,即从偶地址开始;BYTE: 16位段地址可以为任意值,即段可以从任何字节开始。 组合类型 告诉连接程序本段与其他段的关系NONE 本段与其他段逻辑上不发生关系,每段有独立段基地址;PUBLIC 将本段与用PUBLIC说明的同名同类别的其他段连接成一 个段,所有这些段用同一个段基地址;COMMON 同名同类段相重叠,段的长度为其中最长段的长度STACK 表示本段是堆栈段,连接方式同PUBLICMEMORY 该段在连接时被放在所有段的最后AT 把本段装在表达式的值所指定的段基地址处 类别段分配语句ASSUMECPU对存储器的访问必须通过一个段寄存器来提供段基址 ,ASSUME用来建立段与段寄存器之间的联系。格式:ASSUME 段寄存器名:段名,段寄存器名:段名DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK CODE ENDS ENDDATA1 SEGMENTVAR1 DB 12H DATA1 ENDS DATA2 SEGMENTVAR2 DB 34H DATA2 ENDS CODE SEGMENTVAR3 DB 56HASSUME CS:CODE,DS:DATA1START:INC VAR1INC VAR2INC VAR3 CODE ENDSEND START例:4、过程定义语句在程序设计中,常将多次重复使用的具有一定功能 的程序段组成一个子程序,称为过程,可用CALL调用 ,RET返回。定义格式: 过程名 PROC NEAR/FAR过程名 ENDPNEAR过程只允许段内调用,FAR允许段间调用5.宏指令宏定义语句格式:宏指令名 MACRO 形式参数1,形式参数2 ENDM宏调调用: 宏指令名 实参数,实参数,SHIFT MACRO XMOV CL,XSAL AL,CLENDMSHIFT 6宏扩展: + MOV CL,6+ SAL AL,CL5.4 汇编语言程序的上机过程 汇编语言程序上机运行的过程有以下几个步骤: (1) 用编辑程序建立.ASM源文件; (2)用宏汇编程序MASM等汇编源文件,生成.OBJ目标码文 件; (3)用连接程序LINK对目标码文件等模块进行连接,生成 .EXE可执行文件; (4) 键入可执行文件名执行该文件,分析执行结果; (5) 用DEBUG等工具调试.ASM源程序,再汇编、连接、运 行,直到得出正确结果。 为此,除了DOS系统软件和编辑程序外,还需要备置如下 程序: 汇编程序 masm.exe或asm.exe或tasm.exe等 连接程序 link.exe或tlink.exe等 汇编调试程序 debug.com等 交叉引用程序 cref.exe符号索引文件处理程序等1、建立源文件可使用任何一种能建立ASCII文本文件的编辑程序来建立汇编源程序文件,扩展名为.ASM。在使用各种文字编辑程序时,被编辑的 源文件(.ASM)中不应有排版格式控制符。2、汇编 编辑生成的.ASM源程序文件,须经汇编程序进行汇编,生 成二进制代码的目标文件。 常见的汇编程序有行汇编和宏汇编两种类型。 行汇编常用DEBUG.EXE的A命令,生成的目标代码 可作为.COM文件存盘,也可在DEBUG环境下直接运行。行汇编简单直观,生成的目标程序所占用的内存空间最 小;但汇编按绝对地址进行,长度限制在64KB范围内, 目标程序没有与其它程序模块连接的信息,要由用户或安 装程序实现各个目标程序在内存中的地址分配,这样既可 能使各程序之间产生太大的空隙(造成浪费)、也可能造 成各程序的内存存储冲突。 宏汇编MASM对汇编语言源程序*.ASM进行汇编常用方 法。DEBUG的使用方法 1DEBUG的运行 2DEBUG的主要命令 D,显示内存单元内容; U,反汇编命令; R,显示与修改寄存器内容; E,修改内存单元内容; A,汇编命令; T、P,单步执行指令; G,连续执行指令; N,指定装入文件名或写入文件名; L,装入N指定的文件; W,将指定内容写入N指定的文件; Q,退出DEBUG程序,返回操作系统状态。5.3 ROM BIOS中断调用 和DOS系统功能调用5.3.1 ROM
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号