- 1、本文档共191页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于微机原理7_汇编语言程序设计08
7.1 汇编语言程序设计的一般步骤 汇编语言程序设计一般有以下几个步骤:p146 1.分析问题,确定算法 2.绘制流程图 3.根据流程图编制程序 4.调试程序 7.1.1 流程图 1.流程图的概念 流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。 7.1.2 程序结构 基本程序结构: 顺序结构 循环结构 分支结构 子程序结构 复合结构:多种程序结构的组合 7.2 程序设计 7.2.1顺序程序设计。 【例】试编写一程序计算以下表达式的值。 w=(v-(x*y+z-540))/x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图所示。 源程序如下: DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2 DUP(?) DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK START: MOV AX,DATA MOV DS,AX ;DATA→AX MOV AX,X IMUL Y ;(X)*(Y)→DX:AX MOV CX,AX MOV BX,DX ;(DX:AX)→(BX:CX) MOV AX,Z CWD ;(Z)符号扩展 ADD CX,AX ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX) SUB CX,540 SBB BX,0 ;(BX:CX)-540→(BX:CX) MOV AX,V CWD ;(V)符号扩展 SUB AX,CX SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX) IDIV X ;(DX:AX)/X MOV W,AX ;商→W MOV W+2,DX ;余数DX→W+2 MOV AH,4CH INT 21H CODE ENDS ;退出DOS 状态 END START 7.2.2分支程序设计 条件转移指令(JNZ,JC等)和无条件转移指令JMP用于实现程序的分支结构,JMP不测试条件,Jcc可根据条件是否成立决定转移到指定位置或不转移而顺序执行后续指令。由于条件转移指令不支持条件表达式,而是以当前标志位的状态为条件,故条件转移指令之前一定要安排设置标志位的指令,如加减法、比较、测试等指令。基本分支类型分为单分支和双分支。 1. 单分支类型 2.双分支程序 两个分支都有语句体,如何选择条件不重要。 流程图中分支体的位置就是程序的实际顺序,故分支语句体1最后一定要有一条JMP指令,跳过语句体2,转移到“后续操作”。 双分支举例:显示BX的最高位。 shl bx,1 jc one ;转分支体 mov dl,’0’ ;分支体1 jmp next ;转后续操作 One: mov dl,’1’ ;分支体2 next: mov ah,2 ;后续操作 int 21h 分支程序的其他问题 ⑴有些双分支问题可以先假设一种情况,把双分 支改成单分支问题。如上例,先假设BX最高位为0, 在分支外准备显示0;如最高位为0,即可直接跳到后 续操作;如最高位为1才需要执行分支体。 3.多分支程序 分支的嵌套形成多分支,嵌套形式多种多样。 例1:求符号函数 1 当 X0 Y= 0 当 X=0 -1 当 X0 例4-19(p149)数据块传送程序 DATA SEMENT STRG DB 1000 DUP (?) STG1 EQU STRG+7 STG2 EQU STRG+25 STRSE EQU 50 DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ STRN DB 100 DUP (?) STACK ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,ES:DATA,SS:STACK BBEGIN: MOV AX,DATA
文档评论(0)