• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 分支程序设计

分支程序设计

作者:汇编爱好者 字体:[增加 减小] 来源:互联网 时间:2017-06-17

汇编爱好者通过本文主要向大家介绍了分支程序设计实验报告,分支结构程序设计,分支程序设计实验,汇编分支程序设计,汇编语言分支程序设计等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>


 这种程序的思路是先判断条件是否成立;若成立,转到转移指令指定的位置执行

例:从接口 03F 0H 中取数,若此数 >=90 ,则将 00H 送 03F 7H ,若此数 <90 ,则将 FFH 送接口 03F 3H 。程序如下:

</div>

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

</div>

分支程序根据条件是真或假决定执行与否
判断的条件是各种指令,如 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
..

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分支程序设计
  • 分支程序设计

相关文章

  • 2017-06-28汇编源码系列之chips
  • 2017-06-17DOS内部结构与BIOS的功能
  • 2017-06-28消息钩子使用教程
  • 2017-06-28汇编源码系列之gameport
  • 2017-06-28debug命令详解
  • 2017-06-28鼠标控制CD-Audio播放程序
  • 2017-06-28汇编指令与机器码的相互转换
  • 2017-06-17汇编程序功能
  • 2017-06-28汇编仿FDISK及PQMAGIC列出分区逻辑盘符的prw.asm实现
  • 2017-06-28用程序修改PE使其可显示一个消息框

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 汇编语言的艺术-观念正误(六)
    • 一个汇编hello world程序
    • 中断指令
    • 汇编源码系列之free
    • 汇编源码系列之hdr
    • 什么是虚拟机管理器
    • 内存映射文件原理及实例
    • 结构化程序方法在汇编语言中的应用
    • 循环程序设计
    • 通用控件详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有