微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计

上传人:E**** 文档编号:89507728 上传时间:2019-05-26 格式:PPT 页数:64 大小:2.74MB
返回 下载 相关 举报
微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计_第1页
第1页 / 共64页
微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计_第2页
第2页 / 共64页
微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计_第3页
第3页 / 共64页
微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计_第4页
第4页 / 共64页
微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计》由会员分享,可在线阅读,更多相关《微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目三 汇编语言程序设计(64页珍藏版)》请在金锄头文库上搜索。

1、项目三,项目三 汇编语言程序设计,本项目主要讲解汇编语言的基本格式,顺序程序、分支程序、循环程序、子程序的基本结构和设计方法等,通过实例程序说明程序的设计及调试方法。,项目导读,项目三 汇编语言程序设计,理解汇编语言程序设计的完整段格式,并能熟练套用。 理解汇编语言程序中使用的各种运算符;对常用运算符(如OFFSET、TYPE、PTR等)应会正确使用。 掌握汇编语言程序中符号、数据、段结构和过程等的定义方法。 掌握汇编语言程序中段寄存器的加载方法。 掌握顺序、分支、循环和子程序结构的程序设计方法与技巧。 了解高级汇编语言技术。 熟练掌握汇编语言的开发过程。,学习目标,项目三 汇编语言程序设计,

2、学习建议,汇编语言程序设计是CPU中指令系统的综合应用,实践性很强。通过本章的学习,可以加深对计算机层次结构的理解。因此,应该熟练掌握本章中所列各种伪指令的格式和使用方法,掌握汇编语言完整段的格式,并能熟练编写简单的汇编程序。在学习几种基本程序结构形式的程序设计方法与技巧时,要结合上机操作,逐步掌握汇编语言程序的编辑、编译、连接和调试等程序设计技巧和技能。本项目教学安排26学时,其中理论16学时,动手实践10学时。,3.1 项目开篇:汇编语言程序设计过程实例,编制一汇编源程序实现下列运算: RESULT(A+B)*C/(A-B) 注:本程序在MASM5.1中调试, 若在6.11中需调整变量。,

3、题目要求,3.1 汇编语言的源程序格式(续1),TITLE EXAMPLE FOR “典型格式” STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS DATA SEGMENT A DB 75 B DB 60 C DB 45 S DB 0 RESULT DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1,完整段定义格式,3.1 汇编语言的源程序格式(续2),START: MOV AX,DATA MOV DS,AX MOV AL,A SUB AL,B MOV S,AL MOV

4、AL,A ADD AL,B XOR AH,AH DIV S MUL C MOV RESULT,AX,代码段,3.1 汇编语言的源程序格式(续3),MOV AH,4CH INT 21H CODE ENDS END START,程序结束,3.2项目备战:汇编语言程序设计基础,常量表示一个固定的数值,又可分成多种形式。 数值型常量 字符型常量 符号型常量 数值表达式,任务3.2.1 理解常量、变量和标号的含义与应用,1.常量,2. 变量,变量实质上是指主存单元的数据,因而可以改变。变量需要事先定义。 变量定义伪指令为变量申请固定长度的存储空间,并可以同时将相应的存储单元初始化。其汇编语言格式为: 变

5、量名 伪指令 初值表 变量名为用户自定义标识符,表示初值表首元素的逻辑地址。 初值表是用逗号分隔的参数,主要由常量、数值表达式或“?”组成。 多个存储单元如果初值相同,可以用复制操作符dup进行定义。 dup的格式为: 变量名 伪指令 表达式1 dup(表达式2) 变量定义伪指令定义类型有db,dw,dd,df,dq,dt。,2. 变量 变量的应用和定位(1),变量具有逻辑地址。在程序代码中,通过变量名引用其指向的第一个数 据,通过变量名加减位移量存取以第一个数据为基地址的前后数据。 示例: DATA_1 DB 100,01100100B,64H,D MININT =5 DATA_2 DB 1

