微机原理及应用-ch7教学案例

上传人:yuzo****123 文档编号:142795531 上传时间:2020-08-23 格式:PPT 页数:54 大小:711KB
返回 下载 相关 举报
微机原理及应用-ch7教学案例_第1页
第1页 / 共54页
微机原理及应用-ch7教学案例_第2页
第2页 / 共54页
微机原理及应用-ch7教学案例_第3页
第3页 / 共54页
微机原理及应用-ch7教学案例_第4页
第4页 / 共54页
微机原理及应用-ch7教学案例_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《微机原理及应用-ch7教学案例》由会员分享,可在线阅读,更多相关《微机原理及应用-ch7教学案例(54页珍藏版)》请在金锄头文库上搜索。

1、第七章 汇编语言程序设计的基本方法和技巧,7.1 概述 7.3 8086汇编语言程序设计的基本语法 7.4 汇编语言程序设计的基本方法和技巧 7.7 IBM-PC-DOS系统的功能调用,可执行目标文件:“.EXE”,目标代码文件:“.OBJ”,没有确定的物理地址,“.ASM”若有错,给出信息,源程序文件:“.ASM” “.asm” 编辑edit,汇编,得到结果,观察结果是否正确,错误,链接,若干.OBJ,调试,MS-DOS下,7.1 概述,7.3 8086汇编语言程序设计的基本语法,指示性语句与指令性语句: 指令性语句是用指令系统中的指令构成的语句。 格式:标号: 操作码助记符 操作数 ;注释

2、 指示性语句是指示汇编程序进行汇编的操作(伪指令和宏指令)。 格式:名字 定义符 参数 ;注释,指示性语句与指令性语句区别 一个程序经汇编,连接和装入内存后,在执行程序之前: 指示性语句的功能已经完成,故又称伪操作。 而指令性语句的功能尚未完成,需控制CPU去执行,才能完成。,一、源程序语句的组成,助记符由指令系统规定。 定义符由汇编程序规定。 都称为关键字或保留字,不能用作标号、名字、变量名。,二、操作数和参数,可以是常量、变量、寄存器、标号和表达式,不止一个,用,分开,1. 常量,在指令性语句中可以做立即数,也可以做偏移量,e.g. MOV AL, 5AH MOV AX, SI+66H,在

3、指示性语句中一般作为参数或数据项,e.g. ABC DW 1357H ;定义字,2. 变量,代表存放在某存储单元的数据,若变量在名字中出现,称为对变量的定义,就是给变量分配存储单元,且对这个存储单元赋一个符号名变量名。同时将这些存储单元预置初值,可以通过DB、DW、DD等对变量定义。,3. 表达式与运算符,(1) 算术运算符, +、-、*、/:参加运算的数和结果均是整数,除法运算的结果只取整数部分 e.g. 80/9的值为8, MOD:除法取余 SHL/SHR:逻辑左/右移,最右/左边以0补,当移位次数16时,结果恒为0, 表达式1表达式2 下标运算符,表示加法,把表达式1和表达式2相加形成一

4、个存储器(内存)地址 e.g. MOV AX, DATA110H MOV AX, DATA1+10H,等价,(2) 逻辑运算符 AND、OR、XOR、NOT,注:有些运算符与指令助记符是相同的,但是概念不同 在语句中所处的字段不同,指令位于操作码段,运算符位于操作数段 指令在程序运行时执行,运算符在运算在汇编时完成 指令操作对象是操作数,运算符处理对象是某一个具体的数,AND AL,24H AND 0FH,(3) 关系运算符 EQ、NE、LT、LE、GT、GE,关系运算符连接两数(这两个数必须同时是数字或同一段内的两个地址)组成一个判定式,若判定式正确(为真),运算结果为0FFFFH,若为假,

