微机原理与接口技术 第6章2.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《微机原理与接口技术 第6章2.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术 第6章2.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章汇编语言程序设计汇编语言程序设计用汇编语言编程属结构化程序设计。用汇编语言编程属结构化程序设计。需按照结构化的思想来进行汇编程需按照结构化的思想来进行汇编程序的设计序的设计分析题意,确定算法分析题意,确定算法根据算法画出程序框图根据算法画出程序框图根据框图编写程序根据框图编写程序上机调试程序上机调试程序执行程序执行程序按照自上而下的设计方法,设计一个汇编程序的步骤:按照自上而下的设计方法,设计一个汇编程序的步骤:顺序程序顺序程序分支程序分支程序循环程序循环程序从结构上来讲,一般的汇编程序可分为:从结构上来讲,一般的汇编程序可分为:Eg:从键盘输入一个字符并存储到字节变从键盘输入一个字
2、符并存储到字节变量量BUF单元中单元中.分析:分析:用用DOS功能调用完成键入,输入功能调用完成键入,输入的字符保存在的字符保存在AL寄存器中寄存器中将将AL中的内容存到定义在数据中的内容存到定义在数据段的变量段的变量BUF所指单元中所指单元中顺序程序设计顺序程序设计.486DATASEGMENTUSE16BUF DB?DATAENDS源程序清单:源程序清单:CODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAH,1INT 21H;AL=键入字符的键入字符的MOVBUF,ALASIIC码码MOVAH,4CHINT 21H
3、CODEENDSEND BEG分支程序设计分支程序设计转移指令可用来实现分支程序设计转移指令可用来实现分支程序设计分支程序分三种:分支程序分三种:简单分支简单分支复合分支复合分支多分支多分支简单分支简单分支即两路分支,该分支程序结构为:即两路分支,该分支程序结构为:条件满足否条件满足否?程序段程序段1程序段程序段2YN EgEg:将将BXBX寄存器的内容以二进制数格式显在寄存器的内容以二进制数格式显在屏幕上屏幕上BX=1110010011100110B简单分支简单分支RCLRCL0 0SALSALROLROLCFCFCFCFCFCF486CODESEGMENTUSE16ASSUMECS:COD
4、EBEG:MOVBX,5678HMOVCX,16LAST:MOVAL,0ROLBX,1JNCNEXTMOVAL,1NEXT:MOVAH,0EHINT10HLOOPLASTMOVAH,4CHINT21HCODEENDSENDBEGADCAL,0数数BX,16 BX,16 CXCXC C标标=?=?1 1ALAL调调BIOS.0EHBIOS.0EHCX-1CXCX-1CXCX=0CX=00 0ALALBXBX左移一位左移一位10NY返返DOSDOS源程序清单:源程序清单:复合分支复合分支判断的条件是复合条件,称复合判断判断的条件是复合条件,称复合判断复合分支程序结构为:复合分支程序结构为:条件条件
5、1和条件和条件2.满足否?满足否?程序段程序段1程序段程序段2YNEgEg:某科室某科室9人,统计月收入在人,统计月收入在800900间的人数,并用十进制数显示间的人数,并用十进制数显示复合分支复合分支 分析:月收入是无符号数,对一批数处理应该用间址。分析:月收入是无符号数,对一批数处理应该用间址。数轴数轴:N1(800)N2(900)N1(800)N2(900)多分支多分支判断条件后有多个出口,判断一次只能选择判断条件后有多个出口,判断一次只能选择一个分支。一个分支。多多分支程序结构为:分支程序结构为:1条件属哪种条件属哪种情况?情况?程序段程序段1程序段程序段n+m.程序段程序段nnn+m
6、例例.多分支段内转移多分支段内转移要求:键入要求:键入0 0,转,转P0P0程序段程序段 键入键入1 1,转,转P1P1程序段程序段 键入键入9 9,转,转P9P9程序段程序段思路:思路:用比较指令配合直接转移指令实现用比较指令配合直接转移指令实现 CMP CMP 键入字符,键入字符,00 JE P0JE P0 CMP CMP 键入字符,键入字符,11 JE P1JE P1 用转移地址表配合间接转移指令实现用转移地址表配合间接转移指令实现多分支多分支486DATASEGMENTUSE16TABDWP0,P1,P9;汇编后自动装入相应的偏移地址汇编后自动装入相应的偏移地址MESGDB0DH,0A
7、H,strike09:$DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXAGA:MOVAH,9MOVDX,OFFSETMESGINT21HMOVAH,1INT21HCMPAL,0JCAGACMPAL,9JAAGASUBAL,30HMOVZXBX,ALADDBX,BX;2BXBXMOVSI,OFFSETTABJMPBX+SI;DS:BX+SIIPP0:P1:P9:CODEENDSENDBEG或或:MOVBX,BX+SIJMPBX;BXIP源程序清单:源程序清单:循环程序设计循环程序设计循环程序的组成:循环程序的
8、组成:循环准备循环准备 循环体循环体 循环控制循环控制1.1.循环程序的结构循环程序的结构Y Y预置循环次数预置循环次数其他准备工作其他准备工作循环体循环体循环减循环减1 1计数计数退出循环退出循环结果为结果为0?0?N N(a(a)单单循循环环结结构构(b(b)双双循循环环结结构构结果为结果为0?0?循环体循环体内循环减内循环减1 1计数计数结果为结果为0?0?外循环减外循环减1 1计数计数退出循环退出循环预置外循环次数预置外循环次数其他准备工作其他准备工作预置内循环次数预置内循环次数其他准备工作其他准备工作N NN NY YY YEgEg:假设从假设从BUFBUF单元单元开始为一个开始为一
9、个 ASCIIASCII码字符串码字符串,找出其中找出其中的最大数送屏幕显的最大数送屏幕显示。示。循环程序设计循环程序设计思路:思路:ASCASC码数为无符号数,码数为无符号数,无符号数的最小数为无符号数的最小数为0 0Y YN NN N数据区首址数据区首址DS:BXDS:BX无符号最小数无符号最小数ALAL数据个数数据个数CXCXBX ALBX ALBX=AL?BX=AL?BX+1 BXBX+1 BXCX-1 CXCX-1 CX显示结果显示结果返回返回DOSDOSCX=0CX=0?Y Y486DATASEGMENTUSE16BUFDBQWERTYUIOP123COUNTEQU$-BUF;统计
10、串长度统计串长度MAXDBMAX=,?,0DH,0AH,$DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAL,0;无符号最小数无符号最小数 0 0 ALALLEABX,BUF;串首址偏移量串首址偏移量BXBXMOVCX,COUNT;串长度串长度CXCX LAST:CMPBX,AL;比较比较JCNEXTMOVAL,BX;大数大数ALALNEXT:INCBXLOOPLAST;循环计数循环计数MOVMAX+4,AL ;最大数最大数MAX+4 MAX+4 单元单元MOVAH,9MOVDX,OFFSETMAXI
11、NT21H;显示结果显示结果MOVAH,4CHINT21H;返回返回 DOSDOSCODEENDSENDBEG 源程序清单源程序清单1:486DATASEGMENTUSE16BUFDBQWERTYUIOP123FLAGDB1;设置串结束标志设置串结束标志MAXDBMAX=,?,0DH,0AH,$DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAL,0;无符号最小数无符号最小数 0 0 ALALLEABX,BUF;串首址偏移量串首址偏移量BXBXLAST:CMPBYTEPTRBX,-1;BX=;BX=串结
12、束标志串结束标志?JEDISP;是是,转转CMPBX,ALJCNEXTMOVAL,BX;大数大数ALALNEXT:INCBXJMPLASTDISP:MOVMAX+4,AL;最大数最大数MAX+4 MAX+4 单元单元MOVAH,9MOVDX,OFFSETMAXINT21H;显示结果显示结果MOVAH,4CHINT21H;返回返回 DOSDOSCODEENDSENDBEG 源程序清单源程序清单2:汇编程序设计举例汇编程序设计举例 代代 码码 转转 换换代码转换代码转换 常见的代码转换有:常见的代码转换有:二进制数二进制数显示显示 二进制数二进制数十进制数十进制数显示显示 二进制数二进制数十六进制
13、数十六进制数显示显示 BCDBCD码数码数二进制数二进制数代码转换代码转换A一.一.二进制数显示:二进制数显示:例例.把键盘输入的一位数把键盘输入的一位数(0(09),9),转换成等值二进数显示转换成等值二进数显示显示的格式要求如下:显示的格式要求如下:PleaseEnter:ERROR!PleaseEnter:9=00001001B代码转换代码转换思路:思路:键盘缓冲区中是键入字符的键盘缓冲区中是键入字符的ASCASC码。码。0 09 9的的ASCASC码为码为3030H H39H39H。二进制数每一位代码的判断:二进制数每一位代码的判断:本程序采用两种格式设计源程序:本程序采用两种格式设计
14、源程序:一种是一种是EXEEXE文件编程格式,文件编程格式,另一种是另一种是COMCOM文件编程格式。文件编程格式。RCLRCL0 0SALSALROLROLCFCFCFCFCFCF程序框图:程序框图:AL-30HBLAL-30HBL=屏幕屏幕,8,8CX CX 0 0 屏屏幕幕1 1 屏屏幕幕CX-1 CXCX-1 CXB B 屏幕屏幕,返回返回DOSDOSN NN N给出操作提示给出操作提示键盘输入键盘输入ALALAL=0AL=09?9?CF=?CF=?CX=0?CX=0?BLBL左移一位左移一位Y Y显示错误信息显示错误信息 Y Y0 01 1.486DATASEGMENTUSE16ME
15、SG1DBPleaseEnter!,0DH,0AH,$MESG2DB-Error!$DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAH,9MOVDX,OFFSETMESG1INT21H;显示操作提示显示操作提示MOVAH,1INT21H;等待键入等待键入CMPAL,3AHJNCERROR;99转转CMPAL,30HEXEEXE格式程序清单格式程序清单 JCERROR;00转转SUBAL,30HMOVBL,AL;BL=0;BL=09 9 的二进制数的二进制数MOVAH,2MOVDL,=INT21HCAL
16、LDISPMOVAH,2MOVDL,BINT21HJMPEXITERROR:MOVAH,9MOVDX,OFFSETMESG2INT21H;显示错误信息显示错误信息EXIT:MOVAH,4CHINT21H;-DISPPROC;显示显示BLBL中的二进制数中的二进制数MOVCX,8LAST:MOVDL,0RCLBL,1JNCNEXTMOVDL,1NEXT:MOVAH,2INT21HLOOPLASTRETDISPENDPCODEENDSENDBEGEXEEXE格式程序清单格式程序清单 .486CODESEGMENTUSE16ASSUMECS:CODEORG100HSTART:JMPBEGMESG1D
17、BPleaseEnter!,0DH,0AH,$MESG2DB-Error!$BEG:MOVAH,9MOVDX,OFFSETMESG1INT21H;显示操作提示显示操作提示 MOVAH,1INT21H;等待键入等待键入CMPAL,3AHJNCERROR;9 9 转转CMPAL,30HJCERROR;0 0 转转SUBAL,30HMOVBL,AL;BL=0;BL=09 9 的二进制数的二进制数MOVAH,2MOVDL,=INT21HCALLDISPMOVAH,2MOVDL,BINT21HJMPEXITMOVDX,OFFSETMESG2INT21H;显示错误信息显示错误信息INT21HERROR:M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 第6章2 微机 原理 接口 技术
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内