《微机原理与接口技术第七章精品文稿.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术第七章精品文稿.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理与接口技术第七章1第1页,本讲稿共33页上机环境上机环境硬件硬件系统软件系统软件应用软件应用软件操作系统:操作系统:DOS系统系统编辑器编辑器:EDIT.exe编程序编程序:MASM.exe连接程序连接程序:LINK.exe调试程序:调试程序:DEBUG.exe用户开发的程序:用户开发的程序:ABC.exe等等CPU、存储器、存储器(ROM、RAM)、I/O接口、输入、输出设备接口、输入、输出设备2第2页,本讲稿共33页汇编语言上机过程汇编语言上机过程D:EDITABC.asmD:MASMABC;有语法错,回有语法错,回EDIT下改该程序下改该程序D:LINKABC;有错,回在有错,回
2、在EDIT下改程序下改程序D:ABC运行结果错,回运行结果错,回EDIT下改程序下改程序或在或在DEBUG下调试,找原因。下调试,找原因。D:DEBUGABC.exe3第3页,本讲稿共33页编辑源程序EDIT ABC.ASM汇编源程序MASM ABC.ASM形成目标程序ABC.OBJ连接目标程序LINK ABC.OBJ形成可执行程序ABC.EXE运行程序用DEBUG调试4第4页,本讲稿共33页7.27.2伪指令伪指令(指示性语句指示性语句)伪指令是汇编语言程序中的伪指令是汇编语言程序中的指示性语句指示性语句,它体现,它体现程序员的汇编意图,其作用是在源程序汇编时指导汇程序员的汇编意图,其作用是
3、在源程序汇编时指导汇编程序汇编而不会产生目标代码和占用内存。伪指令编程序汇编而不会产生目标代码和占用内存。伪指令的具体功能是向汇编程序提供下列信息:如何分段、的具体功能是向汇编程序提供下列信息:如何分段、段的定义和说明,段间关系,模块的定义和说明以及段的定义和说明,段间关系,模块的定义和说明以及模块间的关系,数据的定义,开始汇编和结束汇编等。模块间的关系,数据的定义,开始汇编和结束汇编等。5第5页,本讲稿共33页指示性语句与指令性语句:指示性语句与指令性语句:l指指令令性性语语句句是是用用指指令令系系统统中中的的指指令令构构成成的的语语句句。例例 MOV AX,BXMOV AX,BXl指示性语
4、句指示性语句是指示汇编程序进行汇编的操作。是指示汇编程序进行汇编的操作。例例 MOV AX,4 MOV AX,4+8 8 中的中的+code SEGMENT code SEGMENT 中的中的SEGMENTSEGMENT MOV BX,OFFSET string MOV BX,OFFSET string 中的中的OFFSETOFFSET6第6页,本讲稿共33页l指示性语句与指令性语句区别指示性语句与指令性语句区别一一个个程程序序经经汇汇编编,连连接接和和装装入入内内存存后后,在在执执行行程程序序之之前:前:指示性语句的功能已经完成,故又称伪指令。指示性语句的功能已经完成,故又称伪指令。而而指指
5、令令性性语语句句的的功功能能尚尚未未完完成成,需需控控制制CPUCPU去去执执行行,才才能完成。能完成。7第7页,本讲稿共33页一、符号定义伪指令一、符号定义伪指令1、等值语句:、等值语句:格式格式 符号名符号名 EQU EQU 表达式表达式作用是用符号名等值指作用是用符号名等值指定的表达式定的表达式其中表达式可以是任何有效的操作数其中表达式可以是任何有效的操作数汇汇编编时时用用语语句句中中的的表表达达式式代代替替程程序序中中符符号号所所在在的的地地方。方。应用:应用:1.1.定义符号常量,方便修改程序。定义符号常量,方便修改程序。2.2.某某表表达达式式多多次次出出现现时时,用用等等值值伪伪
6、指指令令可可以以方方便便编程。编程。8第8页,本讲稿共33页例如:EMP EQU 8 COUNT EQU EMP+6 2、等号语句:、等号语句:格式格式 符号名符号名 =表达式表达式 作用是用符号名等值指作用是用符号名等值指定的表达式,定的表达式,用用“=”定义的符号名可重新定义。定义的符号名可重新定义。例如:NMU=6 NMU=6 NMU=NMU+6 NMU=NMU+69第9页,本讲稿共33页二、数据定义伪指令二、数据定义伪指令格式格式 变量名变量名 助记符助记符 操作数操作数 ,操作数操作数,.,.用来定义程序中所用的内存操作数。用来定义程序中所用的内存操作数。其中其中变量名变量名指示内存
7、操作数的地址(符号地址)指示内存操作数的地址(符号地址)助助 记记 符符指指 示示 内内 存存 操操 作作 数数 的的 类类 型型(字字 节节、字字、双双 字字 等等)操作数操作数指示内存操作数的内容。指示内存操作数的内容。常用的类型助记符有:常用的类型助记符有:DBDB 指示其后的操作数为字节类型指示其后的操作数为字节类型DWDW 指示其后的操作数为字类型指示其后的操作数为字类型DDDD 指示其后的操作数为双字类型指示其后的操作数为双字类型DQDQ 指示其后的操作数为八字节类型指示其后的操作数为八字节类型DTDT 指示其后的操作数为十字节类型指示其后的操作数为十字节类型10第10页,本讲稿共
8、33页例:DATA-BYTE DB 10,4,10H DATA-WORD DW 100,100H,5H DATA-DW DD 6+20,0FFFDH数据定义伪指令中的表达式也可以是字符串如:MESS DBABCD 数据定义伪指令的表达式中会出现“?”数据项,ABC DB?,?,DEF DW?,50,?这时汇编程序会对“?”数据项保留相应的存储空间,而不存入数据。11第11页,本讲稿共33页0AH04H10HDATA-BYTE64H00HDATA-WORD00H01HFBHFFH1AH00H00H00HDATA-DW100100H-52612第12页,本讲稿共33页MESS41H42H43H44
9、HABCDEF32H注注意意:3 3个个及及其其以以上上的的字字符符,只只能能用用DBDB定义定义可可用用DUP复复制制操操作作符符定定义义相同的操作数,其格式为相同的操作数,其格式为重重复复次次数数DUP(操操作作数数)例例EEDB3DUP(4)等价于等价于EEDB4,4,413第13页,本讲稿共33页可可用用DUP复复制制操操作作符符定定义义相相同同的的操操作作数数,其其格格式为式为重复次数重复次数DUP(操作数操作数)例例EEDB3DUP(4)等价于等价于EEDB4,4,4例:例:EDDB10DUP(?)(?)相当于定义相当于定义10个空单元。个空单元。14第14页,本讲稿共33页三、段
10、定义伪操作三、段定义伪操作格式格式 段名段名 SEGMENT SEGMENT 定位类型定位类型组合类型组合类型类别类别 、段名段名 ENDS ENDS 段定义由伪操作段定义由伪操作SEGMENTSEGMENT开始开始、ENDSENDS结束结束。其其中中:SEGMENT SEGMENT 和和ENDS ENDS 必必须须成成对对出出现现,且且语语句句前前必必须须有段名,有段名,段名必须相同段名必须相同。SEGMENT SEGMENT和和ENDSENDS语句之间可以有指令和其他伪操作语句之间可以有指令和其他伪操作,表表示示存存放放在在该该段段内内存存的的变变量量、指指令令或或其其他他伪伪操操作作对对
11、该该段段内内存存的处理的处理 程序中可以定义多个段。程序中可以定义多个段。程序经汇编、连接及装入内存后,段名为一具体的段值。程序经汇编、连接及装入内存后,段名为一具体的段值。15第15页,本讲稿共33页AASEGMENT;数据段数据段1str1DBHello!AAENDSBBSEGMENT;数据段数据段2str2DB6dup(?)BBENDSCCSEGMENT;代码段代码段ASSUMECS:CCASSUMEDS:AA,ES:BBstart:CLDMOVAX,AAMOVDS,AXLEASI,str1数据传送源程序:数据传送源程序:MOVAX,BBMOVES,AXLEADI,str2MOVCX,6
12、REPMOVSBMOVAH,4CHINT21HCCENDSENDstart16第16页,本讲稿共33页定位类型、组合类型和类别说明段的属性,它们用方括号括定位类型、组合类型和类别说明段的属性,它们用方括号括起来表示可以缺省。若不缺省,各项排序不能错,项与项要用空起来表示可以缺省。若不缺省,各项排序不能错,项与项要用空格分开。格分开。定位类型有四种:定位类型有四种:PAGE(页)型要求该段物理地址低(页)型要求该段物理地址低8位全为位全为0PARA(节)型要求该段物理地址低(节)型要求该段物理地址低4位全为位全为0WORD型要求该段物理地址码为偶数(最低位为型要求该段物理地址码为偶数(最低位为0
13、)BYTE型该段的物理地址可为任意值。型该段的物理地址可为任意值。组合类型说明本段与其它段的关系。组合类型说明本段与其它段的关系。类别类别它可以是任何合法的名称。它可以是任何合法的名称。17第17页,本讲稿共33页四、段寄存器说明四、段寄存器说明ASSUMEASSUME伪指令伪指令格格式式 ASSUME ASSUME 段段寄寄存存器器:段段名名 ,段段寄寄存存器器:段段名名,其中其中 段寄存器段寄存器为为CSCS、DSDS、ESES、SSSS中的一个中的一个 段名段名为用伪操作为用伪操作SEGMENTSEGMENT定义过的段名定义过的段名例例 ASSUME CS:CC,DS:AA ASSUME
14、 CS:CC,DS:AA ASSUME ASSUME 伪操作的作用伪操作的作用 指示汇编程序指令中用到的标号、过程及变量所在的段。指示汇编程序指令中用到的标号、过程及变量所在的段。其中其中 对标号、过程必须用对标号、过程必须用 CS CS 段寄存器指示段寄存器指示 对变量可用对变量可用 CS CS、DSDS、ESES、SS SS 段寄存器指示段寄存器指示18第18页,本讲稿共33页若未用若未用ASSUMEASSUME语句指示指令中用到的标号、语句指示指令中用到的标号、过程和变过程和变 量所在的段量所在的段,汇编程序将给出错误信息。汇编程序将给出错误信息。ASSUME ASSUME语句只起指示作
15、用,并无实际的操作。语句只起指示作用,并无实际的操作。在程序中引用定义的变量做内存操作数时,在程序中引用定义的变量做内存操作数时,需按寻址方式用传送指令(如需按寻址方式用传送指令(如MOVMOV)给相应的段寄存器赋值。)给相应的段寄存器赋值。19第19页,本讲稿共33页例例 用程序实现用程序实现 1234H+5678H 1234H+5678HdataSEGMENTvalueDW1234H,5678HresultDW?dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;给给DS赋值赋值MOVDS,AXMOVAX,value;取数取数A
16、DDAX,value+2;两数相加两数相加MOVresult,AX;保存结果保存结果MOVAH,4CH;返回返回DOSINT21HcodeENDSENDstart12H34H78H56Hvalueresult20第20页,本讲稿共33页五、过程定义伪操作五、过程定义伪操作格式格式 过程名过程名 PROC PROC 类型类型 、过程名过程名 ENDP ENDP 过程定义由伪操作过程定义由伪操作PROCPROC开始、开始、ENDPENDP结束结束。其中:其中:PROC PROC 和和ENDP ENDP 必须成对出现必须成对出现,且语句前必须有过程名,且语句前必须有过程名,过程名必须相同过程名必须相
17、同。PROC PROC和和ENDPENDP语句之间为子程的指令序列。语句之间为子程的指令序列。程序中可以定义多个过程。程序中可以定义多个过程。程序经汇编、连接及装入内存后程序经汇编、连接及装入内存后,过程名为一具体的内存地址,指示子程入口。过程名为一具体的内存地址,指示子程入口。21第21页,本讲稿共33页过程名常用作过程名常用作CALLCALL调用指令的操作数调用指令的操作数,子子程程的的最最后后安安排排RETRET返返回回指指令令,使使执执行行完完子子程程后后能能返返回调用处。回调用处。过程有两种类型:过程有两种类型:NEARNEAR和和FARFAR 无类型项时,无类型项时,默认为默认为N
18、EARNEAR类型类型。当当过过程程与与调调用用指指令令不不在在同同一一段段时时,应应将将过过程程定定义义为为 FAR FAR 类型。类型。过程类型决定子程中过程类型决定子程中RETRET的返回类型的返回类型22第22页,本讲稿共33页例例1 1 display PROC display PROC 、RET RET ;NEAR;NEAR 属性的过程对应段内返回属性的过程对应段内返回 display ENDP display ENDP例例2 2 display PROC display PROC FARFAR 、RET RET ;FAR;FAR属性的过程对应段间返回属性的过程对应段间返回 dis
19、play ENDP display ENDP23第23页,本讲稿共33页六、模块定义和程序结束伪操作模块定义和程序结束伪操作1.NAME 1.NAME 和和 TITLE TITLE 伪操作伪操作 格式格式 NAMENAME 模块名模块名 格式格式 TITLETITLE 模块名模块名 在源程序开始可用在源程序开始可用 NAME NAME 或或 TITLE TITLE 为模块命名为模块命名,模块名的作用是指示给连接程序进行连接用。模块名的作用是指示给连接程序进行连接用。源程序中可无模块定义,此时源文件名作为模块名。源程序中可无模块定义,此时源文件名作为模块名。24第24页,本讲稿共33页2.END
20、伪操作伪操作格式格式 END END 启动地址启动地址作用是指示源程序到此结束。作用是指示源程序到此结束。汇编程序对汇编程序对 END END 之后的语句不进行处理。之后的语句不进行处理。程序中所有有效语句应放在程序中所有有效语句应放在 END END 语句之前。语句之前。源程序中必须有源程序中必须有 END END 结束语句。结束语句。汇编程序对无汇编程序对无 END END 语句的源程序不进行处理语句的源程序不进行处理,只给出无只给出无 END END 语句错误信息。语句错误信息。25第25页,本讲稿共33页七、数值七、数值回送操作符回送操作符:(自学)课前自学)课前5分钟分钟TYPE,L
21、ENGTH,SIEE,OFFSET,SEG5种。种。把一些特征或存贮器地址的一部分作为数值回送。把一些特征或存贮器地址的一部分作为数值回送。TYPE格式:格式:TYPEvariable变量则回送该变量的以字节数变量则回送该变量的以字节数表示的类型(表示的类型(DB为为1,DW为为2,DD为为4,DQ为为8,DT为为10)或)或label标号回送标号类型数值(标号回送标号类型数值(NEAR为为,FAR为为2)例:例:ARRAYDW1,2,3ADDSI,TYPEARRAY汇编程序其形式:汇编程序其形式:ADDSI,226第26页,本讲稿共33页LENGTH格式:格式:LENGTHvariable对
22、于变量中使用对于变量中使用DUP汇编回送分配给变量单元数,其他情汇编回送分配给变量单元数,其他情况回送况回送1。例:例:FESSDW100DUP(0)对于对于MOVCX,LENGTHFEES汇编程序将其形式:汇编程序将其形式:MOVCX,100其他情况其他情况27第27页,本讲稿共33页例:例:ARRAYDW1,2,3对于指令对于指令MOVCX,LENGTHARRAY汇编程序将使其形式为:汇编程序将使其形式为:MOVCX,1例:例:TABLEDBABCD对于指令对于指令MOVCX,LENGTHTABLE汇编程序使其形式为:汇编程序使其形式为:MOVCX,128第28页,本讲稿共33页SIEE格
23、式:格式:SIEEvariable回送分配给该变量的字节数回送分配给该变量的字节数LENGTH*TYPE例:例:FEESDW100DUP(0)MOVCX,SIZEARRAY将形成:将形成:MOVCX,20029第29页,本讲稿共33页例:例:TABLEDBABCDMOVCX,SIEETABLE将形成将形成MOVCX,1例:例:ARRAYDW1,2,3MOVCX,SIEEARRAY形式形式MOVCX,2LENGTH*TYPE=230第30页,本讲稿共33页其中其中:TYPE变量的返回值是类型的字节数变量的返回值是类型的字节数:DB为为1,DW为为2,DD为为4,DQ为为8,DT为为10;TYPE
24、标号的返回值是:标号的返回值是:NEAR为为-1,FAR为为-2。LENGTH变量返回变量返回DUP分配的单元数,对于其他分配的单元数,对于其他情况则返回情况则返回1。SIZE返回返回值是:值是:LENGTH和和TYPE值的乘积,值的乘积,即变量的字节数。即变量的字节数。31第31页,本讲稿共33页八八.数值返回操作符数值返回操作符(SEG、OFFSET)SEG取符号地址的段地址取符号地址的段地址例例MOVAX,SEGyyOFFSET取符号地址的偏移地址取符号地址的偏移地址例例MOVBX,OFFSETyy32第32页,本讲稿共33页注意注意:SEG、OFFSET只能对符号地址操作只能对符号地址操作MOVAX,SEGBXMOVBX,OFFSETSI33第33页,本讲稿共33页