现代微机原理与接口技术_第1页
现代微机原理与接口技术_第2页
现代微机原理与接口技术_第3页
现代微机原理与接口技术_第4页
现代微机原理与接口技术_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

第四章程序设计技巧汇编语言的程序设计是使用计算机系统的指令或伪指令语句,组成求解不同问题,实现不同算法所需的完整序列的一个工作过程。汇编语言的程序设计方法一般包含顺序、分支、循环、子程序和宏等基本方法。进一步学习指令、伪指令的使用。掌握汇编语言顺序、分支、循环程序的设计方法。子程序的设计与调用。宏结构的设计与调用。中断程序的设计。I/O程序的设计。模块程序的设计。4.1顺序程序结构形式顺序程序又称作简单程序。指无分支、无循环、无转移的程序。它一般是根据算法编出的完全顺序执行的程序。虽然实际应用的程序比它复杂的多,但它是构成程序的基础,它的质量直接影响整个程序的质量,为此如何充分利用硬件资源,合理地选择指令是编制简单程序,提高整个程序质量的关键。 .MODELSMALL .STACK256 .DATA BCD_BUFDB79H ASC_BUFDB2DUP(?) .CODE .STARTUP MOVAL,BCD_BUF MOVBL,AL MOVCL,4 SHRAL,CL ADDAL,30H MOVASC_BUF,AL ANDBL,0FH ADDBL,30H MOVASC_BUF+1,BL .EXIT0 END

4.2分支程序

分支结构就是按照某种判断条件,从两个或两个以上的程序段中选择一个执行。分支结构具有两种形式:双分支结构和多分支结构条件控制伪指令

条件控制伪指令的格式

.IF条件表达式 .分支体1 [.ELSEIF条件表达式 .分支体2~N-1 .] [.ELSE . 分支体N .] .ENDIF .MODELSMALL .STACK .DATA XDW-78 YDW7865 RESULTDW? .CODE .STARTUP MOVAX,X SUBAX,Y JGEGREATERZERO;AX≥Y?,跳转 NEGAX;求补,得到副值 GREATERZERO: MOVRESULT,AX .EXIT0 END

.MODELSMALL .STACK .DATA _ASBYTE39;有符号方式定义 _BSBYTE-43H _CSBYTE110 TAGDB? .CODE .STARTUP MOVAL,_B IMULAL MOVBX,AX;BX←B2 MOVAL,_A IMUL_C MOVCL,2 SALAX,CL;AX←4AC .IFSWORDPTRBX>=AX MOVTAG,0 .ELSEIF MOVTAG,1 .ENDIF .EXIT0END双分支程序设计

通常双分支程序是根据条件是否成立,从两个分支程序中选择其中一个分支程序去执行。双分支程序设计可用一条条件转移指令来实现,也可以用.IF-.ELSEIF-.ENDIFT条件控制伪指令来设计,这是分支程序设计的最基本方法。(1)产生条件 在进行条件判断之前,必须要有先行指令产生条件。产生条件的指令为执行结果影响标志位的指令,如算术运算指令、位操作指令、串比较串扫描指令等,最常用的指令为CMP/TEST/AND/SCASB/CMPSB。(2)判断条件 判断条件用条件转移指令JZ/JNZ、JC/JNC等共计19条,我们应选择合适的条件转移指令之一完成。(3)定向 按条件成立与否确定转移方向。(4)标号 对每个分支程序,一定要给出标号,以确定分支后的转移地址。 注意:根据条件成立与否,两个分支之程序段,只能现在选择其中之一执行。 .MODELSMALL .STACK .DATA XDB56 YDB78 ZDB99 F1DB? .CODE .STARTUP MOVAL,X MOVBL,AL ADDAL,Y JNCDO1 ;若无进位则转DO1 ADDBL,Z JMPQUIT DO1: SUBBL,Z MOVF1,BL QUIT: .EXIT0 END4.3循环程序

循环程序一般包括以下五个部分:

(1)初始化部分:为循环做准备工作。如设置地址指针(BX/SI/DI/BP),计数器(CL/CH/CX)及数据寄存器(AL/AX/DX)的初值等。

(2)循环工作部分:即循环体部分。它是循环程序的主体,用来完成循环的基本操作。

(3)修改部分:为循环参数做必要的修改,如地址指针(BX/SI/DI/BP),计数器(CL/CH/CX)的值,为下一次执行循环体做好准备。(4)循控部分:根据循环条件来判断、控制循环的继续或终止。(5)结束部分:主要是对循环的结果进行必要的处理,如将结果送入某一寄存器或内存区域。循环控制指令及伪指令

循环控制指令

LOOP/LOOPZ/LOOPE/LOOPNZ/LOOPNE/JCXZ注意:在执行此类重复控制指令前必须把重复次数送入寄存器CX中串操作指令高级循环控制伪指令其它循环控制指令 DEC和JZ/JNZ指令配合。 CMP和JZ/JNZ;JC/JNC;JO/JNO等指令配合。 AND/OR/XOR/TEST和JZ/JNZ;JC/JNC;JO/JNO等 指令配合。循环程序设计方法计数控制法。 这种程序设计方法直观,方便,但必须在循环次数已知的条件下才能采用。计数控制法有正计数控制法和倒计数控制法,在汇编语言程序设计中一般采用倒计数控制法来设计程序。求1~100之间的累加和,放在sum字单元

.MODELSMALL .STACK .DATA SUMDW? .CODE .STARTUP XORAX,AX MOVCX,100 NEXT: ADDAX,CX LOOPNEXT MOVSUM,AX .EXIT0 END条件控制型循环程序设计 在实际工作中,有时循环次数无法事先确定,但循环

温馨提示

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

评论

0/150

提交评论