例题显示BX最高位-3 mov dl,"0′;DL←′0′ sh1bx,1;BX最高位移入CF jnc two;CF=0,最高位为0,转移 moⅴd1,1′;CF=1,最高位为1,DL←11′ two: moy ah. 2 int 21h 显示 双分支程序可以改为单分支程序
例题 显示BX最高位-3 mov dl,’0’ ;DL←’0’ shl bx,1 ;BX最高位移入CF jnc two ;CF=0,最高位为0,转移 mov dl,’1’ ;CF=1,最高位为1,DL←’1’ two: mov ah,2 int 21h ;显示 双分支程序可以改为单分支程序
例4.3判断有无实根-1/2 startup mov al. b imul al moⅴbx,ax;BX中为b2 mov al. a imul 4 imu1cx;AX中为4ac(DX无有效数据)
例4.3 判断有无实根-1/2 .startup mov al,_b imul al mov bx,ax ;BX中为b 2 mov al,_a imul _c mov cx,4 imul cx ;AX中为4ac(DX无有效数据)
例4.3判断有无实根-2/2 cmp bx,ax;比较二者大小 Jge yes;条件满足? mov tag, O 第一分支体:条件不满足,tag←0 jmp done;跳过第二个分支体 yes: mov tag, 1 第二分支体:条件满足,tag←1 done:, exit O
例4.3 判断有无实根-2/2 cmp bx,ax ;比较二者大小 jge yes ;条件满足? mov tag,0 ;第一分支体:条件不满足,tag←0 jmp done ;跳过第二个分支体 yes: mov tag,1 ;第二分支体:条件满足,tag←1 done: .exit 0
例题单分支和双分支 ;寄存器AL中是字母Y或y,则令AH=0;否则 令AH=-1 cmpa1,"Y′;AL是大写Y否? Jz next 是,转移 cmpa1,′y′;AL是小写y否? Jz next 是,转移 moy ah,-1;不是Y或y,则AH=-1,结束 imp done 定要跳过另一个分支体 next: mov ah,0;是Y或y,则AH=0,结束 done
;寄存器AL中是字母Y或y,则令AH=0;否则 令AH=-1 cmp al,’Y’ ;AL是大写Y否? jz next ;是,转移 cmp al,’y’ ;AL是小写y否? jz next ;是,转移 mov ah,-1 ;不是Y或y,则AH=-1,结束 jmp done ;一定要跳过另一个分支体 next: mov ah,0 ;是Y或y,则AH=0,结束 done: ... 例题 单分支和双分支
第4章 多分支程序设计 图示 >多个条件对应各自的分支语句体,哪个条 件成立就转入相应分支体执行。多分支可以 化解为双分支或单分支结构的组合,例如: or ah, ah ;等效于 cmp ah,0 jz function0;ah=0,转向 function0 dec ah 等效于 cmp ah,1 jz function1;ah=1,转向 function1 dec ah 等效于 cmp ah,2 jz function2;ah=2,转向 function2
第 4 章 多分支程序设计 ➢多个条件对应各自的分支语句体,哪个条 件成立就转入相应分支体执行。多分支可以 化解为双分支或单分支结构的组合,例如: or ah,ah ;等效于cmp ah,0 jz function0 ;ah=0,转向function0 dec ah ;等效于cmp ah,1 jz function1 ;ah=1,转向function1 dec ah ;等效于cmp ah,2 jz function2 ;ah=2,转向function2 图示