第!幸高級汇編技术 第宮章高级汇編技术 8.1宏汇编 8.2重复汇编和条件汇编 8.3汇编语言与高级语言的混合编程 BACK
第8章 高级汇编技术 第8章 高级汇编技术 8.1 宏汇编 8.2 重复汇编和条件汇编 8.3 汇编语言与高级语言的混合编程
第!幸高級汇編技术 81宏汇编 811宏指令的定义、调用和展开 1.宏定义伪指令 宏的概念与过程很相似,也是用一个宏名字来代替源程序中 经常需要用到的一个程序模块(代码段),宏定义语句格式与过程 定义语句格式也相似。 格式: 宏名 MACRO[形式参数表] ;宏体 ENDM 宏定义结束 功能:定义一个宏
第8章 高级汇编技术 8.1 宏汇编 8.1.1 宏指令的定义、调用和展开 1.宏定义伪指令 宏的概念与过程很相似,也是用一个宏名字来代替源程序中 经常需要用到的一个程序模块(代码段),宏定义语句格式与过程 定义语句格式也相似。 格式: 宏名 MACRO [形式参数表] ;宏体 ENDM ;宏定义结束 功能:定义一个宏。 …
第8幸高级汇編技术 说明: ①宏名必须是惟一的,它代表着所定义的宏体的内容,在 其后面的源程序中,可通过该名字来调用宏 ②2形式参数表是用逗号(或空格,或制表符)分隔的一个或 多个形式参数。它是可选项。选用了形式参数时,所定义的宏 称为带参数的宏。当调用宏时,需用对应的实际参数去取代, 以实现向宏中传递信息
第8章 高级汇编技术 说明: ① 宏名必须是惟一的,它代表着所定义的宏体的内容,在 其后面的源程序中,可通过该名字来调用宏。 ② 形式参数表是用逗号(或空格,或制表符)分隔的一个或 多个形式参数。它是可选项。选用了形式参数时,所定义的宏 称为带参数的宏。当调用宏时,需用对应的实际参数去取代, 以实现向宏中传递信息
第!幸高級汇編技术 ③宏体可以是汇编语言所允许的任意指令和伪指令语句序 列,它决定了宏的功能。在宏体中还可以定义或调用另一个宏, 这就是宏嵌套。 ④宏一经定义,就像为指令系统增加了新的指令一样,在 程序中就可像指令一样通过宏名对它进行任意次的调用,故又称 为宏指令或宏调用。要注意的是,宏定义必须放在第一条调用它 的指令之前,一般都将它放在程序的开头
第8章 高级汇编技术 ③ 宏体可以是汇编语言所允许的任意指令和伪指令语句序 列,它决定了宏的功能。在宏体中还可以定义或调用另一个宏, 这就是宏嵌套。 ④ 宏一经定义,就像为指令系统增加了新的指令一样,在 程序中就可像指令一样通过宏名对它进行任意次的调用,故又称 为宏指令或宏调用。要注意的是,宏定义必须放在第一条调用它 的指令之前,一般都将它放在程序的开头
第8幸高级汇編技术 2.宏的调用与展开 (1)在汇编语言源程序中,为了使在源程序中不重复书写需 要多次使用的程序段,可以用一条宏指令来代替,由汇编程序 在汇编时产生所需要的代码。 例如,为了实现ASCⅡ码与BCD码之间的相互转换,往往需 要把AL中的内容左移4位或右移4位,可以用80X86的指令来实现。 若要左移4位,可用 MOV CL, 4 SAL AL, CL
第8章 高级汇编技术 2.宏的调用与展开 (1) 在汇编语言源程序中,为了使在源程序中不重复书写需 要多次使用的程序段,可以用一条宏指令来代替,由汇编程序 在汇编时产生所需要的代码。 例如,为了实现ASCII码与BCD码之间的相互转换,往往需 要把AL中的内容左移4位或右移4位,可以用80x86的指令来实现。 若要左移4位,可用: MOV CL,4 SAL AL,CL
第!幸高級汇編技术 若要多次使用,就可以用一条宏指令来代替,宏定义是: SHIFT MACRO MOV CL, 4 SAL AL, CL ENDM 这样,以后凡要使AL中的内容左移4位,就可以用这条宏 指令SHFT来代替
第8章 高级汇编技术 若要多次使用,就可以用一条宏指令来代替,宏定义是: SHIFT MACRO MOV CL,4 SAL AL,CL ENDM 这样,以后凡要使AL中的内容左移4位,就可以用这条宏 指令SHIFT来代替
第!幸高級汇編技术 宏定义中, SHTFT是宏指令名, MACRO是宏定义的定义 符,ENDM是宏定义的结束符,这两者必须成对出现 宏汇编一般由可执行的指令语句和管理语句(即由伪指令构 成的语句)所构成。经宏定义后,就可以引用宏指令,这称作宏 调用。宏汇编程序遇到这样的调用时,就用对应的宏体来代替 这条宏指令,以产生目的代码,这称作宏展开
第8章 高级汇编技术 宏定义中,SHTFT是宏指令名,MACRO是宏定义的定义 符,ENDM是宏定义的结束符,这两者必须成对出现。 宏汇编一般由可执行的指令语句和管理语句(即由伪指令构 成的语句)所构成。经宏定义后,就可以引用宏指令,这称作宏 调用。宏汇编程序遇到这样的调用时,就用对应的宏体来代替 这条宏指令,以产生目的代码,这称作宏展开
第!幸高級汇編技术 (2)宏定义不但能使源程序的书写简洁,而且由于宏指令具 有接收参量的能力,所以功能就更灵活。 例如,上述的宏指令只能使AL中的内容左移4位。若每次使 用时,要移位的次数不同,或要使不同的寄存器移位,就不方便 了。但是,若在宏定义中引入参量,就可以满足上述要求
第8章 高级汇编技术 (2) 宏定义不但能使源程序的书写简洁,而且由于宏指令具 有接收参量的能力,所以功能就更灵活。 例如,上述的宏指令只能使AL中的内容左移4位。若每次使 用时,要移位的次数不同,或要使不同的寄存器移位,就不方便 了。但是,若在宏定义中引入参量,就可以满足上述要求
第幸高级汇編技术 例8-1定义满足不同移位次数要求的宏。 SHIFT MACRO X MOV CL,Ⅹ SAL CL, CL ENDM 其中,X是一个形式参量(此处用来代表移位次数)。在调用时可 把实际要求的移位次数作为实在参量代入。如 SHIFT 4 就可以用实在参量4代替在宏定义体中出现的形式参量X,从而 实现左移4位的功能
第8章 高级汇编技术 例8-1 定义满足不同移位次数要求的宏。 SHIFT MACRO X MOV CL,X SAL CL,CL ENDM 其中,X是一个形式参量(此处用来代表移位次数)。在调用时可 把实际要求的移位次数作为实在参量代入。如 SHIFT 4 就可以用实在参量4代替在宏定义体中出现的形式参量X,从而 实现左移4位的功能
第8幸高级汇編技术 又如: SHIFT 6 就可以左移6次。这样,就可以由调用时的实在参数来规定任意 的移位次数
第8章 高级汇编技术 又如: SHIFT 6 就可以左移6次。这样,就可以由调用时的实在参数来规定任意 的移位次数