汇编语言-宏指令.ppt 共24页
合集下载
宏汇编汇编语言PPT学习教案
宏汇编汇编语言
会计学
1
一、宏汇编
内容 宏定义 宏调用 宏展开
第1页/共33页
1、宏定义
宏名
macro [形参表]
┇
;宏指令体(宏体)
endm
(1)宏名(宏指令名) :给出该宏定义的名称(第一个符号必 须是字母) 。
(2)macro/ endm 系统提供的定义宏的伪指令。 (3)形参表 :给出宏定义中所用到的形式参数,参数可以没 有,或带有一个或是多个,当是多个参数时,每个形参之间需用 逗号隔开。具体参数可以是常数、变量、指令或它们的一部分, 也可以是表达式。 (4)宏指令体 :一组有独立功能的汇编程序代码。其中可以 包括指令、伪指令及宏指令等。
第2页/共33页
1、宏定义(续)
举例:
fillseg Dsegname
用参数
macro Dsegname
;带有形参
mov ax, Dsegname
;宏定义中使
mov ds,ax endm
;宏定义结束
思考: 此处的形参Dsegname是什么?
Dsegnam用
第26页共33页伪指令含义exp若数值表达式exp的值不为0则语句组1包含在目标文件ifeexp若数值表达式exp的值为0则语句组1包含在目标文件中ifdeflabel若标号label有定义或被说明为extrn则语句组1包含在目标文件中ifndeflabel若标号label没有定义也没被说明为extrn则语句组1包含在目标文件中ifb参数在宏引用时若该形参没有相应的实参相对应则语句组1包含在目标文件中ifnb参数在宏引用时若该形参没有相应的实参相对应则语句组1包含在目标文件中ifidn参数1参数2若参数1参数2则语句组1包含在目标文件中ifdif参数1参数2若参数1参数2则语句组1包含在目标文件中if1若汇编程序在第一遍扫描时则语句组1包含在目标文件if2若汇编程序在第二遍扫描时则语句组1包含在目标文件if和和ifeife格式
会计学
1
一、宏汇编
内容 宏定义 宏调用 宏展开
第1页/共33页
1、宏定义
宏名
macro [形参表]
┇
;宏指令体(宏体)
endm
(1)宏名(宏指令名) :给出该宏定义的名称(第一个符号必 须是字母) 。
(2)macro/ endm 系统提供的定义宏的伪指令。 (3)形参表 :给出宏定义中所用到的形式参数,参数可以没 有,或带有一个或是多个,当是多个参数时,每个形参之间需用 逗号隔开。具体参数可以是常数、变量、指令或它们的一部分, 也可以是表达式。 (4)宏指令体 :一组有独立功能的汇编程序代码。其中可以 包括指令、伪指令及宏指令等。
第2页/共33页
1、宏定义(续)
举例:
fillseg Dsegname
用参数
macro Dsegname
;带有形参
mov ax, Dsegname
;宏定义中使
mov ds,ax endm
;宏定义结束
思考: 此处的形参Dsegname是什么?
Dsegnam用
第26页共33页伪指令含义exp若数值表达式exp的值不为0则语句组1包含在目标文件ifeexp若数值表达式exp的值为0则语句组1包含在目标文件中ifdeflabel若标号label有定义或被说明为extrn则语句组1包含在目标文件中ifndeflabel若标号label没有定义也没被说明为extrn则语句组1包含在目标文件中ifb参数在宏引用时若该形参没有相应的实参相对应则语句组1包含在目标文件中ifnb参数在宏引用时若该形参没有相应的实参相对应则语句组1包含在目标文件中ifidn参数1参数2若参数1参数2则语句组1包含在目标文件中ifdif参数1参数2若参数1参数2则语句组1包含在目标文件中if1若汇编程序在第一遍扫描时则语句组1包含在目标文件if2若汇编程序在第二遍扫描时则语句组1包含在目标文件if和和ifeife格式
《汇编语言程序设计》第7章 高级宏语言
7.1 宏指令
宏嵌套
1. 宏定义中可以嵌套宏调用 2. 宏定义中可以嵌套宏定义
7.1 宏指令
宏嵌套
1. 宏定义中可以嵌套宏调用 例7.4 非组合BCD码转换成ASCII码。
宏定义: TURN MACRO ADD AL,30H ENDM BTOA MACRO ADDR XCHG AL,ADDR TURN XCHG AL,ADDR ENDM 宏调用: BTOA DATA 宏展开: + XCHG AL,DATA + ADD AL,30H + XCHG AL,DATA
7.2 条件汇编指令
宏定义与宏结束指令
⑥IFNDEF CONT 此操作中的条件CONT是一个符号,如果这个符号未定义,或未经 EXTRN伪指令说明,则条件为真。 ⑦IFB <CONT> 如果尖括号中为空(不写任何字符),则条件为真。 ⑧IFNB <CONT> 如果尖括号中不为空,则条件为真。 ⑨IFIDN <CHR1>,<CHR2> CHR1和CHR2为字符串,如果两个字符串相同,则条件为真。两个 字符串必须分别用尖括号括起来。 ⑩IFDIF <CHR1>,<CHR2> CHR1和CHR2为字符串,如果两个字符串不相同,则条件为真。两 个字符串必须分别用尖括号括起来。
7.1 宏指令
宏定义与宏结束指令
3.宏指令的有效范围 宏指令的优先级最高。可以定义与指令助记符、伪操作 同名的宏,此时,同名机器指令或伪操作失效。只有用 PURGE伪操作取消宏定义,才能恢复同名机器指令或伪 操作的原始含义。 PURGE伪操作可同时取消多个宏定义,被取消的宏名之 间用逗号分隔。格式为:
7.3 重复汇编指令
微机原理课件第四章宏汇编语言程序设计
数据结构和算法实现
了解宏汇编如何实现常用的数 据结构和算法。
汇编优化技巧
1 汇编代码优化的原则
掌握汇编代码优化的基本原则,提高程序的性能。
2 循环展开和代码复用
学习如何通过循环展开和代码复用来提高程序的效率。
3 利用宏定义和宏指令提高编程效率
发挥宏定义和宏指令的威力,提高编程效率。
汇编程序的调试
微机原理课件第四章宏汇 编语言程序设计
让我们一起探索微机原理课件的第四章,了解宏汇编语言程序设计的精髓。
宏汇编语言概述
宏的概念
了解宏的定义和作用,扩展汇编语言的功能。
宏指令和宏函数
掌握使用宏指令和宏函数来提高代码的重用性和效率。
宏语言的特点
了解宏语言的独特特点,如代码的可读性和可维护性。
宏程序设计
1
调试工具的使用
了解常用的汇编调试工具,如调试器和模拟器。
2
断点调试和单步执行
掌握断点调试和单步执行的技巧,逐行分析程序的执行过程。
3
支持汇编调试的集成开发环境
了解集成开发环境如何支持汇编调何定义和调用宏,并掌握宏参
宏展开和宏替换
2
数和返回值的使用。
深入了解宏的展开过程以及宏替换的
作用。
3
宏指令使用和宏调试
掌握宏指令的使用方法和调试技巧, 确保程序的正确性。
实际应用
编写宏汇编程序实例
通过实例学习如何编写宏汇编 程序,并且理解其应用场景。
宏汇编和C语言混合编程
探索宏汇编和C语言混合编程, 发挥两种语言的优势。
宏汇编语言程序设计PPT课件
MOV ES , AX
129F:000F BF0000 MOV DI , 0000
129F:0012 B90600 MOV CX, 0006
129F:0015 F3
REP
129F:0016 A4
MOVSB
129F:0017 B44C
MOV AH, 4C
129F:0019 CD21
INT
21
、、、、、、
-U
;查看程序代码
129F:0000 FC
CLD
129F:0001 B89D12 MOV AX , 129D
129F:0004 8ED8
MOV DS , AX
129F:0006 8D360000 LEA SI ,
[ 0000 ]
129F:000A B89E12 MOV AX , 129E
129F:000D 8EC0
MOV AH, SIZE A2
汇编时形成指令
MOV CX, 200
MOV AH, 2
第21页/共92页
5). PTR 修改属性操作符
格式:类型/距离 PTR 变量或标号 功能:将PTR左边的类型属性赋给右边的变量或标号。 常用类型:BYTE、WORD、DWORD、NEAR、FAR
例:
MOV BYTE PTR [BX],10; [BX] 10H MOV WORD PTR [BX],10; [BX],[BX+1]
第15页/共92页
4). 数值返回操作符
SEG 取符号地址(变量或标号)的段地址
例 MOV AX , SEG yy
OFFSET 取符号地址(变量或标号)的偏移地址
例 MOV BX , OFFSET yy
bb yy bb cc ES:bb start :
汇编语言指令PPT课件
ARP ST0中的辅助寄存器指针; 这3位指出了当前使用
的辅助寄存器 (ARx);
ASM ST1 (–16 ASM 15)中的5位移位字段;
B
累加器B;
BRAF ST1中的块重复激活标志;
BRC 块重复计数器;
BITC 指定数据存储器中的测试位,4位数字表示
(0BITC 15) ;
C16 ST1中的算术精度模式位双16位/双精度;
;src=(src-Smem<<15)<<1+1 ;else src=src<<1 SUBS Smem,src ; src=src-uns(Smem) 乘法指令10条 MPY Smem,dst ; dst=TSmem MPYR Smem,dst ;dst=rnd(TSmem) MPY Xmem,Ymem,dst; dst=Xmem Ymem,T=Xmem
n
XC 指令的字数, n = 1 or 2;
N 指定 RSBX, SSBX, XC 修正的寄存器:
N = 0 修正 ST0
N = 1 修正 ST1
13.03.2021
.
5
第四章 DSP汇编语言基础
OVA OVB OVdst OVdst_ OVsrc OVM PA PAR PC pmad Pmem PMST
;if C16=1, ; dst(39-16)=dst(39-16)+src(31-16) ; dst(15-0)=dst(15-0)+src(15-0) DADST Lmem,src ; if C16=0, dst=Lmem+(T<<16+T) ;if C16=1, ; dst(39-16)=dst(39-16)+T ; dst(15-0)=dst(15-0)+T
PC汇编语言程序设计课件 第10章 MASN宏汇编语言(1)
其中,宏名是已定义的宏指令的名字。参数 1、 参数 2 是宏 指令要求的实际参数,它们在宏调用的意义及其出现次序必 须与宏定义中的形式参数完全一致。 汇编程序在进行宏扩展 时, 将用实在参数顺序替换形式参数。
第十章 MASM宏汇编语言
10.1.3 宏扩展
宏汇编程序在对汇编语言源程序进行汇编的过程中,如果 在操作码字段遇到一个宏指令的名字,它就自动用相应的宏体 来代替宏指令,并且用宏调用中的实际参数替代宏定义中的哑 参数。这一过程称为宏扩展。在宏扩展的过程中, 实参和形 参一一对应,依次替换。一般来说,实参个数应该和形参相同。 宏汇编规定:如果实际参数的个数多于形式参数的个数,则多 余参数将被忽略;如果形式参数的个数多于实际参数的个数, 则多余的形参将用“0”来代替。
例 10.6 使用局部标号。
MADDM MACRO SRC, DST, LEN, SUM LOCAL LABEL LEA SI, SRC LEA DI, DST
第十章 MASM宏汇编语言
MOV CX, LEN LEA BX, SUM CLC LABEL: MOV AL, [SI ADC AL, [DI MOV [BX], AL INC SI INC DI INC BX LOOP LABEL ENDM
第十章 MASM宏汇编语言
一个简单的不带参数的宏指令如下, 它可以实现程序结 束时返回DOS的功能:
FIFISH
MACRO MOV AX, 4C00H INT 21H ENDM
第十章 MASM宏汇编语言
10.1.2 在汇编语言源程序的操作码字段写上宏名, 这就是宏调
用。宏调用的一般格式如下: 宏名 [参数 1] [, 参数 2]…
第十章 MASM宏汇编语言
在此宏定义中,使用了LOCAL伪指令说明标号为局部标 号。LOCAL伪指令的格式如下:
第十章 MASM宏汇编语言
10.1.3 宏扩展
宏汇编程序在对汇编语言源程序进行汇编的过程中,如果 在操作码字段遇到一个宏指令的名字,它就自动用相应的宏体 来代替宏指令,并且用宏调用中的实际参数替代宏定义中的哑 参数。这一过程称为宏扩展。在宏扩展的过程中, 实参和形 参一一对应,依次替换。一般来说,实参个数应该和形参相同。 宏汇编规定:如果实际参数的个数多于形式参数的个数,则多 余参数将被忽略;如果形式参数的个数多于实际参数的个数, 则多余的形参将用“0”来代替。
例 10.6 使用局部标号。
MADDM MACRO SRC, DST, LEN, SUM LOCAL LABEL LEA SI, SRC LEA DI, DST
第十章 MASM宏汇编语言
MOV CX, LEN LEA BX, SUM CLC LABEL: MOV AL, [SI ADC AL, [DI MOV [BX], AL INC SI INC DI INC BX LOOP LABEL ENDM
第十章 MASM宏汇编语言
一个简单的不带参数的宏指令如下, 它可以实现程序结 束时返回DOS的功能:
FIFISH
MACRO MOV AX, 4C00H INT 21H ENDM
第十章 MASM宏汇编语言
10.1.2 在汇编语言源程序的操作码字段写上宏名, 这就是宏调
用。宏调用的一般格式如下: 宏名 [参数 1] [, 参数 2]…
第十章 MASM宏汇编语言
在此宏定义中,使用了LOCAL伪指令说明标号为局部标 号。LOCAL伪指令的格式如下:
宏汇编语言程序设计 .ppt
ENDS
END START
§4-4 程序设计方法
【 分支结构】
2.多分支
依次测试多个条件是否满足:若满足转入相应分支入口;不满足继续向下
测试,直到全部测试完。
此方法编程简单直观,但速度慢。
判定条件
例 有8个加工子程序,入口地址分别为
P1 ,P2 ,…P8 。编程实现检测键盘输入
命令,使系统分别转向8个加工子程序。
概述
一个好的程序,应该具备的特点:
程序结构模块化,程序易读,易调试及维护。 执行速度快。 占用内存空间小。
§4-4 程序设计方法
【概述】
设计汇编语言源程序的基本步骤:
⑴ 分析问题 抽象数学模型,确定实现算法。
⑵ 绘制程序流程图 粗框图 细框图。
⑶ 分配存储空间、工作单元 分配数据段、堆栈段、程序段 的位置,确定寄存器主:
§4-4 程序设计方法
P1: P2: P3:
P8: ST :
MOV INT CMP JE CMP JE … CMP JE JMP … … … … … HLT
AH, 1 21H AL, ‘1’ P1 AL, ‘2’ P2
AL, ‘8’ P8 ST
【 分支结构】
;1号功能键调用,键盘接收 ;键值为1,转1号加工子程序 ;键值为2,转2号加工子程序
MOV AH, 0
DEC AL MOV BL, AL
; AL为键值
ADD ADD MOV ADD JMP
AL, AL AL, BL BX, OFFSET BASE BX, AX BX
;偏移量=键值×3 ;基地址 ;表地址 ;转入转移指令
§4-4 程序设计方法
【 分支结构】
⑶根据关键字分支
汇编语言第7章高级汇编语言技术PPT课件
7.1.1 宏定义、宏调用和宏展开
1. 宏定义:
说明:
① 定义宏指令以MACRO语句开始,ENDM 语句结束,它们必须成对出现
② 宏指令名:为宏指令取的名字,必须以字 母开头,后可跟字母、数字或下划线
③ 宏定义体:能够完成一定功能的指令序列
④ 哑元:定义宏体中出现的符号(字符串),
可有可无,各哑元之间用逗号隔开
注:先有宏定义,后有宏调用 例7.9: 例7.11:
12
第七章 高级汇编语言技术
7.1.5 列表伪操作 .XALL:为默认情况,指示清单中只列
出产生目标码的宏展开
.LALL:列出包括注释在内的所有宏展
开
.SALL:不列出任何展开信息
注:宏定义中的注释可用“;”和“;;”表示
(在宏展开时不展开,即使在.LALL之 下的清单中也不会出现)
7.2.2 不定重复伪操作 1.IRP伪操作
格式:IRP dummy,<argument list>
…
(重复块)
ENDM
重复次数
功能:连续地执行重复块几次,每次重复把重复块中的哑
元用自变量表中的一项来取代,下一次取代下一项, 重复次数由自变量表中的自变量个数来确定
例7.17:
注:该操作不一定非要在宏定义体内 18
3. 宏展开:在汇编时,将宏定义体插入宏调用
处(宏指令名),用实元代替哑元
注:宏展开工作是汇编程序在汇编过程中完成
例7.1:
7
第七章 高级汇编语言技术
7.1.1 宏指令与子程序的区别
共同优点:简化源程序代码
区别:
① 执行时间:子程序调用是在程序运行过程中进行;而宏调用 是在汇编过程中完成
② 执行方式:子程序执行时,每调一次都要先保护断点、再保 护现场,返回时先恢复现场、再恢复断点,因此采用子程序 方式程序的执行要花费额外的开销,执行时间长、速度慢; 而宏指令方式不需要这些开销,因而执行时间短、速度快
1. 宏定义:
说明:
① 定义宏指令以MACRO语句开始,ENDM 语句结束,它们必须成对出现
② 宏指令名:为宏指令取的名字,必须以字 母开头,后可跟字母、数字或下划线
③ 宏定义体:能够完成一定功能的指令序列
④ 哑元:定义宏体中出现的符号(字符串),
可有可无,各哑元之间用逗号隔开
注:先有宏定义,后有宏调用 例7.9: 例7.11:
12
第七章 高级汇编语言技术
7.1.5 列表伪操作 .XALL:为默认情况,指示清单中只列
出产生目标码的宏展开
.LALL:列出包括注释在内的所有宏展
开
.SALL:不列出任何展开信息
注:宏定义中的注释可用“;”和“;;”表示
(在宏展开时不展开,即使在.LALL之 下的清单中也不会出现)
7.2.2 不定重复伪操作 1.IRP伪操作
格式:IRP dummy,<argument list>
…
(重复块)
ENDM
重复次数
功能:连续地执行重复块几次,每次重复把重复块中的哑
元用自变量表中的一项来取代,下一次取代下一项, 重复次数由自变量表中的自变量个数来确定
例7.17:
注:该操作不一定非要在宏定义体内 18
3. 宏展开:在汇编时,将宏定义体插入宏调用
处(宏指令名),用实元代替哑元
注:宏展开工作是汇编程序在汇编过程中完成
例7.1:
7
第七章 高级汇编语言技术
7.1.1 宏指令与子程序的区别
共同优点:简化源程序代码
区别:
① 执行时间:子程序调用是在程序运行过程中进行;而宏调用 是在汇编过程中完成
② 执行方式:子程序执行时,每调一次都要先保护断点、再保 护现场,返回时先恢复现场、再恢复断点,因此采用子程序 方式程序的执行要花费额外的开销,执行时间长、速度慢; 而宏指令方式不需要这些开销,因而执行时间短、速度快
汇编语言入门教程PPT-第七章宏定义
mainbegin @data
;建立DS内容
dispmsg msg1
;显示msg1字符串
dispmsg msg2
;显示msg2字符串
mainend
;返回DOS
end start
• &——替换操作符,用于将参数与其 他字符分开。如果参数紧接在其他 字符之前或之后,或者参数出现在 带引号的字符串中,就必须使用该 伪操作符
;宏定义 dstring macro string
db ’&string&’,0dh,0ah,’$’ endm
;宏调用
传递注释符
dstring < This is a example. >
第七章第一高章级汇基编础语知言识技术
第七章第一高章级汇基编础语知言识技术
第七章第一高章级汇基编础语知言识技术
第七章第一高章级汇基编础语知言识技术
第七章第一高章级汇基编础语知言识技术
例 宏指令GOTO L,X,REL,Y(其中REL可以是Z,NZ,L,NL等)可以 根据不同情况产生无条件转移指令或比较和条件转移指令。
dstring < 0 !< Number !< 10 >
转义注释符
;宏展开
1
db ’This is a example.’, 0dh,0ah,’$’
1
db ’0 < Number < 10’, 0dh,0ah, ’$’
与宏有关 的伪指令
• 局部标号伪指令 LOCAL 标号列表 宏定义体采用了标号,应使用LOCAL加以说明 它必须是宏定义MACRO语句之后的第一条语句
;; 有参数
endif
int 21h
相关主题