汇编语言程序设计基础课件
例:JMP NEXT1 若NEXT1为本代码段内的语句标号,则为段内转移,否则为段间转移。 条件转移指令 条件转移指令一般以某个标志位的状态作为转移判断的依据,具体使用时,该语句前面一般是算术运算或逻辑运算指令。 (1)条件转移指令很多,但因学时限制,只要求熟练掌握JZ、JNZ的使用。 JZ ZF标志为1转移,即结果为0转移 JNZ ZF标志为0转移,即结果不为0转移 (2)条件转移指令皆为段内短转移,转移范围为-128-127 5.2单分支程序设计 一、一般结构 条件 程序段A N Y 条件不成立时程序段A被执行。 二、单分支结构实现举例 例:实验二:实验内容1. 已知X内存单元,若该内存单元的值为奇数,其值加1. DATA SEGMENT X DB 99 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX TEST X,01H JZ NEXT1 INC X NEXT1: MOV AH,4CH INT 21H CODE ENDS END START 5.3 双分支程序设计 条件 程序段1 程序段2 Y N 例:例:实验二:实验内容2. 比较A,B单元的值若相同,则将“=”号送至DL,否则将“#”送至DL. DATA SEGMENT A DB 23H B DB 25H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,A CMP AL,B JZ NEXT1 MOV DL,# JMP NEXT2 NEXT1:MOV DL,= NEXT2:MOV AH,4CH INT 21H CODE ENDS END START 5.4.1 逻辑分解法多分支程序设计 逻辑分解法,就是对上图采用逻辑等效的方法,按条件的先后分解成下图所示的一串 双分支结构,然后使用双分支的方法来进行程序设计。 条件1 条件2 条件N 程序段1 程序段2 程序段N 程序段N+1 Y Y Y N 例:例:实验二:实验内容3. 根据NUM中的值(1或2或3)输出对应的字符( 1或2或3) DATA SEGMENT NUM DB 3 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,NUM CMP AL,1 JZ NEXT1 CMP AL,2 JZ NEXT2 CMP AL,3 JZ NEXT3 NEXT1:MOV DL,31H JMP EXIT NEXT2:MOV DL,32H JMP EXIT NEXT3:MOV DL,33H JMP EXIT EXIT:MOV AH,2 INT 21H ;输出DL中的字符。 MOV AH,4CH INT 21H CODE ENDS END START 注:程序中输出字符属于DOS功能调用, 其相关知识将在第8章讲解。 第6章 循环指令与循环结构程序设计 1、掌握循环控制指令 2、掌握单循环结构的程序实现方法 3、掌握多重循环结构的实现方法 6.1.2 专门的循环控制指令 (1)LOOP (2)LOOPZ (3)LOOPNZ (1)LOOP 格式:LOOP LABEL 功能:先CX-1 CX,然后判断CX是否为0,若CX不等于0,转至LABEL.若等于0,不转,程序顺序向下执行,循环结束。 也就是说,在这里: DEC CX LOOP LABEL 相当于 JNZ LABEL (2)LOOPZ 格式:LOOPZ LABEL 功能:先CX-1 CX,然后判断,若CX不等于0 且 ZF=1,转至LABEL.否则,不转,程序顺序向下执行,循环结束。 也就是说: LOOPZ循环的条件是多重条件: ①CX不等于0 ②ZF标志位是1 (3)LOOPNZ 格式:LOOPNZ LABEL 功能:先CX-1 CX,然后判断CX是否为0,若CX不等于0 且 ZF=0,转至LABEL.否则,不转,程序顺序向下执行,循环结束。 也就是说: LOOPNZ循环的条件也是多重条件: ①CX不等于0 ②ZF标志位是0 小结: (1)LOOP、LOOPZ、LOOPNZ指令默认的循环变量皆是CX
原创力文档

文档评论(0)