文档详情

IBM汇编 第七章 高级汇编语言技术.ppt

发布:2017-06-18约字共69页下载文档
文本预览下载声明
ch7 宏定义: MSG MACRO COUNT,STRING MSGCOUNT DB STRING ENDM ERRMSG MACRO TEXT CNTR = CTNR+1 MSG % CNTR,TEXT ENDM 宏调用: …… CNTR = 0 ERRMSG ‘SYNTAX ERROR’ …… ERRMSG ‘INVALID OPERAND’ …… 7.2.3 不定重复字符伪操作IRPC 其语句格式为: IRPC 形参,字符串(或〈字符串〉) ┇ (重复块) ENDM 此伪指令重复执行重复块中的语句,重复汇编的次数等于字符串中字符的个数。每次重复执行时,依次用字符串中的一个字符取代形参,直到字符串结束。可见IRPC伪指令与IRP伪指令类似,只是IRPC用字符串(其三角括号可以有也可以无)代替了IRP伪指令中的参数表。 例7.19 Irpc x DB x+1 Endm 汇编后: DB 1 1 DB 2 ┇ 1 DB 8 例7.20 PUSHR MACRO IRPC REG,ABCD PUSH REGX ENDM ENDM 同样,汇编后也可得到: 1 PUSH AX 1 PUSH BX 1 PUSH CX 1 PUSH DX 7.3 条件汇编 汇编程序能根据条件把一段源程序包括在汇编语言程序内的或排除在外,这里就用到条件伪操作。条件伪操作的一般格式是: Ifxx argument ┇ ;自变量满足条件汇编此块 [ELSE] ┇ ;自变量不满足条件汇编此块 ENDIF 说明:汇编程序在对源程序汇编时,要对源程序扫描二遍 。第一遍建立符号表 ,第二遍才把汇编语言指令翻译成机器语言指令。那么自变量必须在汇编程序第一遍扫视后就成为确定的数值。 IF 表达式 ;表达式≠0,则汇编 IFE 表达式 ;表达式=0,则汇编 IF1 ;在第一遍扫视期间满足条件 IF2 ;在第二遍扫视期间满足条件 IFDEF 符号 ;符号已定义,则汇编 IFNDEF 符号 ;符号未定义,则汇编 IFB 自变量 ;自变量为空,则汇编 IFNB 自变量 ;自变量不为空,则汇编 IFIDN 字符串1,字符串2 ;串1与串2相同 IFDIF 字符串1,字符串2 ;串1与串2不同 IF expression ; 汇编程序求出表达式的值,如此 值不为0,则满足条件。 IFE expression ;汇编程序求出表达式的值,如此值 为0,则满足条件。 例7.21:宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段。 7.3.1 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 宏展开: 32 33 MAX 1,P 34 0005 A1 0000 R 1 MOV AX,P 35 0008 1 ??0001: 36 MAX 2,P,Q 37 0008 A1 0000 R 1
显示全部
相似文档