• 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> 汇编后展开形成 :
  1    PUSH   AX
  1    PUSH   BX
  1    PUSH   CX
  1    PUSH   DX
汇编程序能根据条件把一段源程序包括在汇编语言程序内或者把它排除在外 , 这时就用到条件伪操作 , 条件汇编伪指令在汇编过程中,根据条件决定汇编的语句。格式:
IFxx 表达式 ; 满足,汇编分支语句体 1
分支语句体 1
[ ELSE ; 不满足,汇编分支语句体 2
分支语句体 2 ]
ENDIF ; 条件汇编结束
自变量必须在汇编程序第一遍扫后就成为确定的数值 . 条件伪操作中的 XX 表示条件如下 :
  IF expression :汇编程序求出表达式的值 , 如此值不为 0 则满足条件 .
  IFE expression : 如求出表达式的值为 0 则满足条件 .
  IFDEF symbol :如符号已在程序中定义 , 或者已用 EXTRN 伪操作说明该符号是在外部定义的 , 则满足条件 .
  IFNDEF symbol :如符号未定义或未通过 EXTRN 说明为外部符号则满足条件 .
 IFB : 如自变量为空则满足条件
  IFNB : 如自变量不为空则满足条件
  IFIDN , :如果字符串 和字符串 相同 , 则满足条件 .
  IFDIF , :如果字符串 和字符串 不相同 , 则满足条件 .
上述 IF 和 IFE 的表达式中可以使用关系操作符 EQ , NE , LT , LE , GT 和 GE 。如: IF 表达式 1 EQ 表达式 2 等。
条件伪操作可以用在宏定义体内 , 也可以用在宏定义体外,也允许嵌套任意次。
例 : 宏指令 MAX 把三个实参中的最大值放在 AX 中 , 而且使实参不同时产生不同的程序段 .
宏定义 :
   MAX   MACRO   K,A,B,C
         LOCAL   NEXT,OUT
         MOV     AX,A
         IF      K-1
         IF      K-2
         CMP     C,AX
         JLE     NEXT
         MOV     AX,C
         ENDIF
  NEXT:  CMP     B,AX
         JLE     OUT
         MOV     AX,B
         ENDIF
  OUT:
         ENDM
宏调用 :
         MAX     1,P
         MAX     2,P,Q
         MAX     3,P,Q,R
宏展开 :     
         MAX     1,P
   1     MOV     AX,P
   1 ??0001:
         MAX     2,P,Q
   1      MOV     AX,P
   1 ??0002:CMP   Q,AX
   1     JLE     ??0003
   1     MOV     AX,Q
1 ??0003:
MAX     3,P,Q,R
   1     MOV     AX,P
   1     CMP     R,AX
   1     JLE     ??0004
   1     MOV     AX,R
   1 ??0004:CMP   Q,AX
   1      JLE     ??0005
   1     MOV     AX,Q
   1 ??0005:
宏定义:
PDATA MACRO NUM
IF NUM LT 100 ;; 如果 num < 100 ,则汇编如下语句
DB NUM DUP(?)
ELSE ;; 否则,汇编如下语句
DB 100 DUP(?)
ENDIF
ENDM
宏调用:
…
PDATA 12
…
PDATA 102
宏展开:
…
DB 12 DUP(?)
…
DB 100 DUP(?)
例 : 宏指令 PDATA 根据实参不同时产生不同的程序段 .
例:宏指令 GOTO   L,X,REL,Y( 其中 REL 可以是 Z,NZ,L,NL 等 ) 可以根据不同情况产生无条件转移指令或比较和条件转移指令 .
宏定义 :
    GOTO         MACRO      L,X,REL,Y
                 IFB       
                 JMP        L
                 ELSE
                 MOV        AX,X
                 CMP        AX,Y
                 J&REL      L
                 ENDIF
                 ENDM
宏调用 :
                ...
   GOTO         LOOP,SUM,NZ,15
                ...
   GOTO         EXIT
                ...
宏展开 :
                ...
  1     MOV     AX,SUM
  1     CMP     AX,15
  1     JNZ     LOOP
                ...
  1     JMP     EXIT
宏定义可允许递归调用 , 此时条件伪操作可用来结束宏递归。
    例:宏指令 POWER 可以用来实现 X 和 2N 相乘 . 这只需对 X 左移 N 次可实现 , 可以设 COUNT 为递归次数的计数值 , 当该数与 N 相等时即可结束递归调用
宏定义 :
   POWER       MACRO        X,N
               SAL          X,1
   COUTN=COUT+1
               IF           COUNT-N
               POWER        X,N
               ENDIF
               ENDM
宏调用 :
   COUTN=0
           &
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

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

  • 条件汇编

相关文章

  • 2017-06-28汇编的任务状态段和控制门
  • 2017-06-17指令格式
  • 2017-08-30IAR常见段名含义
  • 2017-06-28汇编教程:虚拟设备驱动程序结构
  • 2017-06-28汇编与C语言的配合使用
  • 2017-06-17无条件转移指令
  • 2017-06-28汇编源码系列之comint
  • 2017-06-28汇编源码系列之showmem
  • 2017-06-17除运算指令
  • 2017-06-17标志寄存器传送指令

文章分类

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

最近更新的内容

    • 汇编语言的艺术-观念正误(三)
    • 8086/88的内存寻址方式
    • 汇编IDE的选择与配置
    • 什么是进程
    • VxD程序入门
    • 汇编中的伪操作
    • 汇编教程之以对话框为主要界面的应用程序
    • 比较指令 CMP
    • 汇编语言的艺术-观念正误(五)
    • 伪操作

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

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