- 1、本文档共199页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机计算机原理与应用课件-第3章
程序如下: DATA SEGMENT ADDR DW X1, X2 RESULT DW DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV AX, ADDR ADD AX, ADDR+2 MOV RESULT, AX MOV AH, 4CH INT 21H CODE ENDS END START 当X1=1C84H, Y=2F5BH时,运行结果为: X1=1C84H, X2=2F5BH RESULTS=4BDFH 2.分支程序 计算机可根据不同条件进行逻辑判断,从而选择不同的程序流向。程序的流向是由CS和IP(EIP)值决定的,当程序的转移仅在同一段内进行时,只需修改偏移地址IP(EIP)的值;如果程序的转移是在不同段之间进行的,则段基址CS和偏移地址IP(EIP)值均需要修改。 1.分支程序的结构形式 分支程序结构有两种形式:双分支结构和多分支结构。 (1)双分支结构 双分支结构的程序流程如图 这种结构根据条件满足或不满足可分别执行 两种分支程序段。条件满足时执行分支程序 段2,条件不满足时则执行分支程序段1。 (2)多分支结构 多分支结构的程序流程如图所示。 多分支结构可以有多个分支,适用于有多种条件的情况下,根据不同的条件进行不同的处理。多分支结构也称为CASE结构。 无论是双分支结构还是多分支结构,其共同特点是:在某一种确定的条件下,只能执行一个分支程序段,而程序的分支要靠条件转移指令来实现。 2.分支程序设计 分支程序设计要领如下。 ① 首先根据处理的问题用比较、测试、算术运算、逻辑运算等方式,使标志寄存器产生相应的标志位。例如,比较两个单元地址的高低、两个数的大小,测试某个数据是正还是负,测试数据的某位是“0”还是“1”等,将处理的结果反映在标志寄存器的CF, ZF, SF, DF和OF位上。 ② 根据转移条件选择适当的转移指令。通常一条条件转移指令只能产生两路分支,因此要产生 n路分支需n-1条条件转移指令。 ③ 各分支之间不能产生干扰,如果产生干扰,可用无条件转移语句进行隔离。 【例】在以ADDR为首地址的内存单元中,存放着两个字节类型的无符号数x1和x2,比较这两个数的大 小,并将大数存放在内存RESULT单元中。 解题思路:比较两个无符号数的大小,可用CMP指令进行,并利用借位标志CF来判断大小。程序流程如图所示。 程序如下。 DATA SEGMENT ADDR DB X1, X2 RESULT DB DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX 若X1=0FFH, X2=3BH,则运行结果为: X1=0FFH, X2=3BH RESULT: FFH MOV AL, ADDR ; AX←X1 CMP AL, ADDR+1 ; X1-X2 JNC LOOP1 ; 若X1≥X2→LOOP1 MOV AL, ADDR+1 ; 若X1<X2, AL←X2 LOOP1: MOV RESULT, AL ; 将大数存入RESULT单元中 MOV AH, 4CH INT 21H CODE ENDS END START 假设任意给定x值,存放在内存RS1单元中,求出函数y的值,存放在内存RS2单元中。程序流程如图所示。 程序如下 DATA SEGMENT RS1 DB X ; 存放自变量X RS2 DB ; 函数Y值的存储单元 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS,
文档评论(0)