微机原理及接口2013年度第12次课.ppt_第1页
微机原理及接口2013年度第12次课.ppt_第2页
微机原理及接口2013年度第12次课.ppt_第3页
微机原理及接口2013年度第12次课.ppt_第4页
微机原理及接口2013年度第12次课.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及接口,第3章 汇编语言程序设计,3.1 汇编语言程序格式,3.4 汇编语言程序设计,3.3 DOS功能调用,3.2 伪指令,教学重点,本章介绍程序结构、伪指令、汇编语言程序设计 重点:汇编语言程序的基本结构; 伪指令及其使用方法; 基本的汇编语言程序设计方法。 难点:汇编语言程序的设计,3.1 汇编语言程序格式,汇编语言,汇编程序,汇编语言源程序的格式,汇编语言语句的分类,汇编语言的语句格式,汇编语言 用助记符和符号地址指令编写的程序就是汇编语言或汇编语言源程序。 汇编语言是面向机器的语言。 特点: 1. 汇编语言的指令与机器指令一一对应,用助记符表示操作码,便于记忆和分析程序。 2. 可充分利用机器的硬件功能和结构特点,有效的加快程序的执行速度,实时性能好。,3.1 汇编语言程序格式,汇编程序 用于将汇编语言编写的源程序自动翻译成机器能执行的二进制代码程序(即目标程序)的软件叫汇编程序 作用: 1. 将源程序的助记符翻译成用二进制代码组成的目标程序; 检查语法错误; 展开宏指令。,3.1 汇编语言程序格式,汇编语言源程序的格式 1. 分段编写(代码段、数据段、堆栈段、附加段); 2. 每个段都要有段名; 3. 编写程序,段无先后; 4. 段分配由汇编程序来完成,由操作系统来划分 5. 数据的分配由汇编程序来完成 6. 汇编语言源程序结束用END语句 7. 每一个段的起始于结束格式为: 段名 SEGMENT 段名 ENDS 8. 每个源程序至少要有代码段。,3.1 汇编语言程序格式,汇编语言语句分类,语句类型,指令语句 作用:产生相应的机器代码,指定CPU做什么操作。,伪指令语句(指示性语句 ) 作用:不产生相应的机器代码,仅控制汇编过程。可 以完成数据的定义,分配存储器,指示程序开始和结束等功能。,宏指令语句 作用:由编程者按照一定的规则来定义的一种较“宏大”的指令,包括多条指令或伪指令 。,3.1 汇编语言程序格式,汇编语言的语句格式,3.1 汇编语言程序格式,名字 操作码 操作数 ;注释,说明: 综括号括起来的项可有可无; 项与项之间用空格键隔开; 操作数与操作数之间用逗号分隔。,名字:某些数据或存储器地址编的临时符号名字。 名字由131个字符组成。可以是AZ,az,09,?、_等。但第一个字符必须是字母。 命名规则: (1) 数字不能作为名字的第一个符号。 (2) 单独的问号(?)不能作为名字。 (3) 最大有效长度为31位。 (4) 汇编语言中有特定含义的保留字(如操作码、寄存器名等),不能作为名字使用。 (5)见名知义。如用BUFFER表示缓冲区、SUM表示累加和等。,3.1 汇编语言程序格式,汇编语言的语句格式名字,3.1 汇编语言程序格式,汇编语言的语句格式名字,段名:逻辑段的名字,名字,变量名:存放某一数据的存储单元地址,标号名:存放某一指令的存储单元地址,标号后面紧跟“:”号,过程名:子程序的名字,常数名:代表某一确定的常数,标号的三种属性,段属性,偏移属性,类型属性,定义该指令放在哪个逻辑段。,表示该指令放在逻辑段哪个偏移地址中。,指出该标号是在本段内引用还是在其他段中引用。段内引用属性为NEAR;段间引用属性为FAR。,3.1 汇编语言程序格式,汇编语言的语句格式名字标号,标号:某一指令所存放单元的符号地址。,操作数: 用来指定参与操作的数据。 多于一个,之间用逗号分开。 可以是常数或表达式。,操作码与操作数,例:MOV AX , BX,操作码: 指明操作的性质和功能,指令中的助记符都是操作码,无操作数: 一个操作数: 两个操作数: 伪指令、宏指令可有多个操作数:,3.1 汇编语言程序格式,变量,段属性,偏移属性,类型属性,表示变量放在哪个逻辑段,表示变量放在逻辑段哪个偏移地址中,变量类型定义变量所占的字节数。 如:BYTE(DB,1字节)、WORD(DW,2字节)、 DWORD(DD,4字节)、QWORD(DQ,8字节)、TBYTE(DT,10字节)。,3.1 汇编语言程序格式,汇编语言的语句格式名字变量,变量:某一数据所存放单元的符号地址。,操作数,立即数(常数),存储器(标号、变量),表达式(由操作数和运算操作符组成),寄存器,3.1 汇编语言程序格式,汇编语言的语句格式操作码/伪指令,汇编语言的语句格式操作数,常数,数值常数,字符串常数,符号常数,后缀:二进制B、八进制O或Q、十进制D、十六进制H。 十进制数可省掉后缀 十六进制数以AF开头时,前面须加数字0,字符串在计算机中以ASCII码存储。 如A的存储值是41H,AB的存储值是41、42H等。,用EQU或 “=” 定义的符号常量。 如用COUNT EQU 3或COUNT=3定义后 ,COUNT是一个符号常数,与数值3等价。,汇编语言的语句格式操作数常数,3.1 汇编语言程序格式,汇编语言的语句格式操作数表达式,3.1 汇编语言程序格式,表达式:用一个运算符对一个或几个操作数运算,这就构成了一个表达式,从而得到一个新值。,算术运算符 逻辑运算符 关系运算符 分析运算符 合成运算符,汇编语言的语句格式操作数表达式算术运算符,3.1 汇编语言程序格式,算术运算符:只能用于数值表达式,汇编语言的语句格式操作数表达式逻辑运算符,3.1 汇编语言程序格式,逻辑运算符:只能用于数值表达式,汇编语言的语句格式操作数表达式关系运算符,3.1 汇编语言程序格式,当关系不成立时,结果为0; 当关系成立时,结果为-1. (关系式的两个操作数必须是数字或是同一段内的两个地址单元) 设(AI)=6,汇编语言的语句格式操作数表达式分析运算符,3.1 汇编语言程序格式,分析运算符:对变量或标号的属性进行分解。分别返回不同属性的值。,SIZE返回值=LENGTH返回值*TYPE返回值,汇编语言的语句格式操作数表达式组合运算符,3.1 汇编语言程序格式,组合运算符:用于建立或改变变量及标号的新类型。,汇编语言的语句格式注释项 注释前面要求加上分号。 用于说明、解释程序使之便于阅读或检查。 注释对汇编不起任何作用,不对应于任何机器码,只是增强源程序的可读性。,3.1 汇编语言程序格式,第3章 汇编语言程序设计,3.1 汇编语言程序格式,3.4 汇编语言程序设计,3.3 DOS功能调用,3.2 伪指令,3.2 伪指令,常用的伪指令有: 数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 结束伪指令 宏指令,DATA SEGMENT BLOCK DB 43H,0ABH, PDATA DB 20 DUP(?) DATA ENDS,例题,DB 用来定义字节 DW 用来定义字 DD 用来定义双字,数据定义伪指令,DB,DW,DD,DQ,DT,DQ: 4个字,DT: 10个字节压缩BCD码,DATA SEGMENT DATA1 DB 10, 10H DATA2 DW 100H,100 DATA3 DD 2*30,0FFFBH STR1 DB 1234 STR2 DW AB ABC DB 0,1,?,?,? DATA ENDS,例1:,dup: 重复伪指令,String2 db 20 dup (?),DATA SEGMENT A DB ABCDEF B DW 10 DUP(1,2DUP(2) DATA ENDS,例2:,1.等值伪指令EQU 格式为:符号名 EQU 表达式 例: CONSTANT EQU 100,2.等号(=)伪指令 与EQU类似,但允许重新定义 例: EMP=7 ;值为7 EMP=EMP+1 ;值为8,符号定义伪指令,段定义伪指令,与段有关的伪指令有:,SEGMENT、ENDS、ASSUME,段定义伪指令的格式如下: 段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS,这两个伪指令总是成对出现,二者前面的段名一致。二者之间一般是符号、变量定义等伪指令。对于代码段则是指令及伪指令。,此外,还必须明确段和段寄存器的关系,这可由ASSUME语句来实现。,ASSUME 段寄存器名:段名,段寄存器名:段名,.,告诉汇编程序用SEGMENT定义过的段的段地址将要存放在哪个段寄存器中。并没有给段寄存器赋予实际的初值。,真正把段地址装入段寄存器(称为段初始化)的操作需要由程序员自己完成,MOV AX,DATA MOV DS,AX MOV ES,AX 这些语句实现了将段基址装入段寄存器。而代码段不需要用户装入,由初始化程序装入。,ASSUME CS: CODE, DS: DATA, ES: DATA2,段定义伪指令,过程定义伪指令,过程的含义和子程序是一样的,一个过程可以被其它程序所调用,这个过程的最后一条指令,一般是返回指令。 过程定义伪指令的格式为: 过程名 PROC NEAR(近过程) 或 过程名 PROC FAR (远过程) RET 过程名 ENDP,调用一个过程的格式为: CALL 过程名,说明: (1)过程名为过程的入口地址(首地址);(2)PROC和ENDP指令须成对出现;(3)过程中至少要设置一条RET指令;(4)远过程可由其他代码段调用,近过程只能由本代码段调用。,结束伪指令END,当汇编程序对源程序进行汇编过程中,如遇到END,表示源程序到此结束。 格式为: END 标号 标号通常就是程序第一条指令的标号。,宏指令,宏定义 宏指令名 MACRO 形式参数表 ENDM,宏调用 宏指令名 实参数表 实参数与形参数一一对应,宏指令也可不带参数,宏展开-汇编程序在遇到宏指令时,将其展开为一条 一条的指令性语句,并在这些语句前加“+”号,例:将一位16进制数(0-8)转换成ASCII码 DATA SEGMENT DATA1 DB 5 TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,DATA1 MOV BX,OFFSET TABLE XLAT CODE ENDS END START,第3章 汇编语言程序设计,3.1 汇编语言程序格式,3.4 汇编语言程序设计,3.3 DOS功能调用,3.2 伪指令,调用指令: INT 21H 这是一条8086内部中断指令。是所有DOS系统 功能调用的总入口。,调用方式: 1. 调用的功能号入AH 2. 根据功能的要求,将入口参数放入相应的寄存器 3. 执行中断指令 INT 21H 4.相应子程序运行完后,可按规定提取出口参数,3.3 DOS功能调用,功能号 功能 入口参数 出口参数,00H 程序终止 无 无,01H 键盘输入并回显 无 AL=输入字符,02H 显示字符 DL=被显示字符的ASCII码,03H 异步通信输入 AL=输入字符,04H 异步通信输出 DL=输出字符,05H 打印机输出 DL=输出字符,06H 直接控制台I/O,3.3 DOS功能调用,功能号 功能 入口参数 出口参数,07H 键盘输入无回显 AL=输入字符,08H 同上但要检测Ctrl-Break,09H 显示字符串,0AH 字符串输入,4CH 返回DOS操作系统,更详细情况可参见教材P387附录,3.3 DOS功能调用,1. 键盘输入,3.3 DOS功能调用,a) 单字符输入,MOV AH,1; 功能号送AH INT 21H; 键入字符的ASCII码置入 AL寄存器,并显示,常用DOS系统功能举例,1. 键盘输入,3.3 DOS功能调用,b) 字符串输入,DATA SEGMENT BUF DB 20 ;最多输入20个字符 DB ? ;调用后系统自动填写实际字符个数 DB 20DUP(?) ;输入字符的存放空间 CODE SEGMENT MOV DX, SEG BUF;存放输入数据串的首地 MOV DS,DX ;址,DS:DX MOV DX, OFFSET BUF MOV AH,0AH; 功能号送到AH INT 21H,功能号:AH=0AH为从键盘输入字符串。 入口参数:DS:DX=输入缓冲区地址, (DS:DX)为输入缓冲区的总长; (DS:DX+1)为输入字符串的实长(字符个数) DS:DX+0 输入缓冲区 +1 +2 输入字符,b) 字符串输入,1. 键盘输入,3.3 DOS功能调用,2. 显示输出,3.3 DOS功能调用,a) 单字符显示,要显示字符的ASCII码首先送DL寄存器 MOV DL,A ; 或送41H MOV AH,2 ;功能号2送AH INT 21H ; 则显示大写字母A,2. 显示输出,3.3 DOS功能调用,a) 字符串显示,调用前字符串的首地址(段地址:偏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论