汇编语言程序流程控制语句及程序设计.pptx
《汇编语言程序流程控制语句及程序设计.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序流程控制语句及程序设计.pptx(105页珍藏版)》请在咨信网上搜索。
1、第4章 程序设计方法第4章 程序流程控制语句 及程序设计4.1 程序设计方法概述程序设计方法概述4.2 顺序程序设计顺序程序设计4.3 DOS系统功能调用系统功能调用4.4 分支程序设计分支程序设计4.5 循环程序设计循环程序设计4.6 子程序设计子程序设计第4章 程序设计方法4.1 概述概述4.1.1 汇编语言程序设计的一般步骤汇编语言程序设计的一般步骤4.1.2 流程图流程图第4章 程序设计方法4.1.1 汇编语言程序设计的一般步骤汇编语言程序设计的一般步骤汇编语言程序设计一般有以下几个步骤:汇编语言程序设计一般有以下几个步骤:1分析问题,确定算法分析问题,确定算法2绘制流程图绘制流程图3
2、根据流程图编制程序根据流程图编制程序4调试程序调试程序第4章 程序设计方法4.1.2 流程图流程图1流程图的概念流程图的概念流流程程图图是是由由特特定定的的几几何何图图形形、指指向向线线、文文字字说说明明来来表表示示数数据据处处理理的的步步骤骤,形形象象描描述述逻逻辑辑控控制制结结构构以以及及数数据据流流程程的的示示意意图图。流流程程图图具具有有简简洁洁、明明了了、直观的特点。直观的特点。2流程图符号表示流程图符号表示(1)起止框:表示程序)起止框:表示程序的开始和结束。的开始和结束。起止框起止框第4章 程序设计方法(2)判断框)判断框(3)处理框)处理框(4)调用框)调用框 第4章 程序设计
3、方法(5)指向线)指向线(6)连接框)连接框 第4章 程序设计方法4.2 顺序程序设计顺序程序设计下面举例说明顺序程序的设计。下面举例说明顺序程序的设计。【例例】试编写一程序计算以下表达式的值。试编写一程序计算以下表达式的值。=(v-(*+-540)/x式中式中x、v均为有符号字数据。均为有符号字数据。设设、的的值值存存放放在在字字变变量量、V中中,结结果果存存放放在在双双字字变变量量之之中中,程程序序的的流流程程图图如如图图4.1所示。所示。第4章 程序设计方法图图4.1 4.1 顺序运算程序流程图顺序运算程序流程图第4章 程序设计方法源程序如下:源程序如下:DATASEGMENTXDW20
4、0YDW100ZDW3000VDW10000W DW2 DUP(?)(?)DATAENDSSTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSCODESEGMENTASSUME DS:DATA,CS:CODE,SS:STACK第4章 程序设计方法START:MOVAX,DATA MOVDS,AX;DATAAX MOVAX,X IMULY;(;(X)*(Y)DX:AX MOVCX,AX MOVBX,DX;(;(DX:AX)(BX:CX)MOVAX,Z CWD;(;(Z)符号扩展)符号扩展 ADDCX,AX ADCBX,DX;(;(BX:CX)+(DX:AX)(B
5、X:CX)SUBCX,540 SBBBX,0;(;(BX:CX)-540(BX:CX)MOVAX,V 第4章 程序设计方法 CWD;(;(V)符号扩展)符号扩展SUBAX,CXSBBDX,BX ;(;(DX:AX)-(BX:CX)(DX:AX)IDIV X;(;(DX:AX)/XMOVW,AX;商;商WMOVW+2,DX;余数;余数DXW+2MOVAH,4CHINT 21HCODE ENDS;退出;退出DOS 状态状态 ENDSTART第4章 程序设计方法【例例】已已知知某某班班学学生生的的英英语语成成绩绩按按学学号号(从从1开开始始)从从小小到到大大的的顺顺序序排排列列在在TAB表表中中,要
6、要查查的的学学生生的的学学号号放放在在变变量量NO中中,查查表表结结果果放放在在变量变量ENGLISH中。中。编写程序如下:编写程序如下:第4章 程序设计方法STACK SEGMENT STACK DB 200 DUP(0)STACK ENDSDATASEGMENTTABDB 80,85,86,71,79,96 DB 83,56,32,66,78,84NO DB 10ENGLIST DB?DATAENDSCODE SEGMENT第4章 程序设计方法 ASSUME DS:DATA,SS:STACK,CS:CODEBEGIN:MOVAX,DATA MOVDS,AX LEABX,TAB MOVAL,
7、NO DECAL XLATTAB MOVENGLISH,AL MOVAH,4CH INT21H CODE ENDS ENDBEGIN第4章 程序设计方法4.3 DOS系统功能调用系统功能调用4.3.1 系统功能调用方法系统功能调用方法4.3.2 常用的常用的DOS系统功能调用系统功能调用第4章 程序设计方法4.3.1 系统功能调用方法系统功能调用方法DOS系统功能调用的方法一般可分为以下几步:系统功能调用的方法一般可分为以下几步:设置所要调用功能的入口参数。设置所要调用功能的入口参数。在在AH寄存器中存入所要调用功能的功能号。寄存器中存入所要调用功能的功能号。INT 21H指令自动转入中断子程
8、序入口。指令自动转入中断子程序入口。相相应应中中断断子子程程序序运运行行完完毕毕,可可按按规规定定取取得得出出口口参数。参数。第4章 程序设计方法4.3.2 常用的常用的DOS系统功能调用系统功能调用1单字符输入(单字符输入(1号调用)号调用)2单字符显示(单字符显示(2号调用)号调用)3打印输出打印输出(5号调用)号调用)4结束调用(结束调用(4CH号调用)号调用)5显示字符串(显示字符串(9号调用)号调用)6字符串输入(字符串输入(10号调用)号调用)第4章 程序设计方法1单字符输入(单字符输入(1号调用)号调用)格式:格式:MOV AH,1 INT21H功能:接受从键盘输入字符的功能:接
9、受从键盘输入字符的ASCII码送入寄存器码送入寄存器AL中,中,并送显示器显示。并送显示器显示。2单字符显示(单字符显示(2号调用)号调用)格式:格式:MOV DL,待显示字符的,待显示字符的ASCII码码 MOV AH,2 INT 21H功功能能:将将DL寄寄存存器器中中的的字字符符送送显显示示器器显显示示,如如果果DL中中为为CTRL+BREAK的的ASCII码,则退出。码,则退出。第4章 程序设计方法3打印输出(打印输出(5号调用)号调用)格式:格式:MOV DL,待打印字符的,待打印字符的ASCII码码 MOV AH,5 INT21H功能:将功能:将DL寄存器中的字符送打印机打印。寄存
10、器中的字符送打印机打印。4结束调用(结束调用(4CH号调用)号调用)格式:格式:MOV AH,4CH INT 21H功能:终止当前程序并返回调用程序。功能:终止当前程序并返回调用程序。第4章 程序设计方法5显示字符串(显示字符串(9号调用)号调用)格式:格式:LEADX,待显示字符串首偏移地址,待显示字符串首偏移地址 MOVAH,9 INT21H功能:将当前数据区中以功能:将当前数据区中以结尾的字符串送显示器显示。结尾的字符串送显示器显示。6字符串输入(字符串输入(10号调用)号调用)格式:格式:LEADX,缓冲区首偏移地址,缓冲区首偏移地址 MOVAH,10 INT21H功功能能:从从键键盘
11、盘上上输输入入一一字字符符串串到到用用户户定定义义的的输输入入缓缓冲冲区区中中,并并送送显显示器显示。示器显示。第4章 程序设计方法10号系统功能调用的输入缓冲存储区的定义号系统功能调用的输入缓冲存储区的定义缓冲区名缓冲区名 DB 缓冲区大小缓冲区大小 ;规定输入缓冲区的大小规定输入缓冲区的大小 DB 0 ;实际输入字符的个数实际输入字符的个数 DB 缓冲区大小缓冲区大小 DUP(0);键盘输入的字符存放在该输入缓冲区中键盘输入的字符存放在该输入缓冲区中例:例:BUF DB 80 DB 0 DB 80 DUP(0)第4章 程序设计方法DATASEGMENTSTRDB 0DH,0AH,Examp
12、le of string display!DATAENDSSTACK SEGMENT STACKDB100 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK【例例】若要在屏幕上显示字符串若要在屏幕上显示字符串“Example of string display!”,则程序如下:,则程序如下:第4章 程序设计方法BEGIN:MOV AX,DATAMOV DS,AXLEA DX,STRMOV AH,9INT21HMOV AH,4CH INT21HCODEENDSEND BEGIN第4章 程序设计方法DATA SEGMENTINF
13、O1 DB0DH,0AH,INPUT STRING:INFO2 DB0DH,0AH,OUTPUT STRING:BUFA DB81 DB?【例例】从键盘上输入一串字符到输入缓冲区,然后从键盘上输入一串字符到输入缓冲区,然后将输入的字符串在显示器上以相反的顺序显示。将输入的字符串在显示器上以相反的顺序显示。第4章 程序设计方法 DB80 DUP(0)BUFB DB81 DUP(0)DATA ENDSSTACKSEGMENT STACK DB200 DUP(0)STACKENDSCODE SEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATA
14、MOV DS,AX第4章 程序设计方法 LEADX,INFO1MOVAH,9 ;9号调用,显示输入提示信息号调用,显示输入提示信息INT21HLEADX,BUFAMOVAH,10 ;10号号调调用用,键键盘盘输输入入字字符符串串到到缓缓 冲区冲区BUFAINT21HLEASI,BUFA+1 MOVCH,0 ;取字符长度取字符长度CX MOVCL,SIADDSI,CX ;SI 指向字符串尾部指向字符串尾部LEADI,BUFB ;DI指向字符串变量指向字符串变量BUFB第4章 程序设计方法NEXT:MOVAL,SI MOVDI,AL DECSI INCDI LOOP NEXT MOVBYTE PT
15、R DI,LEADX,INFO2 MOVAH,9 ;9号调用,显示输出号调用,显示输出提示信息提示信息 INT21H第4章 程序设计方法LEADX,BUFBMOVAH,9 ;反向显示字符串;反向显示字符串INT21HMOVAH,4CHINT21HCODEENDSEND START第4章 程序设计方法4.4 分支程序设计分支程序设计4.4.1 控制转移类指令控制转移类指令4.4.2 分支程序设计分支程序设计*4.4.3 用跳转表实现多分支程序设计用跳转表实现多分支程序设计第4章 程序设计方法4.4.1 控制转移类指令控制转移类指令1 1、无条件转移指令无条件转移指令2 2、条件转移指令条件转移指
16、令第4章 程序设计方法1、无条件转移指令、无条件转移指令段内转移段内转移:指在同一代码段的范围内进行转移,只需要改变指在同一代码段的范围内进行转移,只需要改变IP寄存器的内容。一般有三种用法。寄存器的内容。一般有三种用法。(1)段内直接短转移)段内直接短转移格式:格式:JMP SHORT 标号名标号名(2)段内直接转移)段内直接转移格式:格式:JMP 标号名标号名;该标号的属性为近标号该标号的属性为近标号(3)段内间接转移)段内间接转移格式:格式:JMP CX ;将将(CX)寄存器的内容送寄存器的内容送IP寄存器寄存器 JMP WORD PTR 1234H ;将字存储单元将字存储单元1234H
17、中的内容送中的内容送IP寄存器寄存器第4章 程序设计方法段间转移段间转移:指要转移到另一个代码段去执行程序,此时不指要转移到另一个代码段去执行程序,此时不仅需要改变仅需要改变IP寄存器中的内容,还要修改寄存器中的内容,还要修改CS段寄存器的内段寄存器的内容才能达到转移的目的,因此段间转移需要修改两个寄存器容才能达到转移的目的,因此段间转移需要修改两个寄存器中的内容。一般有两种用法。中的内容。一般有两种用法。(1)段间直接转移)段间直接转移格式:格式:JMP FAR PTR 标号名标号名 ;该标号具有远属性该标号具有远属性(2)段间间接转移)段间间接转移格式:格式:JMP DWORD PTR 1
18、234H ;将双字存储单元的低字内容送将双字存储单元的低字内容送IP寄存器,寄存器,双字存储单元的高字内容送双字存储单元的高字内容送CS寄存器寄存器 第4章 程序设计方法 简单条件转移指令简单条件转移指令 无符号数条件转移指令无符号数条件转移指令 有符号数条件转移指令有符号数条件转移指令 判断判断CXCX的值为的值为0 0则转移指令则转移指令它们都有通用的语句格式和功能。它们都有通用的语句格式和功能。语句格式:语句格式:标号:标号:操作符操作符 短标号短标号功能:如果条件满足,则(功能:如果条件满足,则(IPIP)位移量)位移量IPIP。2 2、条件转移指令、条件转移指令第4章 程序设计方法共
19、有共有10条指令,根据五个标志位条指令,根据五个标志位ZF、SF、OF、PF和和CF的的两种状态(两种状态(0或或1)分别进行转移。)分别进行转移。(1)JE/JZ ;ZF=1则转移,测试前次操作结果是否等于则转移,测试前次操作结果是否等于0 JNE/JNZ ;ZF=0则转移,测试前次操作结果是否不等于则转移,测试前次操作结果是否不等于0(2)JS ;SF=1则转移,测试前次操作结果是否为负数则转移,测试前次操作结果是否为负数 JNS ;SF=0则转移,测试前次操作结果是否为正数则转移,测试前次操作结果是否为正数(3)JO ;OF=1则转移,测试前次操作结果是否有溢出则转移,测试前次操作结果是
20、否有溢出 JNO ;OF=0则转移,测试前次操作结果是否没有溢出则转移,测试前次操作结果是否没有溢出简单条件转移指令简单条件转移指令第4章 程序设计方法(4)JC ;CF=1则转移则转移,测试前次操作结果是否有进(借)位测试前次操作结果是否有进(借)位 JNC ;CF=0则转移则转移,测试前次操作结果是否无进(借)位测试前次操作结果是否无进(借)位(5)JP ;PF=1则转移则转移,测试前次操作结果中测试前次操作结果中1的个数是否为偶数的个数是否为偶数 JNP ;PF=0则转移则转移,测试前次操作结果中测试前次操作结果中1的个数是否为奇数的个数是否为奇数【例例】下面程序段测试下面程序段测试AX
21、的低四位是否全的低四位是否全0,如果均是如果均是0,使,使CX=0,否则使否则使CX=-1。MOV CX,-1 TEST AX,000FH JNZ NEXT MOV CX,0NEXT:第4章 程序设计方法无符号数条件转移指令无符号数条件转移指令无符号数条件转移指令往往跟在比较指令之后,根据运算结果设置的无符号数条件转移指令往往跟在比较指令之后,根据运算结果设置的条件标志状态确定转移方向。这类指令视比较对象为无符号数。根据条件标志状态确定转移方向。这类指令视比较对象为无符号数。根据不同状态设置了高于、高于等于、低于、低于等于四条指令。不同状态设置了高于、高于等于、低于、低于等于四条指令。(1)J
22、A/JNBE;当;当CF=0且且ZF=0时转移。用于两个无符号数时转移。用于两个无符号数a、b的的比较,若比较,若ab则条件满足实现转移。则条件满足实现转移。(2)JAE/JNB;当;当CF=0或或ZF=1时转移。用于两个无符号数时转移。用于两个无符号数a、b的的比较,若比较,若ab或或a=b则条件满足实现转移。则条件满足实现转移。(3)JB/JNAE;当;当CF=1且且ZF=0时转移。用于两个无符号数时转移。用于两个无符号数a、b的的比较,若比较,若ab则条件满足实现转移。则条件满足实现转移。(4)JBE/JNA;当;当CF=1或或ZF=1时转移。用于两个无符号数时转移。用于两个无符号数a、
23、b的的比较,若比较,若a=BXAX=BX,转移到,转移到NEXTNEXTXCHGXCHG AXAX,BX BX ;若;若AXBXAXb则条件满足实现转移。则条件满足实现转移。(2)JGE/JNL;当;当SF=OF或或ZF=1时转移。用于两个有符号数时转移。用于两个有符号数a、b的的比较,若比较,若ab或或a=b则条件满足实现转移。则条件满足实现转移。(3)JL/JNGE;当;当SF OF且且ZF=0时转移。用于两个有符号数时转移。用于两个有符号数a、b的比较,若的比较,若ab则条件满足实现转移。则条件满足实现转移。(4)JLE/JNG;当;当SF OF或或ZF=1时转移。用于两个有符号数时转移
24、。用于两个有符号数a、b的比较,若的比较,若a=BXAX=BX,转移到,转移到NEXTNEXTXCHGXCHG AXAX,BXBX;若;若AXBXAXBX,交换,交换NEXTNEXT:第4章 程序设计方法语句格式:语句格式:JCXZ JCXZ 短标号短标号功能:当功能:当CX=0CX=0时,则转移到标号所指出的地址处时,则转移到标号所指出的地址处执行。执行。判断判断CXCX的值为的值为0 0则转移指令则转移指令第4章 程序设计方法4.4.2 分支程序设计分支程序设计【例例】编写计算下面函数值的程序:编写计算下面函数值的程序:1X0Y=0X=0 -1X0设设输输入入数数据据为为X、输输出出数数据
25、据Y,且且皆皆为为字字节节变变量量。程程序序流程图如图流程图如图4.2所示。所示。程序如下:程序如下:第4章 程序设计方法图图4.2 分支运算分支运算程序流程图程序流程图第4章 程序设计方法DATASEGMENTX DB -10Y DB?DATAENDSSTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATA第4章 程序设计方法 MOVDS,AX CMPX,0;与;与0进行比较进行比较 JGEA1;X0转转A1 MOVY,-1;X 0时,时,-1Y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 流程 控制 语句 程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。