《数据传送指令》PPT课件.pptx
《《数据传送指令》PPT课件.pptx》由会员分享,可在线阅读,更多相关《《数据传送指令》PPT课件.pptx(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章数据传送指令数据传送指令罗文坚罗文坚中国科大中国科大 计算机学院计算机学院http:/ ASM.EXE或 MASM.EXE*.ASM汇编.OBJ.LST.CRF或.SBR可选可选MASM/L/C *.asm连接示意图连接示意图调用LINK.EXE.OBJ.OBJ.LIB连接.EXE.MAP可选可选汇编之后生成的汇编之后生成的OBJ文件必须经过文件必须经过链接过程链接过程,才能成为扩,才能成为扩展名展名.EXE的可执行文件。的可执行文件。链接的过程就是调用链接的过程就是调用连接程序(连接程序(LINK.EXE),对,对OBJ文件文件进行进行定位、链接定位、链接,最后生成扩展名为,最后生
2、成扩展名为EXE的可执行文件。的可执行文件。如果需要,也可生成如果需要,也可生成MAP文件文件(地址分配文件)(地址分配文件)。LINK/m*.obj.lst文件文件汇编表:汇编表:源程序、目标代码、地址、错误信息源程序、目标代码、地址、错误信息段(组)表:段(组)表:源程序中各段的名字、大小及其特征。源程序中各段的名字、大小及其特征。符号表:符号表:定义或引用的全部标号、变量、符号的属性值及其定义或引用的全部标号、变量、符号的属性值及其特征等。特征等。(部分)(部分).map文件文件地址分配文件(地址分配文件(.map)用于描述文件中各段的浮动起始地用于描述文件中各段的浮动起始地址、结束地址
3、、占用空间、段名和址、结束地址、占用空间、段名和类别类别,还列出了各,还列出了各模块中所定义的公共符号及其偏移地址,主要用于程序调模块中所定义的公共符号及其偏移地址,主要用于程序调试和资料归档。试和资料归档。调试程序调试程序DEBUGPROG.EXEu(反汇编反汇编)t=地址地址指令条数指令条数常用命令:常用命令:http:/ source programEDIT Editor programMASM assembler programLINK linker programDEBUG debug programFinal debugged run modulePROG1.LSTPROG1.OB
4、JPROG1.CRFOther.OBJ filesLibrariesPROG1.MAP汇编语言的书写汇编语言的书写格式格式汇编语言的书写汇编语言的书写格式有两种:格式有两种:1.针对针对一种特定的汇编程序的模型一种特定的汇编程序的模型简化段定义的格式简化段定义的格式2.完整的段定义方式完整的段定义方式可完全控制汇编的全过程,并且可用于所有的可完全控制汇编的全过程,并且可用于所有的汇编程序。汇编程序。关于关于MASMMASM:MicrosoftMacroAssemblerMASM的版本的版本5.0及其以前:及其以前:MS-DOS;5.x6.0:MS-DOS和和OS/26.1x:Windows,M
5、ASM与与LINK整合为整合为ML。MASM.EXE和和LINK.EXE,ML.EXE,ML64.EXEMASM6.15以后,微软不在单独发布以后,微软不在单独发布MASM的开发包,而是包含在的开发包,而是包含在VisualStudio里面。里面。例例,VisualStudio9.0VCbinml.exe.MASM与与IDEVisualStudio,MASM32,WinAsmStudio,写写Windows汇编程序时用汇编程序时用IDE比较合适。比较合适。MASM源程序的书写格式源程序的书写格式完整段定义的格式完整段定义的格式VS简化段定义的格式简化段定义的格式关于关于C程序与目标文件程序与目
6、标文件汇编程序语法汇编程序语法常量、标识符和表达式常量、标识符和表达式伪指令伪指令存储器的组织存储器的组织程序举例程序举例常量常量数字常量数字常量1001B,1037Q,166D(或(或166),),6AH字符常量字符常量字符:字符:A,字符串:字符串:abcd符号常量符号常量COM_REGEQU26HCOMREG=62HMOVAX,COMREG等价于等价于MOVAX,62H标识符标识符标识符标识符是程序员在编程时建立的有特定意义的字符序列,可是程序员在编程时建立的有特定意义的字符序列,可以用作常量名、变量名以用作常量名、变量名、标号、名字(如过程名)等。、标号、名字(如过程名)等。1.组成标
7、识符的字符:组成标识符的字符:英文字母(英文字母(AZ,az),数字(),数字(09),特殊符号(?,),特殊符号(?,_,$)等组成。)等组成。2.数字数字不能不能作为名字的第一个符号。作为名字的第一个符号。3.单独的问号(?)单独的问号(?)不能不能作为标识符。作为标识符。4.一个名字的最大有效长度为一个名字的最大有效长度为31,超过,超过31的部分将不再被识的部分将不再被识别。别。5.不能用不能用保留字保留字,保留字包括,保留字包括指令和命令的助记符指令和命令的助记符。如如AX,MOV,SEGMENT等。等。表达式表达式表达式由操作数和运算符组成。表达式由操作数和运算符组成。操作数:操作
8、数:常量、变量、标号等。常量、变量、标号等。运算符运算符:算术、逻辑、关系算术、逻辑、关系分析运算符:分析运算符:返回变量、标号等的属性。返回变量、标号等的属性。offset、seg、type、length、size。合成运算符:合成运算符:修改变量、标号的属性。修改变量、标号的属性。PTR等。等。表达式中的运算符表达式中的运算符1.括号中的项,即括号中的项,即()和和。2.LENGTH,SIZE,WIDTH,MASK3.PTR,OFFSET,SEG,TYPE,THIS4.*,/,MOD,SHL,SHR5.,6.EQ,NE,L,LE,GT,GE7.NOT8.AND9.OR,XOR优优先先级级从
9、从高高到到低低例例设部分源程序如下。设部分源程序如下。DAEQU100MOVAX,DA80MOVBX,DAMOD10MOVCX,DA/25MOVDH,01100100BSHR2MOVAL,DALT120MOVAL,DAGT120汇编时,计算表达式形成指令如下。MOV AX,20MOV BX,0MOV CX,4MOV DH,19HMOV AL,0FFHMOV AL,00H汇编程序语法汇编程序语法常量、标识符和表达式常量、标识符和表达式伪指令伪指令存储器的组织存储器的组织程序举例程序举例汇编语言程序的格式汇编语言程序的格式两大特点:两大特点:分段结构分段结构语句行语句行指令性语句指令性语句指示性语
10、句指示性语句指令性语句和指示性语句指令性语句和指示性语句1.指令性语句指令性语句指令语句即由指令语句即由CPU提供的指令形成的语句,它提供的指令形成的语句,它能够被翻译成机器代码,并完成一定操作功能。能够被翻译成机器代码,并完成一定操作功能。例、例、LOP:ADDAL,BX;把;把AL和和BX相加相加2.指示性语句指示性语句也叫也叫伪指令语句伪指令语句,为,为汇编程序在翻译汇编语言汇编程序在翻译汇编语言源程序时提供有关信息,并源程序时提供有关信息,并不不翻译成机器代码。翻译成机器代码。伪指令伪指令没有没有对应的机器指令。对应的机器指令。例例、DATASEGMENTAT2000H注意:注意:VC
11、+内内嵌汇编程序部分没有伪指令功能。嵌汇编程序部分没有伪指令功能。指令系统选择伪指令指令系统选择伪指令默认情况下,汇编程序只接受默认情况下,汇编程序只接受8086/8088指令。如果指令。如果要使用其它指令,需使用要使用其它指令,需使用.686或或.686P伪指令或伪指令或其他其他的微处理器选择开关的微处理器选择开关,放在程序前面。,放在程序前面。.686伪指令:通知汇编程序按实模式使用伪指令:通知汇编程序按实模式使用PentiumPro指令系统。指令系统。.686P伪指令伪指令:通知通知汇编程序使用汇编程序使用PentiumPro保保护模式护模式指令系统指令系统。注意:注意:多数现代软件都是
12、假定微处理器是多数现代软件都是假定微处理器是PentiumPro或更新的微处理器,因此常用或更新的微处理器,因此常用.686开关。开关。常用常用的指令系统选择伪指令的指令系统选择伪指令.286.286P.386.386P.486.486P.586.586P.686;选择;选择PentiumProPentium4指令系统指令系统.686P;选择选择PentiumProPentium4的保护模式指令系统的保护模式指令系统.287.387常用的伪指令常用的伪指令1).CODE2).DATA3).EXIT4).MODEL5).STACK6).STARTUP7)ALGNn8)ASSUME9)BYTE10
13、)DB11)DW12)DD13)DQ14)DT15)DUP16)DWORD17)END18)ENDM19)ENDP20)ENDS21)EQU22)FAR23)MACRO24)NAME25)NEAR26)OFFSET27)ORG28)QWORD29)PROC30)PTR31)QWROD32)SEGMENT33)STACK34)STRUC35)TITLE36)USES37)USE1638)USE3239)WORD定义程序开始和结束的伪指令定义程序开始和结束的伪指令NAME伪指令伪指令主要作用:主要作用:在程序的开始可以用在程序的开始可以用NAME定义模块的名字。定义模块的名字。格式:格式:NAME
14、MODULE_NAME汇编后,汇编后,MODULE_NAME就成为模块的名字。就成为模块的名字。TITLE伪指令伪指令主要作用:主要作用:指定列表文件的每一页上打印的标题。指定列表文件的每一页上打印的标题。格式:格式:TITLETEXT如如果果程程序序中中没没有有使使用用NAME伪伪指指令令,也也可可使使用用TITLE伪伪指指令令指指定定模模块块名名。汇汇编编程程序序将将用用TEXT中中的的前前6个个字字符符作作为为模模块名。块名。TEXT最多可有最多可有60个字符。个字符。定义程序开始和结束的伪指令定义程序开始和结束的伪指令NAME及及TITLE伪指令并伪指令并不是不是不可缺少的。不可缺少的
15、。如如果果程程序序中中既既无无NAME又又无无TITLE伪伪指指令令,则则用用源源文文件名件名作为模块名。作为模块名。此时,直接由段定义语句此时,直接由段定义语句SEGMENT开始编写程序。开始编写程序。一一般般经经常常使使用用TITLE,以以便便在在列列表表文文件件中中能能打打印印出出标标题来。题来。定义程序开始和结束的伪指令定义程序开始和结束的伪指令表示源程序结束的伪指令的格式为:表示源程序结束的伪指令的格式为:ENDLABEL标号标号LABEL指示程序指示程序开始开始执行的起始地址。执行的起始地址。如果多个程序模块相连接,则只有如果多个程序模块相连接,则只有主程序主程序要使用要使用标号,
16、其他子程序模块则只用标号,其他子程序模块则只用END而不必指定标而不必指定标号。号。注意:注意:汇编程序将在遇汇编程序将在遇END时时结束结束汇编,而程序则汇编,而程序则将从主模块的第一个标号处开始执行。将从主模块的第一个标号处开始执行。在存储段中存储数据在存储段中存储数据命令:命令:DB、DW、DD、DQ、DT对应:对应:1字节、字节、2字节、字节、4字节、字节、8字节、字节、10字节字节格式:格式:【变量变量】命令命令参数参数1,参数,参数2,【;注释;注释】功能:功能:分配变量的存储空间分配变量的存储空间变量初始化变量初始化在存储段中存储数据在存储段中存储数据DATASEGMENTFIR
17、STDBCS11,o,k,?;SECONDDWOK,A,?,1234H;THIRDDB2DUP(12H,34H);FOURTHDB100DUP(?);ALIGN2DFLOATDD300HDD2.13DD3.1E+12DATAENDSCS11ok?KO41H00H?34H12H12H34H12H34H?FIRSTSECONDTHIRDFOURTH注意:注意:变量的存储形式!变量的存储形式!DUP的用法!的用法!DS:0000H在存储段中存储数据在存储段中存储数据变量名:变量名:指针!指针!字符串定义字符串定义NOTESDBTheresultis:,$除了除了DB定义的字符串常量外,单引号中定义的
18、字符串常量外,单引号中ASCII字符的字符的个数不得超过两个。个数不得超过两个。思考:思考:DWABCD和和DW0ABCDH非法、合法?非法、合法?DATASEGMENTAREA1DW?AREA2DW$AREA3DW10DATAENDSMOVAX,AREA3等价于等价于MOVAX,0004ALIGN伪指令伪指令ALIGN伪指令的格式:伪指令的格式:ALIGNn其功能是控制下一个数据或指令的开始位置。其功能是控制下一个数据或指令的开始位置。例,例,ALIGN2:按字的边界存储。:按字的边界存储。ALIGN4:按双字的边界存储。:按双字的边界存储。ALIGN16:从可以被:从可以被16整除的地址开
19、始分配存储整除的地址开始分配存储空间。空间。ALIGN伪指令不能用于存储器模型,因为模型伪指令不能用于存储器模型,因为模型的大小的大小确定确定了数据的对齐方式。了数据的对齐方式。符号定义伪指令符号定义伪指令1.等值伪指令等值伪指令EQU格式:格式:EQU功功能能:给给符符号号名名定定义义一一个个值值,赋赋予予一一个个符符号号名名、表表达达式式或助记符。或助记符。例、例、CONSTANTEQU256利利用用EQU命命令令可可以以为为较较复复杂杂的的表表达达式式及及源源程程序序中中的的任任何何符符号号(如如指指令令助助记记符符、寄寄存存器器名名、变变量量名名、标标号号、段段名名、宏宏定义名等)定义
20、一个替换名。定义名等)定义一个替换名。在在程程序序中中,使使用用新新替替换换名名的的作作用用与与使使用用原原来来的的表表达达式式或或符号名的作用完全等价。符号名的作用完全等价。例、例、ABCEQUBXMOV BX,ABC符号定义伪指令符号定义伪指令2.解除定义伪指令解除定义伪指令PURGE格式:格式:PURGE功功能能:解解除除指指定定符符号号的的定定义义;解解除除符符号号定定义义后后,可用可用EQU重新进行定义。重新进行定义。例、例、Y1EQU7;定义;定义Y1的值为的值为7PURGEY1;解除;解除Y1的定义的定义Y1EQU36;重新定义;重新定义Y1的值为的值为36符号定义伪指令符号定义
21、伪指令3.等号伪指令等号伪指令=与与EQU相类似,也可以作为赋值操作使用。相类似,也可以作为赋值操作使用。它们之间的区别:它们之间的区别:EQU伪指令中的表达式名伪指令中的表达式名不不允许允许重复定义,而重复定义,而“=”伪指令则伪指令则允许允许重复定义。重复定义。如下语句在程序中是允许使用的。如下语句在程序中是允许使用的。TEMP=7TEMP=TEMP+1TEMP=6或或TEMPEQU6都都可可以以使使数数6赋赋以以符符号号名名TEMP,然而不允许两者同时使用。,然而不允许两者同时使用。名字和变量名字和变量名字和变量名字和变量分析运算符分析运算符OFFSET,SEG,TYPE,LENGTH,
22、SIZE合成运算符合成运算符PTR,THIS,LABEL名字名字名字:名字:文件名、标题名、文件名、标题名、段名段名、过程名过程名、符号常量名符号常量名等等。等等。段名:段名:可用作段基值。可用作段基值。例如,段定义语句例如,段定义语句DATASEGMENT,段名为,段名为DAA。源程。源程序在进行汇编连接时,系统分配给该段一个段基值,设为序在进行汇编连接时,系统分配给该段一个段基值,设为2000H。这时,段名就可作为段基值。这时,段名就可作为段基值2000H被引用。被引用。过程名:过程名:代表过程的入口地址,作为调用指令的目的地址使用。代表过程的入口地址,作为调用指令的目的地址使用。符号常量
23、:符号常量:在源程序中由符号常量定义语句命名。在源程序中由符号常量定义语句命名。例如,例如,COUNTEQU20,此后,此后COUNT可当作可当作20被使用。被使用。变量变量已定义的变量具有下列三种属性:已定义的变量具有下列三种属性:段属性、偏移地址属性、类型属性。段属性、偏移地址属性、类型属性。段属性:段属性:定义变量的段基值。此值必须在一个段寄存器中。定义变量的段基值。此值必须在一个段寄存器中。偏移地址属性:偏移地址属性:变量的偏移地址是从段的起始地址到定义变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。变量的位置之间的字节数。类型属性:类型属性:变量的类型属性定义该变量所保留
24、的字节数。变量的类型属性定义该变量所保留的字节数。例例如如,BYTE(DB,1个个字字节节长长)、WORD(DW,2个个字字节节长长)、DWORD(DD,4个个字字节节长长)、QWORD(DQ,8个个字字节长节长)和和TBYTE(DT,10个字节长个字节长)。变量(续)变量(续)要要把把变变量量的的属属性性取取出出来来作作为为操操作作数数,需需采采用用“分分析析运运算算符符”。SEG变量名:变量名:取段基值。取段基值。OFFSET变量名:变量名:取偏移地址。取偏移地址。TYPE变量名:变量名:取变量的数据类型。取变量的数据类型。字节数据,字节数据,TYPE变量名变量名1字数据,字数据,TYPE
25、变量名变量名2双字数据,双字数据,TYPE变量名变量名48字节数据,字节数据,TYPE变量名变量名810字节数据,字节数据,TYPE变量名变量名10变量(续)变量(续)要要把把变变量量的的属属性性取取出出来来作作为为操操作作数数,需需采采用用“分分析析运运算算符符”。SEG变量名:变量名:取段基值。取段基值。OFFSET变量名:变量名:取偏移地址。取偏移地址。TYPE变量名:变量名:取变量的数据类型。取变量的数据类型。LENGTH变量名:变量名:表示变量所在数组的数据元素个数。表示变量所在数组的数据元素个数。注注意意:只只有有当当数数据据用用复复制制符符DUP定定义义时时,LENGTH才等于数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据传送指令 数据 传送 指令 PPT 课件
限制150内