分支程序设计3.docVIP

  • 2
  • 0
  • 约 2页
  • 2017-06-08 发布于重庆
  • 举报
分支程序设计3

分支程序的设计 1.分支程序是依据判断条件是否满足来改变程序流向的程序。 2.实现程序分支的语句: ①比较语句 A.无符号数与有符号数的比较语句都用: CMP DST,SRC B.字符串比较语句: CMPSB或CMPSW C.逻辑比较语句: TEST DST,SRC D.有比较作用的其它语句: 运算语句以及移位语句一般都产生标志位, 因此这些语句除完成主要操作之外还起不到比较语句的作用,可跟随一条件转移语句来识别相应标志位,实现程序的分支。 ②条件转移语句: 条件转移语句都是段内的短转移,即转移语句与转向语句之间最大距离为+127或-128字节。超出范围则引起语法错误,但可借助无条件转移语句来实现。分为:全等识别、有符号识别 大于、小于 、无符号数识别 高于、低于 、其它识别 进位、溢出、奇偶、正负符号、计数零 。 ③无条件转移语句 相当于高级语言中的GOTO语句,可以转移到任何程序 代码段 的任何一个语句,分为:段内直接、段内间接、段间直接和段间间接。 3.分支程序设计举例: ①问题:判断键入字符是否为数字,直到输入字符’$’结束输入。并将输入的数字存入到变量NUMBER中,最后将变量NUMBER中的一串数字输出到屏幕上(输出Y的个数和数字的个数相同。) ②分析及算法:根据字符的ASCII编码是否在30H-39H之间做出判断。 4.源程序清单 NAME ZMSZ.ASM DATA11 SEGMENT ;数据段定义 NUMBER DB 100 DUP DATA11 ENDS SEEG SEGMENT STACK STACK ;堆栈段定义 STA DW 100 DUP SSEG ENDS ;堆栈段定义结束 LAA SEGMENT CODE ;代码段定义 ASSUME CS:LAA,SSEG:SS,DS:DATA1 START: MOV AX,DATA1 ;段寄存器装填 MOV DS,AX XOR BX,BX MOV SI,0 LA1: MOV AH,07H ;这两条语句完成从键盘输入一个字符, INT 21H ;字符的ASCII码值存入AL寄存器 CMP AL, $ JZ LA4 COMP AL,30H JB LA3 COMP AL,39H JA LA3 MOV NUMBER[BX],AL INC BX LA2: MOV AH,02H ;这两条语句完成从屏幕输出一个字符, INT 21H ;字符的ASCII码值预先存入DL寄存器 JMP LA1 LA3: MOV DL, N JMP LA2 LA4: MOV DL,10 ;以下6条语句完成从屏幕输出回车换行 MOV AH,02H MOV DL,13 MOV AH,02H INT 21H LA5: MOV DL,NUMBER[SI] MOV AH,02H ;这两条语句完成从屏幕输出一个字符, INT 21H ;字符的ASCII码值预先存入DL寄存器 INC SI COMP BX, SI JNZ LA5 MOV AH,4CH INT 2lH LAA ENDS ENDS STRAT 5.上机编辑、汇编、连接形成.exe文件。 6.在DOS下执行并输入数字或字母来检验程序的正确性。

文档评论(0)

1亿VIP精品文档

相关文档