微机原理(第三篇 程序设计2).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BEGIN: MOV AX,DATA MOV DS,AX LEA BX,SQTAB MOV AL,SUR ;AL=X XLAT SQTAB MOV DIS,AL MOV AH,4CH INT 21H CODE ENDS END BEGIN 利用系统功能调用 INT 21H的4CH号子功能返回DOS 3.3.3 分支结构程序设计 分支结构程序的基本思想是根据某些条件和状态来控制程序下一步的走向。首先执行能影响状态的指令,如算术逻辑运算指令、移位指令或位操作指令,然后用条件转移类指令对各种状态标志进行判断,进而转移形成分支。 设计分支结构程序一般有两种方法: ? 比较/测试分支结构法 ? 跳转表分支结构法 1. 比较/测试分支结构法 采用比较指令CMP和测试指令TEST,产生相应的状态标志,选择适当的条件转移指令,实现不同情况的分支转移。一条转移指令产生两路分支,n 条转移指令可产生 n + 1条分支。 = 0? BX= 0 BX= 1 BX= –1 Y Y 0? 例1 实现符号函数。 1 X 0 Y= 0 X = 0 –1 X 0 根据上述要求的程序段为: START: MOV AX,BUFFER;取变量X OR AX,AX ;产生状态标志 JE ZERO ;X = 0 则转移 JNS PLUS ;X = 1 则转移 MOV BX,0FFFFH;BX= – 1 JMP CONT1 ;转向出口 ZERO: MOV BX,0 JMP CONT1 PLUS: MOV BX,1 CONT1: …… 2. 跳转表分支结构法 当分支数较多时,将各个分支的入口地址组成跳转表,再根据某个变量的不同取值情况,从表中取出相应的入口地址,实现各分支转移。 例2: 根据AL中各位被置位情况,控制转移到8个子程序P1~P8其中之一。 条件1成立? P1 P2 Pn+1 Y Y 条件2成立? 条件n成立? ┇ Y Pn 子程序的P8入口地址 SR7 子程序的P7入口地址 SR6 … … … … … … 子程序的P3入口地址 SR2 子程序的P2入口地址 SR1 子程序的P1入口地址 SR0 子程序分支转移跳转表 STACK SEGMENT DB 100 DUP(?) STACK ENDS DATA SEGMENT BASE DW SR0,SR1, SR2,SR3,SR4, SR5,SR6,SR7 VALX DB ? DATA ENDS 解:具体程序如下: CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA BX,BASE IN AL,PORT GETBIT:RCR AL,1 JC GETAD INC BX INC BX JMP GETBIT GETAD:JMP WORD PTR[BX] RET CODE ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX,DATA MOV DS,AX MOV AL,VALX MOV AH,0 DEC AX SAL AX,1 LEA BX,BASE ADD BX,AX JMP WORD PTR[BX] SR0: … … JMP GETAD SR1: …… JMP GETAD ……

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档