分支程序设计

发布时间:2024-02-23
这种程序的思路是先判断条件是否成立;若成立,转到转移指令指定的位置执行
例:从接口 03f 0h 中取数,若此数 >=90 ,则将 00h 送 03f 7h ,若此数 <90 ,则将 ffh 送接口 03f 3h 。程序如下:
mov dx , 03f 0h
in al , dx
cmp al , 90
jnc next1
mov al , 0ffh
jmp next2
next1 :
mov al , 00h
next2 :
mov dx , 03f 7h
out dx , al
hlt
分支程序根据条件是真或假决定执行与否
判断的条件是各种指令,如 cmp 、 test 等执行后形成的状态标志
转移指令 jcc 和 jmp 可以实现分支控制;还可以采用 masm 6.x 提供的条件控伪指令实现
单分支程序设计
条件成立跳转,否则顺序执行分支语句体;注意选择正确的条件转移指令和转移目标地址
cmp ax,0
jns nonneg
; 分支条件: ax ≥ 0
neg ax
; 条件不满足,求补
nonneg: mov result,ax
; 条件满足
例:计算 ax 的绝对值
双分支程序设计
条件成立跳转执行第 2 个分支语句体,否则顺序执行第 1 个分支语句体。注意第 1 个分支体后一定要有一个 jmp 指令跳到第 2 个分支体后
例 : 显示 bx 最高位
shl bx,1 ;bx 最高位移入 cf
jc one
;cf = 1 ,即最高位为 1 ,转移
mov dl,' 0'
;cf = 0 ,即最高位为 0 , dl ←' 0 '
jmp two ; 一定要跳过另一个分支体
one: mov dl, ' 1 ' ;dl ←' 1 '
two: mov ah,2
int 21h ; 显示
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 ; 显示
例 : 显示 bx 最高位
多分支程序设计
多个条件对应各自的分支语句体,哪个条件成立就转入相应分支体执行。多分支可以化解为双分支或单分支结构的组合例如:
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
ah=0
fuction0
y
n
ah=1
fuction1
y
n
ah=2
fuction2
y
n
地址表形成多分支
需要在数据段事先安排一个按顺序排列的转移地址表,输入的数字作为偏移量。因为只有 2 个字节 16 位偏移地址,所以偏移量需要乘 2
关键是要理解间接寻址方式 jmp 指令
.data
msg db 'input number(1~8):',0dh,0ah,'$'
msg1 db 'chapter 1 : ...',0dh,0ah,'$'
msg2 db 'chapter 2 : ...',0dh,0ah,'$‘
...
msg8 db 'chapter 8 : ... ',0dh,0ah,'$'
table dw disp1,disp2,disp3,disp4
dw disp5,disp6,disp7,disp8
; 取得各个标号的偏移地址
例 : 数据段
start1: mov dx,offset msg ; 提示输入数字
mov ah,9
int 21h
mov ah,1 ; 等待按键
int 21h
cmp al,'1' ; 数字 < 1 ?
jb start1
cmp al,'8' ; 数字 > 8 ?
ja start1
and ax,000fh ; 将 ascii 码转换成数字
dec ax
shl ax,1 ; 等效于 add ax,ax
mov bx,ax
jmp table[bx]
; (段内)间接转移: ip ← [table+bx]
start2: mov ah,9
int 21h
.exit 0
disp1: mov dx,offset msg1 ; 处理程序 1
jmp start2
..
上一个:台式机机械硬盘多少钱
下一个:矮牵牛常见的三种繁殖方法

Acrel-2000电力监控系统在华兰生物二期项目的应用
成都漫花庄园玫瑰花节门票价格+优惠政策
梨灰色膏药病 梨病虫害
win10不显示视频缩略图的两种解决方法怎么办(win10不显示视频缩略图的两种解决方法有哪些)
抖音多少粉丝可以拍长视频赚钱(抖音多少粉丝能拍长视频)
云服务器哪家最便宜呢
注册公司营业执照需要缴税吗,注销一个空壳公司需要多少费用
norgrencw617n压力表(瑞士制造精准可靠的工业备件)
测试你是哪种“花草茶”气质美女
工程总承包企业组织机构的选择原则有哪些?