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

上传人:tian****1990 文档编号:11533157 上传时间:2020-04-27 格式:PPT 页数:28 大小:275.31KB
返回 下载 相关 举报
微型计算机原理及应用-伪指令.ppt_第1页
第1页 / 共28页
微型计算机原理及应用-伪指令.ppt_第2页
第2页 / 共28页
微型计算机原理及应用-伪指令.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
微型计算机原理及应用,主讲:李春雷(lichunlei1979),学时:64,电子信息教研室中原工学院,第十二讲,回顾及本讲重点,回顾汇编语言概述汇编语言的基本语法本讲重点伪指令语句格式宏指令语句格式,7.3伪指令,符号定义伪指令(赋值语句)名字EQU表达式名字表达式该语句把表达式的值赋给符号名,在同一程序中,用EQU语句赋值的符号名不能被重新赋值,但用“”号赋值的符号名可以被重新赋值。同一个标号不能被两次赋值,除非先清除标号的原值。与EQU相对应的清除指令:PURGEPURGEABC;清除对ABC的赋值,7.3伪指令,数据定义伪指令DB、DW、DD、DQ、DT用来定义存储单元的符号名,并初始化该单元或该单元开始的若干连续单元。初始化可以采用确定值,也可以采用不确定值。DB(DefineByte)格式:符号名DB表达式的值或项表中的每一项定义为一个字节数,它们从符号地址开始按字节连续存放,直到表中数据项结束(地址递增方向)。表达式的值或或项应小于8位2进制数表示的最大值。例如:FIRSTDB3,18,25H,ABCSECONDDB?,7.3伪指令,DW(Defineword)格式:符号名DW表达式的值或项表中的每一项都是两个字节数,应小于16位2进制数表示的最大值。例如:DONDW10DUP(?);在内存中留出10个空单元,其中每个项都是2个字节。,7.3伪指令,DD:定义双字DQ:定义4个字DT:定义10个字例如:N1DD2.5,3.2E+2DD可以用来定义有小数点的十进制数或用科学计数法表示的数据。小数在汇编时被译成四字节浮点数,尾数在低地址一端,阶码在高地址一端。DQ和DT也允许浮点数形式。COUNTDT?;在内存中留出1个空单元。,7.3伪指令,举例S1DBABCDEFS2DBA,B,C,D,E,FS3DWAB,CD,EFS4DDAB,CD,EF,7.3伪指令,带DUP的表达式DUP是定义重复数据操作符例:DB1DB10HDUP(?)DB2DB10HDUP(ABCD)DB3DB2HDUP(0,2,?)第一个语句表示保留10H个字节;第二个语句是重复10H个字符串ABCD,共占用40H个字节;第三个语句是重复2H个数字串和空单元。,7.3伪指令,注意数据定义与引用时,要保证数据类型正确性。举例:数据定义:D1DB3DUP(12H)引用:MOVAX,D1;引用错误MOVAX,WORDPTRD1;正确,7.3伪指令,存储单元类型定义伪指令BYTE、WORD、DWORD在指令中与PTR运算符结合起来使用。例如:MOVBYTEPTRDI,00MOVWORDPTR1000,00INCWORDPTRDIJMPDWORDPTR2000H,7.3伪指令,段定义伪指令SEGMENT、ENDS、ASSUME、ORGSEGMENT、ENDS成对出现,定义段。格式:段名SEGMENT段的内容段名ENDS段名为用户自定义的标号,可以为任何有效的标识符。例如:DATA_SEGSEGMENT.DATA_SEGENDS,7.3伪指令,ASSUME:用于指定用户定义的哪一个段为数据段、代码段或堆栈段。对DS、SS只知道段基址,而实际值要在程序中使用传送命令来具体赋值。例如:ASSUMECS:CODE_SEG,DS:DATA_SEG该指令指出CODE_SEG的段地址在CS中,DATA_SEG的段地址在DS中,但并没有把段地址装入相应的段寄存器。因此除了CS以外(CS通过在启动代码段时由段间转移装入),将段地址装入相应寄存器的工作必须通过MOV传送指令完成。,7.3伪指令,例:CODE_SEGSEGMENTASSUMECS:CODE_SEG,DS:DATA_SEG,SS:STACK:SEGSTART:MOVAX,DATA_SEGMOVDS,AXMOVAX,STACK_SEGMOVSS,AXCODE_SEGENDS,7.3伪指令,例:实现两个16位二进制数的相乘DATASEGMENTM1DW00FFHM2DW00FFHP1DW?P2DW?DATAENDSSTACKSEMENTSTDB100DUP(?)TOPEQULENGTHSTSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AX,数据段,包括数据定义,堆栈段,代码段,7.3伪指令,MOVAX,TOPMOVSP,AXMOVBX,OFFSETM1MOVAX,BXMOVDX,00MOVBX,OFFSETM2MULBXMOVBX,OFFSETP1MOVBX,AXMOVBX,OFFSETP2MOVBX,DXHLTCODEENDSENDSTART,代码段,7.3伪指令,过程定义伪指令PROC、ENDP、NEAR、FARPROC、ENDP成对出现,用于定义过程,即子过程。格式:过程名RPOCNEAR(或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宏指令,举例:定义两个数相加的宏DECADD1MACROOPR1,OPR2MOVAL,OPR1ADDAL,OPR2DAAMOVOPR1,ALENDM假如有如下调用:DECADD1DL,BUFFERDECADD1AREA1,AREA2,7.4宏指令,汇编时进行宏扩展,得到以下指令:DECADD1DL,BUFFER扩展为:MOVAL,DLADDAL,BUFFERDAAMOVDL,ALDECADD1AREA1,AREA2扩展为:MOVAL,AREA1ADDAL,AREA2DAAMOVAREA1,AL宏扩展后,原来宏定义体中的指令前面加上了符号“+”,以示区别。,作业,下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。VAR1DB10,2VAR2DW5DUP(?),0VAR3DBHOWAREYOU?,$VAR4DD-1,1,0,作业,数据定义语句如下所示:FIRSTDB90H,5FH,6EH,69HSECONDDB5DUP(?)THIRDDB5DUP(?)FORTHDB5DUP(?)自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:(1)编一段程序将这个数左移两位、右移两位后存放到自SECOND开始的单元(注意保留移出部分。(2)编一段程序将这个数求补以后存放到自FORTH开始的单元。试编程序将内存从40000H到4BFFFH的每个单元中均写入55H,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将AL置7EH;只要有错,则将AL置81H。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!