微机原理与接口技术第七章_第1页
微机原理与接口技术第七章_第2页
微机原理与接口技术第七章_第3页
微机原理与接口技术第七章_第4页
微机原理与接口技术第七章_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术第七章1第1页,课件共33页,创作于2023年2月上机环境硬件系统软件

应用软件

操作系统:DOS系统编辑器:EDIT.exe编程序:MASM.exe连接程序:LINK.exe调试程序:DEBUG.exe用户开发的程序:ABC.exe等CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备2第2页,课件共33页,创作于2023年2月

汇编语言上机过程D:>EDITABC.asmD:>MASMABC;有语法错,回EDIT下改该程序D:>LINKABC;有错,回在EDIT下改程序D:>ABC运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。D:>DEBUGABC.exe3第3页,课件共33页,创作于2023年2月编辑源程序EDITABC.ASM汇编源程序MASMABC.ASM形成目标程序ABC.OBJ连接目标程序LINKABC.OBJ形成可执行程序ABC.EXE运行程序用DEBUG调试4第4页,课件共33页,创作于2023年2月§7.2伪指令(指示性语句)

伪指令是汇编语言程序中的指示性语句,它体现程序员的汇编意图,其作用是在源程序汇编时指导汇编程序汇编而不会产生目标代码和占用内存。伪指令的具体功能是向汇编程序提供下列信息:如何分段、段的定义和说明,段间关系,模块的定义和说明以及模块间的关系,数据的定义,开始汇编和结束汇编等。

5第5页,课件共33页,创作于2023年2月指示性语句与指令性语句:指令性语句是用指令系统中的指令构成的语句。例MOVAX,BX指示性语句是指示汇编程序进行汇编的操作。例MOVAX,4+8中的+

codeSEGMENT中的SEGMENTMOVBX,OFFSETstring中的OFFSET6第6页,课件共33页,创作于2023年2月指示性语句与指令性语句区别一个程序经汇编,连接和装入内存后,在执行程序之前:

◢指示性语句的功能已经完成,故又称伪指令。

◢而指令性语句的功能尚未完成,需控制CPU去执行,才能完成。7第7页,课件共33页,创作于2023年2月一、符号定义伪指令

1、等值语句:

格式

符号名EQU表达式作用是用符号名等值指定的表达式其中表达式可以是任何有效的操作数汇编时用语句中的表达式代替程序中符号所在的地方。应用:1.定义符号常量,方便修改程序。2.某表达式多次出现时,用等值伪指令可以方便编程。8第8页,课件共33页,创作于2023年2月例如:EMPEQU8COUNTEQUEMP+6

2、等号语句:格式

符号名=表达式作用是用符号名等值指定的表达式,用“=”定义的符号名可重新定义。例如:NMU=6NMU=NMU+69第9页,课件共33页,创作于2023年2月二、数据定义伪指令格式

变量名助记符操作数[,操作数,...]

用来定义程序中所用的内存操作数。其中变量名指示内存操作数的地址(符号地址)助记符指示内存操作数的类型(字节、字、双字等)操作数指示内存操作数的内容。

常用的类型助记符有:DB指示其后的操作数为字节类型DW指示其后的操作数为字类型DD指示其后的操作数为双字类型DQ指示其后的操作数为八字节类型DT指示其后的操作数为十字节类型10第10页,课件共33页,创作于2023年2月例:DATA-BYTEDB10,4,10HDATA-WORDDW100,100H,—5HDATA-DWDD6+20,0FFFDH数据定义伪指令中的表达式也可以是字符串如: MESS DB ‘ABCD’

数据定义伪指令的表达式中会出现“?”数据项,ABCDB ?,?,DEFDW ?,50,?这时汇编程序会对“?”数据项保留相应的存储空间,而不存入数据。11第11页,课件共33页,创作于2023年2月0AH04H10HDATA-BYTE64H00HDATA-WORD00H01HFBHFFH1AH00H00H00HDATA-DW100100H-52612第12页,课件共33页,创作于2023年2月MESS41H42H43H44HABCDEF32H注意:3个及其以上的字符,只能用DB定义可用DUP复制操作符定义相同的操作数,其格式为

重复次数DUP(操作数)

例EEDB3DUP(4)等价于EEDB4,4,413第13页,课件共33页,创作于2023年2月可用DUP复制操作符定义相同的操作数,其格式为

重复次数DUP(操作数)

例EEDB3DUP(4)等价于EEDB4,4,4例:EDDB10DUP(?)相当于定义10个空单元。14第14页,课件共33页,创作于2023年2月三、段定义伪操作

格式

段名SEGMENT[定位类型][组合类型][类别]、、、、、、段名ENDS段定义由伪操作SEGMENT开始、ENDS结束。其中:SEGMENT和ENDS必须成对出现,且语句前必须有段名,段名必须相同。SEGMENT和ENDS语句之间可以有指令和其他伪操作,表示存放在该段内存的变量、指令或其他伪操作对该段内存的处理程序中可以定义多个段。程序经汇编、连接及装入内存后,段名为一具体的段值。15第15页,课件共33页,创作于2023年2月AASEGMENT;数据段1

str1DB'Hello!’AAENDSBBSEGMENT;数据段2

