• 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>    分支程序的基本思想是根据逻辑判断的结果来形成程序的分支,如图,若A成立,则执行P1;否则执行P2。

    分支程序有两种基本结构,如图所示。

    

    它们分别相当于高级语言中的IF_THEN_ELSE语句和CASE语句,适用于要求根据不同条件作不同处理的情况。IF_THEN_ELSE语句可以引出两个分支,CASE语句则可以引出多个分支,不论哪一种形式,它们的共同特点是:运行方向是向前的,在某一种特定条件下,只能执行多个分支中的一个分支。

    

    例1  试编写程序段,实现符号函数。

    分析:变量X的符号函数可表示为:

    程序可通过对符号标志的判别来确定执行哪一分支。

    START: MOV AX,BUFFER    ;(BUFFER)=X

    OR  AX,AX

    JE  ZERO           ;X=0,则转ZERO

    JNS  PLUS            ;X为正数,则转PLUS

    MOV BX,0FFFFH     ;X为负数,则-1送BX

    JMP  CONT1

    ZERO:  MOV BX,0

    JMP  CONT1

    PLUS:  MOV BX,1

    CONT1:   ……

    例2  利用表实现分支。根据AL中各位被置位情况,控制转移到8个子程序P1~P8之一中去。转移表的结构如表1所示。

    分析:对于这种程序关键要找出每种情况的转移地址,从图中可见表地址=表基地址+偏移量, 而偏移量可由AL各位所在位置*2求得。

表1 子程序R1—R8的入口地址表

P1

子程序R1的入口偏移地址

P2

子程序R2的入口偏移地址

P3

子程序R3的入口偏移地址

……
……

…….
……

P7

子程序R7的入口偏移地址

P8

子程序R8的入口偏移地址

    DATA  SEGMENT

    BASE  DW  SR0,SR1,SR2,SR3,   

    SR4,SR5,SR6,SR7

    DATA  ENDS

    CODE  SEGMENT                        

    ASSUME CS:CODE,DS:DATA,ES:DATA

    BEGIN:    PUSH DS

    XOR AX,AX

    PUSH  AX

    MOV AX,DATA                         

    MOV DS,AX                        

    LEA BX,BASE ;表头送BX

    IN  AL,PORT               

    GETBIT: RCR   AL,1    ;右移一位

    JC    GETAD  ;移出位是1?

    INC  BX

    INC   BX     ;修改指针

    JMP  GETBI    

    GETAD: JMP  WORD PTR[BX] ;实现散转

    CODE  ENDS                                  

    END  BEGIN

    例3  将内存中某一区域的原数据块传送到另一区域中。

    分析:这种程序若源数据块与目的数据块之间地址没有重叠,则可直接用传送或串操作实现;若地址重叠,则要先判断源地址+数据块长度是否小于目的地址,若是,则可按增量方式进行,否则要修改指针指向数据块底部,采用减量方式传送。程序如下:

    DATA  SEGMENT

    STR   DB 1000DUP(?)

    STR1  EQU STR+7

    STR2  EQU STR+25

    STRCOUNT EQU 50

    DATA  ENDS

    STACK  SEGMENT PARA  STACK  ‘STACK’

    STAPN  DB  100DUP(?)

    STACK  ENDS

    CODE  SEGMENT

    ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

    GOO   PROC

    PUSH DS

    SUB  AX,AX

    PUSH AX

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    MOV AX,STACK

    MOV SS,AX

    MOV CX,STRCOUNT

    MOV SI,STR1

    MOV DI,STR2

    CLD

    PUSH SI

    ADD SI,STRCOUNT-1

    CMP SI,DI

    POP  SI

    JL  OK

    STD

    ADD SI,STRCOUNT-1

    ADD DI,STRCOUNT-1

    OK:  REP  MOVSB

    RET

    GOO  ENDP

    CODE  ENDS

    END GOO                  

    

    

    cseg  segment

    main proc  near

    assume cs:cseg, ds:data

    start:

    mov  ax,dseg

    mov  ds,ax

    

    

    exit:  mov  ax,4c00h

    int  21h

    main  endp

    cseg  ends

    end  start

  &

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

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

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

相关文章

  • 2017-06-28汇编源码系列之dosmac
  • 2017-06-17打印I/O
  • 2017-06-28汇编源码系列之calc
  • 2017-06-28汇编教程:管道
  • 2017-06-28Casl汇编语言辅导
  • 2017-06-178086的寻址方式
  • 2017-06-28MASM的反反汇编技术
  • 2017-06-28WIN98SE硬盘主引导记录代码反汇编分析
  • 2017-06-288086/88的内存寻址方式
  • 2017-06-28汇编源代码之一个有趣的打字游戏

文章分类

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

最近更新的内容

    • 子程序的嵌套
    • 汇编仿FDISK及PQMAGIC列出分区逻辑盘符的prw.asm实现
    • 汇编教程之超类化
    • 存储单元的地址和内容
    • 汇编修改文件操作
    • 比较指令 CMP
    • 程序开始和结束伪操作
    • 子程序调用指令
    • 汇编源代码之简单密码输入
    • 汇编语言中“[]”的用法

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

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