6、,MININT,MININT+5 DB ?,2 DUP(20H) DATA_3 DW 2010H,4*4 DATA_4 DW ? DATA_5 DD 12347777H,87651111H,? abc DB a,b,c,? MAXINT EQU 0AH STRING DB ABCDEFGHIJ CURCH DB 13,10,$ ARRAY_0 DW MAXINT DUP(0) ARRAY_1 DB 2 DUP(2,3,2 DUP(4),2. 变量 变量的应用和定位(2),MOV DL,DATA_1 DEC DATA_21 MOV abc3,DL MOV AX,WORD PTR DATA_50

7、MOV DX,WORD PTR DATA_52 ADD AX,WORD PTR DATA_54 ADD DX,WORD PTR DATA_56 MOV WORD PTR DATA_58,AX MOV WORD PTR DATA_510,DX MOV CX,MAXINT MOV BX,0,双字加法,2. 变量 变量的应用和定位(3),AGAIN: ADD STRINGBX,3 INC BX LOOP AGAIN LEA DX,abc MOV AH,09H INT 21H,显示字符串,2. 变量 变量的应用和定位(4),org 表达式 ;使之后面的目标代码以表达式给定值作起始偏移量。 示例: da

8、ta segment org 200h ;将当前偏移地址指针指向参数表达式的偏移地址 data_1 db 30h,41h ;data_1在data数据段中的偏移量为200h而不是0h,3. 名字和标号,名字和标号是汇编语言的第一部分,是用户自定义的标识符。名字指向一条伪指令,标号指向一条硬指令,它们都用来表示本语句的符号地址。名字有多种。如变量名、段名、子程序名等。,3. 名字和标号 名字和标号的属性,(1)段属性(seg) 段属性表示名字或标号所在的指令在哪个逻辑段中,且用这个段的段基址表示。 (2)偏移量属性(offset) 标号或名字的偏移地址是16位无符号数,它代表从段起始地址到定义标

9、号的位置之间的字节数。段属性和偏移量属性共同构成了这条指令的逻辑地址。 (3)类型属性(type) 变量的类型属性定义了该变量所保留的字节数。如byte(单字节)、word(双字节)等;名字或标号的类型属性表示了它的转移特性。如在段内引用的,则称为near,指针长度为2字节;如在段外引用,则称为far,指针长度为4字节。,任务3.2.2 掌握顺序程序设计方法与技巧,没有分支、循环等转移指令的程序,会按指令书写的前后顺序依次执行,顺序结构是最基本的结构程序。,任务3.2.2 掌握顺序程序设计方法(续1),例采用查表法,实现一位16进制数转换为ASCII码显示,TITLE TABLE LOOK-U

10、P DATA SEGMENT TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H HEX DB 04H,0BH DATA ENDS STACK1 SEGMENT PARA STACK DW 40 DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,STACK:STACK1,完 整 段 定 义 格 式,任务3.2.2 掌握顺序程序设计方法(续2),START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET TABL

11、E MOV AL,HEX AND AL,0FH XLAT MOV DL,AL MOV AH,2 INT 21H MOV AL,HEX+1 AND AL,0FH XLAT MOV DL,AL MOV AH,2 INT 21H,代码段,任务3.2.2 掌握顺序程序设计方法(续3),CODE ENDS END START,程序结束,任务3.2.2 掌握顺序程序设计方法(续4),处理框:用于说明一程序段(或一条指令)所完成的功能。通常一个入口,一个出口。 判别框:表示进行程序的分支的流向判别,框内记入判别条件。通常一个入口,两个或两个以上的出口。在每个出口上要注明分支流向的条件。 起止框:表示一个程序

12、或一个程序模块的开始和结束。起始框内通常用程序名或过程名、标号或“开始”字符来表示,它仅有一个出口。终止框内通常用“结束”、“返回”等字符来表示,它仅有一个入口。 连接框:用于表示两根流向线的连接关系。连接框内常用字母或数字来表示。框内有相同的字母或数字就表示它们有连线关系。它只有一个入口或出口。 流向线:表示程序的流向,即程序执行的顺序关系。如程序的流向是从上向下或从左向右,通常可以不画箭头,其余情况需要用箭头指明程序的流向。,(a)处理框 (b)判别框 (c)起止框 (d)连接框 (e)流向图,任务3.2.3 掌握分支程序设计方法,汇编语言中,使用条件转移Jcc指令和无条件转移JMP指令实

13、现分支程序结构。条件转移判断的条件是标志位。分支程序结构有单分支和双分支两种基本形式。,1. 简单分支程序设计,由于用一条转移指令只能产生两路分支,在程序分支不多的情况下,可使用条件转移指令或无条件转移指令来实现。 示例:已知在主存中有一个字节单元X,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。 分析:根据题目要求画出程序流程图,如左图所示。当AL0时,发生转移,跳过分支,否则,对它进行求补运算。,1. 简单分支程序设计(续1),MOV AL,X TEST AL,80H JZ NEXT NEG AL NEXT: MOV RESULT,AL MOV AH,4CH INT 21

14、H,代码段,1. 简单分支程序设计(续2),Y,1 ;当X0 0 ;当X0 -1 ;当X0,示例2:编写一程序段,实现下列表达式运算,分析:显然程序段需要对X变量进行测试,根据测试结果分别对变量Y进行设置。程序流程如右图所示。,1. 简单分支程序设计(续3),MOV AL,X TEST AL,80H JZ NEXT NEG AL NEXT: MOV RESULT,AL MOV AH,4CH INT 21H,代码段,1. 简单分支程序设计(续4),示例:显示两位压缩BCD码值(0099),要求不显示前导0。 分析:本例一方面排除前导0的情况,另一方面对于全0情况又必须显示一个0,所以形成了两个分

15、支结构的程序。 假设取: BCD DB 07H 要求: 根据例题程序,画出其流程图。,1. 简单分支程序设计(续5),MOV DL,BCD TEST DL,0FFH JZ ZERO TEST DL,0F0H JZ ONE MOV CL,4 SHR DL,CL OR DL,30H MOV AH,2 INT 21H,显示高位,1. 简单分支程序设计(续6),MOV DL,BCD AND DL,0FH ONE : OR DL,30H JMP TWO ZERO: MOV DL,0 TWO: MOV AH,2 INT 21H,显示低位,2. 多分支结构程序设计,对于多路分支的程序,如果直接用条件转移指令实现,那么N路分支,就需要N1条转移指令。这样程序不仅显得冗长繁琐,且进入各路分支时间不一致,这时可用地址表来实现。,设5路分支都在段内,那么用入口地址组成跳转表时,表内每两个字节存放一路分支入口地址的偏移量,如右图所示。在程序中取出变量PARAM后,形成查表地址:表首址(PARAM1)2。,2. 多分支结构程序设计(续1),设某程序有5路分支,根据变量的值,将程序转移到某一分支程序中。,2. 多分支结构程序设计(续2),JUM

展开阅读全文
相关资源
相关搜索

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

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