5、则运算结果为0000H,e.g. (PORT)=25 MOV AX, 25 EQ PORT 汇编“MOV AX, 0FFFFH” MOV AX, 25 NE PORT 汇编“MOV AX, 0000H”,(4) 分析运算符, SEG 符号名 ;求段基址e.g. 标号SLAB处于数据段,且段基址为46FFH,则 MOV AX, SEG SLAB ;(AX)=46FFH, OFFSET 符号名 ;求段内偏移量 e.g. 标号SLAB处于数据段,且与数据段基址的距离为10H MOV SI, OFFSET SLAB ;(SI)=0010H, TYPE 符号名 ;求符号名类型值 e.g. DATA1 D

6、B 12H, 34H, 56H DATA2 DW 7890H MOV AX, TYPE DATA1 ;(AX)=1 MOV BX, TYPE DATA2 ;(BX)=2, SIZE 符号名 ;求为符号名分配的字节数 e.g. DATA1 DB 50 DUP (0) DATA2 DD 20 DUP (0) MOV AX, SIZE DATA1 ;(AX)=1*50=50 MOV AX, SIZE DATA2 ;(AX)=4*20=80,必须是用“DUP( )”定义的数据项, LENGTH 符号名 ;求为符号名分配的项数 SIZE、LENGH、TYPE之间的关系: SIZE 符号名=(LENGTH

7、 符号名)*(TYPE 符号名) e.g. 对于“ABC DW 100 DUP (?)” TYPE ABC ;汇编结果为2 LENGTH ABC ;汇编结果为100 SIZE ABC ;汇编结果为200,必须是用“DUP( )”定义的数据项,(5) 属性运算符, 类型 PTR 符号名 ;将符号定义为新类型,BYTE、WORD、DWORD、NEAR、FAR等,SUB WORD PTR ALPHABXDI, 512H;, THIS 类型 ;指定新类型,规定它所定义的符号名和相邻的下一个语句的符号名具有相同的物理地址e.g. LABC EQU THIS BYTE LABD DW 1357H, 246

8、8H MOV AL, LABC ;(AL)=57H MOV AX, LABD+1 ;(AX)=6813H, SHORT 标号 ;指出JMP指令的转向地址是在下一条指令的127个字节范围内,(5) 分离运算符, LOW 表达式 ;取低字节 HIGH 表达式 ;取高字节 e.g. SSY=1234H, 则 MOV AL, LOW 5678H ; (AL)=78H MOV AH, HIGH SSY ; (AH)=12H,7.4 汇编语言程序设计的基本方法和技巧,一、概述 (一) 判断程序质量的标准 程序的正确性 程序的可读性 程序的执行时间 程序所占内存大小,(二)汇编语言的程序设计步骤如下: 1建

9、立数学模型; 2选择算法; 3绘制流程图; 4分配存储空间和工作单元; 5根据流程图编制程序; 6上机调试程序。,7.4 汇编语言程序设计的基本方法和技巧,顺序结构 分支结构 循环结构 子程序结构,(三)几种程序结构,7.4 汇编语言程序设计的基本方法和技巧,1. 顺序程序设计,例 从标号为ADD-BUF的存储单元开始连续存放着两个单字节数,将两数相加,结果送到SUMBUF存储单元中(不考虑进位)。,2. 分支程序设计,选择分支,简单分支,多分支,例 比较两个一字节无符号数X1和X2的大小,把大数存入MAX单元。,分析:比较两个无符号数,可将两数相减,然后根据CF标志位来判断大小。,3. 循环

10、程序设计,WHILE-DO型循环图,REPEAT-UNTIL型循环图,(1)初始化部分 这是循环的准备部分,为程序操作、地址指针、循环计数、结束条件等设置初始值。 (2)循环体,包括以下3个部分: 循环工作部分-这是循环程序的主体,完成程序的基本操作,循环多少次,这部分语句就执行多少次。 循环修改部分-修改循环工作部分的变量地址等,这保证每次重复时,参加执行的数据能发生有规律的变化。 循环控制部分-保证循环条件满足时进入循环;循环结束条件不满足时,退出循环,执行循环体外的后续语句。 (3)循环结束部分 完成循环结束后的处理,如数据分析、结果的存放等。,例 从XX单元开始的10个连续单元中存放有

