微机原理与接口技术课件7.ppt
- 文档编号:2640932
- 上传时间:2022-11-04
- 格式:PPT
- 页数:45
- 大小:424.50KB
微机原理与接口技术课件7.ppt
《微机原理与接口技术课件7.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术课件7.ppt(45页珍藏版)》请在冰豆网上搜索。
第3章MASM伪指令系统v3.1.1汇编语句种类与格式汇编语言源程序中可以使用3类语句指令性语句伪指令语句宏指令语句
(1)、指令性语句能够被CPU所执行的语句,一条指令性语句对应于一条机器指令,指令性语句的种类取决与CPU的指令系统
(2)、伪指令语句用于控制汇编过程,为汇编器提供必要的辅助信息的语句,如定义变量、定义符号常量等,该类语句也称为指示性语句。
(2)、伪指令语句与指令性语句间的区别伪指令:
汇编后不产生任何机器代码指令性语句:
汇编后产生机器代码(3)、宏指令语句为多次重复使用的一段程序起一个名字,在程序其他地方使用这段程序时,使用名字替代该段程序。
被名字替换的这段程序就叫宏。
宏展开:
将名字还原为程序的过程宏指令:
用名字代替一段程序,宏名形成的指令称为宏指令。
第3章MASM伪指令系统v3.1.2汇编语言语句的格式指令性语句的一般格式为:
标号:
指令助记符操作数1,操作数2;注释指示性语句的一般格式为:
名字伪指令定义符参数,参数;注释
(1)、标号、名字标号与符号统称符号,符号是一个字符串,可以使用字母、数字、特殊符号字母:
az,AZ数字:
09特殊符号:
?
._$等
(2)、助记符、定义符助记符:
定义了该语句实现的操作定义符:
定义了该伪指令所要实现的操作(3)、参数用于说明操作的对象,参数的类型和数目随指令或伪指令而变。
参数可以是:
常数、寄存器数、存储器数(3)、参数常数:
二进制常数,由0和1组成,以字母B结尾八进制常数,由07组成,以字母Q结尾十六进制常数,以09及AF组成,以字母F结尾串常量,用引号引起来的字符串,其值为ASCII码(3)、参数算术运算符:
+-*/MOD,参与运算的数为整数,结果也为整数如:
ADDAX,100*4+2SUBCX,101/2(3)、参数逻辑运算符:
NOT,AND,OR,XOR,SHR,SHL例如:
MOVAX,1SHL3ORAL,3AND58Q(3)、参数关系运算符:
EQ,NE,LT,LE,GT,GE例如:
MOVAX,123GT3(3)、参数注释:
用于说明程序的作用,可有可无,如果有,以;号开头v3.2常用伪指令常用伪指令有一下几类符号定义伪指令数据定义伪指令标号析值/属性操作符段定义伪指令3.2.1符号定义伪指令1、等值语句EQU格式:
变量名EQU表达式作用:
通知汇编器,EQU左边和右边是等同的,使用时,用变量名替代表达式示例:
COUNTEQU15MOVAX,COUNT3.2.1符号定义伪指令1、等值语句EQU使用注意事项:
(1)EQU所定义的符号,仅仅是用于替代右边的字符,不占用存储空间,也不产生目标代码
(2)符号必须先定义后使用(3)同一源程序中,EQU所定义的符号不能重新定义3.2.1符号定义伪指令1、等号伪指令格式:
变量名=表达式作用:
与EQU类似,但表达式只能是数值表达式,且允许重复定义示例:
COUNT=15MOVAX,COUNT3.2.2数据定义与变量伪指令1、数据定义伪指令格式:
变量名DB初值表达式变量名DW初值表达式变量名DD初值表达式变量名DQ初值表达式变量名DT初值表达式3.2.2数据定义与变量伪指令1、数据定义伪指令DB:
变量占1个字节存储空间DW:
变量占1个字存储空间DD:
变量占2个字存储空间DQ:
变量占4个字存储空间DT:
变量占5个字存储空间3.2.2数据定义与变量伪指令2、功能:
定义变量,并指导汇编器为变量分配指定的存储空间,并初始化为变量定义语句中的初值表达式。
示例:
B0DB2B1DB3,5,?
,9B2DW10H,2DUP(1234H,?
)B3DD1,2B4DB0,2DUP(?
,1,2DUP(7)3.2.2数据定义与变量伪指令3、注意事项:
(1)每个初值所占用的空间取决于伪指令
(2)如果不想初始化,可以用?
号,表示分配空间,但初值不确定(3)对于重复的初值,可以用DUP描述3.2.2数据定义与变量伪指令4、变量的访问:
变量名代表初值表达式列表所对应的存储单元的首地址,变量的访问类似于数组,变量名为该数组的首地址。
3.2.2数据定义与变量伪指令5、示例:
DA2DB1,3,5MOVAL,DA2MOVAH,DA2+2MOVBL,DA2+13.2.2数据定义与变量伪指令6、变量的属性:
变量定义后,具有以下3个属性:
(1)、段属性:
变量所在段的段基址
(2)、偏移属性:
该变量的段内偏移量(3)、类型属性:
该变量所占用的存储单元3.2.3标号及其属性1、标号的概念:
标号是一条指令的符号地址,它常用作转移指令或子程序调用指令的操作数。
3.2.3标号及其属性2、标号的属性:
段属性:
标号所在段的段基址偏移属性:
标号所指出的机器码的段内偏移量类型属性:
该标号的有效范围,有NEAR类型和FAR类型3.2.3标号及其属性3、标号的定义:
在指令助记符前加上标号,并用冒号:
分隔3.2.3标号及其属性4、示例:
MOVCX,20AGAIN:
ADDAX,AXDECCXJNZAGAIN3.2.4析值/属性操作符1、析值操作符:
析值操作符也称地址回送操作符,作用是把变量或标号的地址取出
(1)取偏移地址操作符OFFSET格式:
OFFSET变量或标号示例:
MOVSI,OFFSETBUF
(2)取段基址操作符SEG格式:
SEG变量或标号示例:
MOVAX,SEGBUF3.2.4析值/属性操作符2、属性改变操作符:
格式:
类型PTR地址表达式功能:
将地址表达式所指的内存单元临时指定为PTR前面所给定的类型允许的类型有:
BYTE,WORD,DWORD,NEAR,FAR3.2.4析值/属性操作符2、属性改变操作符:
用法:
(1)、说明存储单元的类型MOVBYTEPTRSI,5
(2)、改变存储单元属性A_BYTEDB1,2,3,4MOVAX,WORDPTRA_BYTE(3)、建立FAR标号L_NEAR:
MOVAX,0L_FAREQUFARPTRL_NEAR3.2.5段定义伪指令1、段定义伪指令:
格式:
段名SEGMENT定位类型组合类型类别段名ENDS3.2.5段定义伪指令1、段定义伪指令:
说明:
(1)、段名的命名方法同符号的命名方法
(2)、关键字SEGMENT开始一个段的定义,ENDS结束一个段的定义(3)、SEGMENT与ENDS之间的内容为一个逻辑段(4)、段定义的参数可以省略,一般情况都省略3.2.5段定义伪指令1、段定义伪指令:
示例:
DATASEGMENTADB,BDBABCDDATAENDS3.2.5段定义伪指令2、地址计数器:
每个逻辑段都有一个地址计数器,用于指出该段已经使用的存储单元数,地址计数器名字为:
$,在程序中可以使用$读取当前地址计数器的值3、地址计数器的修改伪指令ORG:
用于调整地址计数器的值。
3.2.5段定义伪指令示例:
WW1SEGMENTA1DB3A2DW6,7COUNTEQU$-A2ORG$+10A3DD8ORG200HA4DQ?
WW1ENDS3.3、程序的段结构一个简单的汇编语言源程序DATASEGMENTVARDB12HDATAENDSSTACKSEGMENTSTACKDB300HDUP(?
)STACKENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACKSTART:
MOVAX,DATAMOVDS,AXINCVARMOVAH,4CHINT21HCODEENDSENDSTRAT3.3.1、源程序的分段结构段是程序的基本构成单位,8086的汇编程序由若干段组成,一般的小程序由数据段、堆栈段、代码段3个段构成。
一个程序必须有代码段,其余段根据需要定义。
3.3.2、段假设伪指令格式:
ASSUME段寄存器:
段名,段寄存器:
段名,功能:
设定段和段寄存器的联系,设定好以后访问该段存储单元时可以省略段寄存器。
说明:
可以多次使用ASSUME伪指令,一条ASSUME伪指令可以设定14段寄存器3.3.3、段寄存器的装填ASSUME指令仅仅告诉汇编器段寄存器与段之间的对应关系,但并没有初始化这些段寄存器,因此必须对段寄存器装入对应的段基址3.3.3、段寄存器的装填
(1)、DS和ES的装填MOVAX,DATAMOVDS,AX3.3.3、段寄存器的装填
(1)、SS的装填第一种方法:
定义堆栈段时,指出组合类型为STACK,SS和SP的初始化由操作系统自动完成第二种方法:
雷同DS,ES的初始化MOVAX,STACKMOVSS,AXMOVSP,300H3.3.3、段寄存器的装填(3)、CS的装填CS和IP的装填由DOS自动完成3.3.4、DOS的返回用户程序执行完成后,CPU不会因此停止,而是继续取指令和执行指令,但内存中的数据为随机数,被CPU执行后会得到不可预知的结果。
因此用户程序执行完成后,必须返回DOS操作系统。
常用的方法时利用DOS功能调用MOVAH,4CHINT21H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 课件