str2DB6dup(?)BBENDSCCSEGMENT;代码段

ASSUMECS:CCASSUMEDS:AA,ES:BB

start:CLDMOVAX,AA

MOVDS,AXLEASI,str1数据传送源程序:MOVAX,BB

MOVES,AXLEADI,str2MOVCX,6REPMOVSBMOVAH,4CHINT21HCCENDSENDstart16第16页,课件共33页,创作于2023年2月定位类型、组合类型和类别说明段的属性,它们用方括号括起来表示可以缺省。若不缺省,各项排序不能错,项与项要用空格分开。

定位类型有四种:PAGE(页)型要求该段物理地址低8位全为0PARA(节)型要求该段物理地址低4位全为0WORD型要求该段物理地址码为偶数(最低位为0)BYTE型该段的物理地址可为任意值。组合类型说明本段与其它段的关系。‘类别’它可以是任何合法的名称。17第17页,课件共33页,创作于2023年2月四、段寄存器说明ASSUME伪指令

格式

ASSUME段寄存器:段名[,段寄存器:段名,…]

其中段寄存器为CS、DS、ES、SS中的一个

段名为用伪操作SEGMENT定义过的段名例

ASSUMECS:CC,DS:AAASSUME伪操作的作用指示汇编程序指令中用到的标号、过程及变量所在的段。其中对标号、过程必须用CS段寄存器指示

对变量可用CS、DS、ES、SS段寄存器指示18第18页,课件共33页,创作于2023年2月

若未用ASSUME语句指示指令中用到的标号、过程和变量所在的段,汇编程序将给出错误信息。ASSUME语句只起指示作用,并无实际的操作。在程序中引用定义的变量做内存操作数时,需按寻址方式用传送指令(如MOV)给相应的段寄存器赋值。19第19页,课件共33页,创作于2023年2月例用程序实现1234H+5678HdataSEGMENTvalueDW1234H,5678HresultDW?

dataENDS

codeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;给DS赋值MOVDS,AXMOVAX,value;取数ADDAX,value+2;两数相加MOVresult,AX;保存结果MOVAH,4CH;返回DOSINT21H

codeENDSENDstart12H34H78H56Hvalueresult20第20页,课件共33页,创作于2023年2月五、过程定义伪操作

格式

过程名PROC类型、、、过程名ENDP过程定义由伪操作PROC开始、ENDP结束。其中:PROC和ENDP必须成对出现,且语句前必须有过程名,过程名必须相同。PROC和ENDP语句之间为子程的指令序列。程序中可以定义多个过程。程序经汇编、连接及装入内存后,过程名为一具体的内存地址,指示子程入口。21第21页,课件共33页,创作于2023年2月过程名常用作CALL调用指令的操作数,子程的最后安排RET返回指令,使执行完子程后能返回调用处。过程有两种类型:NEAR和FAR

无类型项时,默认为NEAR类型。当过程与调用指令不在同一段时,应将过程定义为FAR类型。过程类型决定子程中RET的返回类型22第22页,课件共33页,创作于2023年2月例1displayPROC、、、、、、RET;NEAR属性的过程对应段内返回displayENDP例2displayPROCFAR、、、、、、RET;FAR属性的过程对应段间返回displayENDP23第23页,课件共33页,创作于2023年2月六、模块定义和程序结束伪操作1.NAME和TITLE伪操作

格式

NAME

模块名

格式

TITLE

模块名在源程序开始可用NAME或TITLE为模块命名,模块名的作用是指示给连接程序进行连接用。源程序中可无模块定义,此时源文件名作为模块名。24第24页,课件共33页,创作于2023年2月END伪操作格式

END启动地址作用是指示源程序到此结束。汇编程序对END之后的语句不进行处理。程序中所有有效语句应放在END语句之前。源程序中必须有END结束语句。汇编程序对无END语句的源程序不进行处理,只给出无END语句错误信息。25第25页,课件共33页,创作于2023年2月七、数值回送操作符:(自学)课前5分钟TYPE,LENGTH,SIEE,OFFSET,SEG5种。把一些特征或存贮器地址的一部分作为数值回送。·TYPE格式:TYPEvariable变量则回送该变量的以字节数表示的类型(DB为1,DW为2,DD为4,DQ为8,DT为10)或label标号回送标号类型数值(NEAR为-1,FAR为-2)例:ARRAYDW1,2,3ADDSI,TYPEARRAY汇编程序其形式:ADDSI,226第26页,课件共33页,创作于2023年2月·LENGTH格式:LENGTHvariable对于变量中使用DUP汇编回送分配给变量单元数,其他情况回送1。例:FESSDW100DUP(0) 对于MOVCX,LENGTHFEES 汇编程序将其形式:MOVCX,100 其他情况27第27页,课件共33页,创作于2023年2月例:ARRAYDW1,2,3 对于指令MOVCX,LENGTHARRAY 汇编程序将使其形式为:MOVCX,1例:TABLEDB‘ABCD’ 对于指令MOVCX,LENGTHTABLE汇编程序使其形式为:MOVCX,128第28页,课件共33页,创作于2023年2月·SIEE格式:SIEEvariable 回送分配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论