11、10个无符号数,从中找出最大者送入YY单元。,分析:根据题意,把第一个数先送入AL,将AL中的数与后面的9个数逐个比较,如果AL中的数较小,则两数交换位置,如果AL中的数大于或等于相比较的数,则两数位置不变,在比较过程中,AL中始终保持较大的数,比较9次,则最大者必在AL中,最后把AL中的数送入YY单元。,循环工作部分,循环修改部分,循环控制部分,循环修改部分,初始化部分,循环结束部分,7.7 DOS功能调用,PCDOS是IBM PC微型计算机的磁盘操作系统。它为用户提供了许多命令,也有80多个子程序可供用户调用。 这些子程序的功能主要是实现对存储器和基本I/O设备的管理等。为了便于调用将所有

12、子程序顺序编号。 如PC DOS2.0有87个子程序,编号从0开始到57H。,用户编程原则: 尽可能使用DOS的系统功能调用,提高程序可移 植性。 在DOS功能不能实现情况下,考虑用BIOS功能调 用。 在DOS和BIOS的中断子程不能解决问题时,使用 IN/OUT指令直接控制硬件。,1. 调用方法,使用DOS功能调用还要注意下列问题: (1)从键盘输入的字符由系统自动转换为ASCII 码,在进行数据处理时要特别注意; (2)需要在屏幕上显示的字符要在程序中将其转 换为ASCII码。 例:实验中的3+4=7,2、DOS功能调用要注意的问题,1. 显示单字符 ( 02H功能 ) 入口参数 DL

13、= 要显示字符的ASCII 码 功能号 AH=02H 类型号 INT 21H 出口参数 无 实现功能 显示指定字符,光标随动。 例 显示字符A MOV DL, A MOV AH, 02H INT 21H,二、DOS系统功能调用 (21H类型中断调用),在DOS中断服务程序中,功能最多的是矢量号为21H的矢量中断,入口参数 定义要显示的字符串,字符串尾 应为$,作为结束显示的标志。 DS : DX = 字符串的首地址 功能号 AH = 09 H 类型号 21H 出口参数 无 实现功能 显示字符串,遇 $ 停止显示,光 标随动。,2. 显示字符串 ( 09H功能 ),3.键盘输入一个字符 ( 01

14、H功能 )将其ASCII字符代码送AL寄存器,同时送显示器显示。如:MOV AH,01H INT 21H,例:MOV AH,4CH INT 21H,4.终止程序,返回DOS(4CH号),二、汇编语言程序设计举例,例1:试设计一个对两个32位二进制数相加的程序。设被加数2A3B078EH和加数4C508F55H从数据段的BGS单元(令BGS=2000H)开始依次存放,要求将两数和放在加数之后。 分析:这是一个简单的加法问题,因为数据不长,可采用顺序程序设计方法。 因为是两个32位数相加,应先加低16位,再加高16位,加高16位时还要考虑低16位相加产生的进位,应选用带进位加法指令。还要注意,多字

15、节数在内存是放在连续的存储单元中,且高字节放高地址单元,低字节放低地址单元。,内存单元分配如下:,BGS=2000H,8EH,07H,3BH,2AH,55H,8FH,50H,4CH,被加数,加数,和,2004H,2008H,DATA SEGMENT ORG 2000H BGS DD 2A3B078EH,4C5D8F55H DD ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ORG 1000H START:MOV AX,DATA MOV DS,AX,MOV AX,BGS ADD AX,BGS+4 MOV BGS+8,AX MOV AX,BGS+2 ADC AX,BGS+6 MOV BGS+0AH,AX MOV 0AH,4CH INT 21H CODE ENDS END START,低16位,高16位,返回DOS,同一问题,若数据很长,或采用字节加法,则重复很多次,可考虑采用循环程序设计方法:,DATA SEGMENT ORG 2000H BGS DB 8EH, 07H, 3BH, 2AH DB 55H, 8FH,5DH, 4CH DB 4 DUP( ?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ORG 1000H START:MOV AX,DATA MOV DS,A

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号