




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微型计算机原理及应用,主 讲:李春雷(),学 时:64,电子信息教研室中原工学院,第十二讲,回顾及本讲重点,回顾 汇编语言概述 汇编语言的基本语法 本讲重点 伪指令语句格式 宏指令语句格式,7.3 伪指令,符号定义伪指令(赋值语句) 名字EQU表达式 名字表达式 该语句把表达式的值赋给符号名,在同一程序中,用EQU语句 赋值的符号名不能被重新赋值,但用“”号赋值的符号名可以被 重新赋值。 同一个标号不能被两次赋值,除非先清除标号的原值。与EQU 相对应的清除指令:PURGE PURGE ABC ;清除对ABC的赋值,7.3 伪指令,数据定义伪指令DB、DW、DD、DQ、DT 用来定义存储单元的符号名,并初始化该单元或该单元开始的若 干连续单元。初始化可以采用确定值,也可以采用不确定值。 DB (Define Byte) 格式:符号名 DB 表达式的值或项表中的每一项定义为一个字节数,它们从符号地址开始按字节连续存放,直到表中数据项结束(地址递增方向)。表达式的值或或项应小于8位2进制数表示的最大值。 例如: FIRST DB 3, 18, 25H, ABC SECOND DB ?,7.3 伪指令,DW(Define word) 格式: 符号名 DW 表达式的值或项表中的每一项都是两个字节数,应小于16位2进制数表示的最大值。 例如: DON DW 10 DUP(?) ;在内存中留出10个空单元,其中 每个项都是2个字节。,7.3 伪指令,DD:定义双字 DQ:定义4个字 DT:定义10个字 例如: N1 DD 2.5, 3.2E+2 DD可以用来定义有小数点的十进制数或用科学计数 法表示的数据。小数在汇编时被译成四字节浮点数, 尾数在低地址一端,阶码在高地址一端。 DQ和DT也允许浮点数形式。 COUNT DT ? ;在内存中留出1个空单元。,7.3 伪指令,举例 S1 DB ABCDEF S2 DB A, B, C, D, E, F S3 DW AB, CD, EF S4 DD AB, CD, EF,7.3 伪指令,带DUP的表达式 DUP 是定义重复数据操作符 例: DB1 DB 10H DUP(?) DB2 DB 10H DUP(ABCD) DB3 DB 2H DUP(0,2,?) 第一个语句表示保留10H个字节;第二个语句是重 复10H个字符串ABCD,共占用40H个字节;第三个 语句是重复2H个数字串和空单元。,7.3 伪指令,注意数据定义与引用时,要保证数据类型正确性。 举例: 数据定义: D1 DB 3 DUP(12H) 引用: MOV AX, D1 ;引用错误 MOV AX, WORD PTR D1 ;正确,7.3 伪指令,存储单元类型定义伪指令BYTE、WORD、DWORD 在指令中与PTR运算符结合起来使用。 例如: MOV BYTE PTRDI, 00 MOV WORD PTR1000, 00 INC WORD PTRDI JMP DWORD PTR2000H,7.3 伪指令,段定义伪指令SEGMENT、ENDS、ASSUME、ORG SEGMENT、ENDS成对出现,定义段。 格式: 段名 SEGMENT 段的内容 段名 ENDS 段名为用户自定义的标号,可以为任何有效的标识符。 例如: DATA_SEG SEGMENT . DATA_SEG ENDS,7.3 伪指令,ASSUME:用于指定用户定义的哪一个段为数据段、代码段或堆栈段。对DS、SS只知道段基址,而实际值要在程序中使用传送命令来具体赋值。 例如: ASSUME CS:CODE_SEG, DS:DATA_SEG 该指令指出CODE_SEG的段地址在CS中,DATA_SEG的 段地址在DS中,但并没有把段地址装入相应的段寄存 器。因此除了CS以外(CS通过在启动代码段时由段间 转移装入),将段地址装入相应寄存器的工作必须通 过MOV传送指令完成。,7.3 伪指令,例: CODE_SEG SEGMENT ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK:SEG START: MOV AX,DATA_SEG MOV DS,AX MOV AX, STACK_SEG MOV SS,AX CODE_SEG ENDS,7.3 伪指令,例:实现两个16位二进制数的相乘 DATA SEGMENT M1 DW 00FFH M2 DW 00FFH P1 DW ? P2 DW ? DATA ENDS STACK SEMENT ST DB 100 DUP(?) TOP EQU LENGTH ST STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX,数据段,包括数据定义,堆栈段,代码段,7.3 伪指令,MOV AX, TOP MOV SP, AX MOV BX,OFFSET M1 MOV AX,BX MOV DX,00 MOV BX,OFFSET M2 MUL BX MOV BX,OFFSET P1 MOV BX,AX MOV BX, OFFSET P2 MOV BX,DX HLT CODE ENDS END START,代码段,7.3 伪指令,过程定义伪指令PROC、ENDP、NEAR、FAR PROC、ENDP成对出现,用于定义过程,即子过程。 格式: 过程名 RPOC NEAR(或FAR) 过程的内容 过程名 ENDP 过程名为用户自定义的标号,定义过程是为实现子过程调用而设的。 调用格式为: CALL 过程名 过程由RET指令返回。可以设置多个返回点。,7.3 伪指令,过程调用分为段内调用和段间调用 段内调用和段间调用由被调用子程序头部的FAR或 NEAR伪指令指出,NEAR可以省略。 段内调用和段间调用的返回指令助记符都是RET, 但执行的操作不同,段内调用时汇编程序对RET产生 指令编码C3H,实现段内返回;段间调用时汇编程序 对RET产生指令编码CBH,实现段间返回。,7.3 伪指令,模块开始/结束伪指令 模块开始伪指令 格式: NAME 模块名 指明程序模块的开始,并指出模块名。若该伪指令默认,则取TITLE语句中的页标题前6个字符;若没有TITLE语句,则取源程序文件名为模块名。 模块结束伪指令 格式: END启动标号或过程名 该伪指令告诉汇编程序源文件结束。,7.3 伪指令,连接伪指令PUBLIC、EXTRN、INCLUDE、GROUP 公用符号伪指令 格式: PUBLIC符号名1,符号名2, PUBLIC伪指令说明的自定义符号名可由其他程序 模块引用,没有说明的符号名不能被其他模块引用。 符号名可以是变量名、标号、过程名或符号常量等。 引用符号伪指令 格式: EXTRN符号名1:类型,符号名2:类型 本模块引用其他模块定义的符号名必须用EXTRN进行说明,否则不能引用。,7.3 伪指令,插入伪指令(或称包含伪指令) 格式: INCLUDE模块名 在本模块汇编时,把另一模块插入该伪指令处一起汇编,被插入的模块可以是不完整的。 合段伪指令(或称组合伪指令) 格式: 组名GROUP段名1,段名2,段名3, 把其后指定的段组合在一个64KB的物理段中,组名和段名都是自定义符,但不可重名。,7.4 宏指令,为了简化汇编语言源程序的书写,引入“宏指令”, 有效地缩短了源程序的长度,使源程序易读,也减少了 由于重复书写而引起的错误。 与过程区别 宏调用语句由宏汇编程序MASM86中的宏处理程序来识别,并完成相应的处理;而调用过程的CALL语句由CPU来执行。 过程调用能有效地缩短目标代码的长度,节省内存空间。 宏调用有较快的执行速度。,7.4 宏指令,同一条宏指令在各次调用过程中可完成不同的操作;一个“过程”在各次调用中只能完成完全相同的功能。 结论:当需要多次执行的程序段比较长,对速度要求不很高,并且不要求修改参数的情况下,宜采用过程调用方式;若要求多次执行的程序段比较短,或希望在各次调用中能修改某些参数时,则宜采用宏调用方式。,7.4 宏指令,宏指令使用步骤 宏定义:对各个宏指令进行定义,并分别起名字; 宏调用:在需要的地方,通过宏指令名来调用; 宏扩展:由宏汇编程序用宏定义中的指令来代替宏调用中的宏指令名。,7.4 宏指令,宏定义伪指令(MACRO/ENDM) 格式: 宏指令名 MACRO 参数,参数, (宏定义体) ENDM,7.4 宏指令,举例:定义两个数相加的宏 DECADD1 MACRO OPR1,OPR2 MOV AL,OPR1 ADD AL,OPR2 DAA MOV OPR1,AL ENDM 假如有如下调用: DECADD1 DL,BUFFER DECADD1 AREA1,AREA2,7.4 宏指令,汇编时进行宏扩展,得到以下指令: DECADD1 DL,BUFFER 扩展为: MOV AL,DL ADD AL,BUFFER DAA MOV DL,AL DECADD1 AREA1,AREA2扩展为: MOV AL,AREA1 ADD AL,AREA2 DAA MOV AREA1,AL 宏扩展后,原来宏定义体中的指令前面加上了符号“+”,以示区别。,作业,下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。 VAR1 DB 10,2 VAR2 DW 5DUP(?),0 VAR3 DB HOW ARE YOU?,$ VAR4 DD -1,1,0,作业,数据定义语句如下所示: FIRST DB 90H,5FH,6EH,69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) FORTH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拱式桥桥梁施工方案(3篇)
- 民间庙会活动策划方案案例(3篇)
- 高校过年活动策划方案范文(3篇)
- 扬中活动策划方案收费标准(3篇)
- 露台泥土回填施工方案(3篇)
- 室内周末施工方案(3篇)
- 运营专业考试题库及答案
- 心理变态分析题目及答案
- 小学问答题目及答案
- 随自然而行300字(8篇)
- JC-T 2586-2021 装饰混凝土防护材料
- 临床医学工程-题库
- 知识题库-人社练兵比武竞赛测试题及答案(八)
- 屋顶分布式光伏发电项目EPC总承包工程招投标书范本
- 《育婴师培训》-课件:环境消毒基础知识
- 关于规范村级财务管理的审计建议
- 体检中心礼仪培训课件
- 独立基础教学课件
- 会计从业资格基础知识汇总
- 长安欧尚A800说明书
- 项目干系人管理评估
评论
0/150
提交评论