微型计算机原理及应用-伪指令



《微型计算机原理及应用-伪指令》由会员分享,可在线阅读,更多相关《微型计算机原理及应用-伪指令(28页珍藏版)》请在装配图网上搜索。
1、,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,中原工学院电子信息学院-微机原理课程,微型计算机原理及应用,主 讲:李春雷(,),学 时:,64,电子信息教研室,中原工学院,第十二讲,回顾及本讲重点,回顾,汇编语言概述,汇编语言的基本语法,本讲重点,伪指令语句格式,宏指令语句格式,7.3,伪指令,符号定义伪指令(赋值语句),名字,EQU,表达式,名字,表达式,该语句把表达式的值赋给符号名,在同一程序中,用,EQU,语句,赋值的符号名不能被重新赋值,但用“”号赋值的符号名可以被,重新赋值。,同一个标号不能被两次赋值,除非先清除标号的原值。与,EQU,相对应的
2、清除指令:,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
3、 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,伪指令,
4、举例,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),引用:
5、,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,段名为用户自定义的标号,可以为任何有效的标识符
6、。,例如:,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,伪指令,例:,
7、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
8、 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,、,NE
9、AR,、,FAR,PROC,、,ENDP,成对出现,用于定义过程,即子过程。,格式:,过程名,RPOC NEAR,(或,FAR,),过程的内容,过程名,ENDP,过程名为用户自定义的标号,定义过程是为实现子过程调用而设的。,调用格式为:,CALL,过程名,过程由,RET,指令返回。可以设置多个返回点。,7.3,伪指令,过程调用分为段内调用和段间调用,段内调用和段间调用由被调用子程序头部的,FAR,或,NEAR,伪指令指出,,NEAR,可以省略。,段内调用和段间调用的返回指令助记符都是,RET,,,但执行的操作不同,段内调用时汇编程序对,RET,产生,指令编码,C3H,,实现段内返回;段间调用时
10、汇编程序,对,RET,产生指令编码,CBH,,实现段间返回。,7.3,伪指令,模块开始,/,结束伪指令,模块开始伪指令,格式:,NAME,模块名,指明程序模块的开始,并指出模块名。若该伪指令默认,则取,TITLE,语句中的页标题前,6,个字符;若没有,TITLE,语句,则取源程序文件名为模块名。,模块结束伪指令,格式:,END,启动标号或过程名,该伪指令告诉汇编程序源文件结束。,7.3,伪指令,连接伪指令,PUBLIC,、,EXTRN,、,INCLUDE,、,GROUP,公用符号伪指令,格式:,PUBLIC,符号名,1,,符号名,2,,,PUBLIC,伪指令说明的自定义符号名可由其他程序,模块
11、引用,没有说明的符号名不能被其他模块引用。,符号名可以是变量名、标号、过程名或符号常量等。,引用符号伪指令,格式:,EXTRN,符号名,1,:类型,符号名,2,:类型,本模块引用其他模块定义的符号名必须用,EXTRN,进行说明,否则不能引用。,7.3,伪指令,插入伪指令,(,或称包含伪指令,),格式:,INCLUDE,模块名,在本模块汇编时,把另一模块插入该伪指令处一起汇编,被插入的模块可以是不完整的。,合段伪指令,(,或称组合伪指令,),格式:组名,GROUP,段名,1,,段名,2,,段名,3,,,把其后指定的段组合在一个,64KB,的物理段中,组名和段名都是自定义符,但不可重名。,7.4,
12、宏指令,为了简化汇编语言源程序的书写,引入“宏指令”,,有效地缩短了源程序的长度,使源程序易读,也减少了,由于重复书写而引起的错误。,与过程区别,宏调用语句由宏汇编程序,MASM86,中的宏处理程序来识别,并完成相应的处理;而调用过程的,CALL,语句由,CPU,来执行。,过程调用能有效地缩短目标代码的长度,节省内存空间。,宏调用有较快的执行速度。,7.4,宏指令,同一条宏指令在各次调用过程中可完成不同的操作;一个“过程”在各次调用中只能完成完全相同的功能。,结论:当需要多次执行的程序段比较长,对速度要求不很高,并且不要求修改参数的情况下,宜采用过程调用方式;若要求多次执行的程序段比较短,或希
13、望在各次调用中能修改某些参数时,则宜采用宏调用方式。,7.4,宏指令,宏指令使用步骤,宏定义:对各个宏指令进行定义,并分别起名字;,宏调用:在需要的地方,通过宏指令名来调用;,宏扩展:由宏汇编程序用宏定义中的指令来代替宏调用中的宏指令名。,7.4,宏指令,宏定义伪指令,(MACRO/ENDM),格式:,宏指令名,MACRO,参数,,参数,,(,宏定义体,),ENDM,7.4,宏指令,举例:定义两个数相加的宏,DECADD1MACROOPR1,,,OPR2,MOV AL,,,OPR1,ADD AL,,,OPR2,DAA,MOV OPR1,,,AL,ENDM,假如有如下调用:,DECADD1 DL
14、,,,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 DB10,,,2,VAR2DW5DUP,
15、(?),,0,VAR3DBHOW ARE YOU,?,,$,VAR4DD-1,,,1,,,0,作业,数据定义语句如下所示,:,FIRST DB 90H,,,5FH,,,6EH,,,69H,SECOND DB 5 DUP(?),THIRD DB 5 DUP(?),FORTH DB 5 DUP(?),自,FIRST,单元开始存放的是一个四字节的十六进制数,(,低位字节在前,),要求,:,(,1,)编一段程序将这个数左移两位、右移两位后存放到自,SECOND,开始的单元,(,注意保留移出部分。,(,2,)编一段程序将这个数求补以后存放到自,FORTH,开始的单元。,试编程序将内存从,40000H,到,4BFFFH,的每个单元中均写入,55H,,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将,AL,置,7EH,;只要有错,则将,AL,置,81H,。,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。