Board logo

标题: 系统定义的宏 [打印本页]

作者: 苹果也疯狂    时间: 2015-1-23 20:02     标题: 系统定义的宏

MASM 6.11系统定义了大量的标准宏,程序员能很方便地使用它们。在使用这些系统宏之前,要象C语言那样用伪指令INCLUDE把有关“宏库”文件包含在用户的源程序中。主要的系统宏库文件有:DOS.INC和BIOS.INC,它们存放在系统的Include子目录中。
例9.18:使用系统宏定义,编写从键盘上读取一个字符。
解:
Include Dos.Inc ;把系统宏定义文件包含在源程序之中
……
@Getchar 1, 1;引用系统宏定义
……
下面是系统宏@Getchar的使用参数描述和定义,其它系统宏的有关信息请参阅相关的宏定义文件。
1、系统宏@GetChar的使用说明
宏的功能:从键盘读字符
使用语法:@GetChar [Echo] [,[Break] [,Clearbuf]]
参数说明:<Echo>;常量,非零表示“回显”,缺省值为“回显”
<Break>;常量,非零表示接受“^C”,缺省值为“接受”
<Clearbuf>;常量,非零表示清键盘缓冲区,缺省值为“不清”
返回参数:AL=ASCII码
内容破坏:AX,DL(若回显,且不接受^C)
参见内容:INT 21h— 01h、07h、08h和0Ch,@GetStr
2、系统宏@GetChar的定义
该宏定义在宏库文件Dos.Inc中,其具体宏定义如下:
@GetCharMACROech:=<1>, Cc:=<1>, Clear:=<0>
LOCALfunct, Disp
Disp = 1
IF Ech
IF Cc
Funct = 01h;使用功能1
ELSE
Funct = 07h;使用功能7
Disp = 02h ;设置需要回显标志
ENDIF
ELSE
IF Cc
Funct = 08h;使用功能8
ELSE
Funct = 07h;使用功能7
ENDIF
ENDIF
IFE Clear
Movah, Funct;置功能号
ELSE
Movah, 0Ch;先清输入缓冲区,再接受键盘输入
Moval, Funct
ENDIF
Int21h;调用DOS功能中断
IF Disp EQ 02h;检查是否需要回显
Movdl, Al
Movah, 02h
Int21h
ENDIF
ENDM
对于上面的宏定义,程序员完全可以把它修改成其它形式的宏定义。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0