汇编语言——宏
- 格式:ppt
- 大小:657.00 KB
- 文档页数:44
第三章宏汇编语言一:宏汇编语言格式3.1.1 指令语句格式指令语句的一般格式如下:[标号:]指令助记符操作数;注释1.标号:标号是机械指令语句寄存地址的符号表示,代表该指令目标代码的第一个字节地址,后面必需紧跟冒号“:” 。
2.指令助记符:指令助记符为语句的核心成份,表示了该语句的操作类型。
3.操作数:操作数表示指令助记符的操作对象。
4.注释:注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。
3.1.2 伪指令语句格式伪指令语句格式如下:[符号名] 伪指令符操作数;注释1.符号名:符号名是伪指令语句的一个可选项。
2.伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据概念伪指令DB、DW、DD,段概念伪指令SEGMENT,假定伪指令ASSUME等。
2.操作数:伪指令后面的操作数能够是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必需以“逗号”分隔。
4.注释:伪指令的注释必需以“;”开始,其作用同指令语句中的注释部份。
汇编语句表达式3.2.1 常量1.数值常量2. 字符串常量字符串常量是用单引号或双引号引发来的一个或多个字符。
字符串常量是以各字符的ASCⅡ码表示的。
如‘A’用41H 表示,字符串‘A1B2’用41H,31H,42H,32H表示。
3.2.2 变量1.变量(1)段属性(2)偏移地址属性(3)类型属性2.变量的概念表达式项是给变量或指定存储单元给予初值,它有以下几种形式:(1)数值表达式数据概念伪指令能够为一个或持续的存储单元设置数值初值。
【例】为数据段分派存储单元。
DATA SEGMENTA DB 11H,12H,13HB DW 1122H,3344HC DD HDATA ENDS上述变量的存储单元分派及初始化情形如下图所示。
数据段中数据存储分派图(2)字符串表达式字符串表达式中的字符串必需用引号引发来。
DB、DW、DD伪指令将字符串中的各字符均以ASCⅡ码形式寄存在相应的存储单元,但表示形式各不相同。
宏汇编摘要: 宏(Macro )是具有宏名的一段汇编语句序列(宏定义时书写),是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法宏指令——这段汇编语句序列的缩写(宏调用时书写)宏展开——宏指令处用...宏(Macro )是具有宏名的一段汇编语句序列(宏定义时书写),是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法宏指令——这段汇编语句序列的缩写(宏调用时书写)宏展开——宏指令处用这段宏代替的过程(宏汇编时实现)宏的参数功能强大,颇具特色配合宏,还有宏操作符和有关伪指令宏(Macro )是源程序中一段有独立功能的程序代码。
它只需在源程序中定义一次,就可以多次调用它,调用时只需用一个宏指令语句就可以了。
宏定义是用一组伪操作来实现的.其格式是:宏名macro [ 形参表]…宏定义体endm其中macro 和endm 是一对伪操作,这对伪操作之间是宏定义体(一组有独立功能的程序代码).宏名给该宏定义的名称,调用时就使用宏名来调用该宏定义,宏指令名给出该宏定义的名字,调用时就是用宏指令名来调用宏定义。
例如:宏名的第一个符号必须是字母,其后可以跟字母、数字和下划线字符。
MAINBEGING MACRO ;; 定义名为MAINBEGIN 的宏,无参数MOV AX,@DATA ;; 宏定义体MOV DS,AXENDM ;; 宏定义结束MAINEND MACRO RETNUM ;; 带有形参RETNUMMOV AL,RETNUM ;; 宏定义中使用参数MOV AH,4CHINT 21HENDMMULTIPLY MACRO OPR1,OPR2,RESULT;; 定义名具有三个参数的宏PUSH DX ;; 宏定义体PUSH AXMOV AX,OPR1IMUL OPR2MOV RESULT,AXPOP AXPOP DXENDM ;; 宏定义结束宏名[ 实参表]宏调用经宏定义定义后的宏指令可以在源程序中调用,这种对宏指令的调用称为宏调用。
这篇文章是我花了一个晚上作的总结,从一个比较本质的角度解释了一些宏的行为,不是教科书设置是Programmer Guide达到的程度。
看起来比较没有味道,但是如果你要用起宏来你会发现我几乎没有说废话。
不是教你怎么去用宏,但是你看过之后也不用学了,自己试验一下就可以写了。
虽然没有几个家伙还在用MASM,更少人用MACRO了,可能这个就是我另类的风格吧。
MASM宏使用总结导语MASM(Macro Assembler)是由微软公司提供的汇编工具,虽然有些年头了,但是仍然存在于 这样比较新的工具中。
有很多汇编教科书以这个为对象,讲述了如何用汇编去设计一个程序,作为计算机科学系学生的基础课。
但是,讲述的内容大体上还是停留在5.1版,而且停留在DOS的时代。
虽然提到了win32下的汇编,但是并没有放在首要的位置。
另一个被忽视的是作为MASM最大特色的宏,怎么去看待汇编工具中提供的强大的宏,以及怎么和在什么场合下使用宏,语焉不详。
本文是作者在大量使用MASM宏,搭建了一个汇编环境下的OOP 系统后,作的一个总结。
善用宏,能够减少重复编码,以及构建强大的功能,是重用代码,美化代码的一个有力的工具。
宏在高级语言中是一个应该被极力避免的东西,在低级语言中确未必如此。
宏就是预处理宏就是在代码被汇编成为obj文件之前进行的预处理。
由于发生在汇编期(Assembly-Time, 和高级语言中的编译期是一个意思),所以不会给执行期带来负担,可以用作代码生成工具,设置和C++中的模板一样,用作meta-programming 的工具。
在MASM中宏可以分为两种:1、 Text Macro 2、Procedure (Function) Macro。
第一种宏就是和#define pi 31415926这样的简单的文本替换的宏,第二种就是那种带参数,可以有局部变量,可以返回值这样的可以看作函数或者过程的宏。
下面就先从Text Macro入手,看看如何使用简单的宏。