欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《数据传送指令》PPT课件.pptx

    • 资源ID:80468089       资源大小:405.96KB        全文页数:111页
    • 资源格式: PPTX        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《数据传送指令》PPT课件.pptx

    第第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文件文件进行进行定位、链接定位、链接,最后生成扩展名为,最后生成扩展名为EXE的可执行文件。的可执行文件。如果需要,也可生成如果需要,也可生成MAP文件文件(地址分配文件)(地址分配文件)。LINK/m*.obj.lst文件文件汇编表:汇编表:源程序、目标代码、地址、错误信息源程序、目标代码、地址、错误信息段(组)表:段(组)表:源程序中各段的名字、大小及其特征。源程序中各段的名字、大小及其特征。符号表:符号表:定义或引用的全部标号、变量、符号的属性值及其定义或引用的全部标号、变量、符号的属性值及其特征等。特征等。(部分)(部分).map文件文件地址分配文件(地址分配文件(.map)用于描述文件中各段的浮动起始地用于描述文件中各段的浮动起始地址、结束地址、占用空间、段名和址、结束地址、占用空间、段名和类别类别,还列出了各,还列出了各模块中所定义的公共符号及其偏移地址,主要用于程序调模块中所定义的公共符号及其偏移地址,主要用于程序调试和资料归档。试和资料归档。调试程序调试程序DEBUGPROG.EXEu(反汇编反汇编)t=地址地址指令条数指令条数常用命令:常用命令:http:/ source programEDIT Editor programMASM assembler programLINK linker programDEBUG debug programFinal debugged run modulePROG1.LSTPROG1.OBJPROG1.CRFOther.OBJ filesLibrariesPROG1.MAP汇编语言的书写汇编语言的书写格式格式汇编语言的书写汇编语言的书写格式有两种:格式有两种:1.针对针对一种特定的汇编程序的模型一种特定的汇编程序的模型简化段定义的格式简化段定义的格式2.完整的段定义方式完整的段定义方式可完全控制汇编的全过程,并且可用于所有的可完全控制汇编的全过程,并且可用于所有的汇编程序。汇编程序。关于关于MASMMASM:MicrosoftMacroAssemblerMASM的版本的版本5.0及其以前:及其以前:MS-DOS;5.x6.0:MS-DOS和和OS/26.1x:Windows,MASM与与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程序与目标文件程序与目标文件汇编程序语法汇编程序语法常量、标识符和表达式常量、标识符和表达式伪指令伪指令存储器的组织存储器的组织程序举例程序举例常量常量数字常量数字常量1001B,1037Q,166D(或(或166),),6AH字符常量字符常量字符:字符:A,字符串:字符串:abcd符号常量符号常量COM_REGEQU26HCOMREG=62HMOVAX,COMREG等价于等价于MOVAX,62H标识符标识符标识符标识符是程序员在编程时建立的有特定意义的字符序列,可是程序员在编程时建立的有特定意义的字符序列,可以用作常量名、变量名以用作常量名、变量名、标号、名字(如过程名)等。、标号、名字(如过程名)等。1.组成标识符的字符:组成标识符的字符:英文字母(英文字母(AZ,az),数字(),数字(09),特殊符号(?,),特殊符号(?,_,$)等组成。)等组成。2.数字数字不能不能作为名字的第一个符号。作为名字的第一个符号。3.单独的问号(?)单独的问号(?)不能不能作为标识符。作为标识符。4.一个名字的最大有效长度为一个名字的最大有效长度为31,超过,超过31的部分将不再被识的部分将不再被识别。别。5.不能用不能用保留字保留字,保留字包括,保留字包括指令和命令的助记符指令和命令的助记符。如如AX,MOV,SEGMENT等。等。表达式表达式表达式由操作数和运算符组成。表达式由操作数和运算符组成。操作数:操作数:常量、变量、标号等。常量、变量、标号等。运算符运算符:算术、逻辑、关系算术、逻辑、关系分析运算符:分析运算符:返回变量、标号等的属性。返回变量、标号等的属性。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优优先先级级从从高高到到低低例例设部分源程序如下。设部分源程序如下。DAEQU100MOVAX,DA80MOVBX,DAMOD10MOVCX,DA/25MOVDH,01100100BSHR2MOVAL,DALT120MOVAL,DAGT120汇编时,计算表达式形成指令如下。MOV AX,20MOV BX,0MOV CX,4MOV DH,19HMOV AL,0FFHMOV AL,00H汇编程序语法汇编程序语法常量、标识符和表达式常量、标识符和表达式伪指令伪指令存储器的组织存储器的组织程序举例程序举例汇编语言程序的格式汇编语言程序的格式两大特点:两大特点:分段结构分段结构语句行语句行指令性语句指令性语句指示性语句指示性语句指令性语句和指示性语句指令性语句和指示性语句1.指令性语句指令性语句指令语句即由指令语句即由CPU提供的指令形成的语句,它提供的指令形成的语句,它能够被翻译成机器代码,并完成一定操作功能。能够被翻译成机器代码,并完成一定操作功能。例、例、LOP:ADDAL,BX;把;把AL和和BX相加相加2.指示性语句指示性语句也叫也叫伪指令语句伪指令语句,为,为汇编程序在翻译汇编语言汇编程序在翻译汇编语言源程序时提供有关信息,并源程序时提供有关信息,并不不翻译成机器代码。翻译成机器代码。伪指令伪指令没有没有对应的机器指令。对应的机器指令。例例、DATASEGMENTAT2000H注意:注意:VC+内内嵌汇编程序部分没有伪指令功能。嵌汇编程序部分没有伪指令功能。指令系统选择伪指令指令系统选择伪指令默认情况下,汇编程序只接受默认情况下,汇编程序只接受8086/8088指令。如果指令。如果要使用其它指令,需使用要使用其它指令,需使用.686或或.686P伪指令或伪指令或其他其他的微处理器选择开关的微处理器选择开关,放在程序前面。,放在程序前面。.686伪指令:通知汇编程序按实模式使用伪指令:通知汇编程序按实模式使用PentiumPro指令系统。指令系统。.686P伪指令伪指令:通知通知汇编程序使用汇编程序使用PentiumPro保保护模式护模式指令系统指令系统。注意:注意:多数现代软件都是假定微处理器是多数现代软件都是假定微处理器是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)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定义模块的名字。定义模块的名字。格式:格式:NAMEMODULE_NAME汇编后,汇编后,MODULE_NAME就成为模块的名字。就成为模块的名字。TITLE伪指令伪指令主要作用:主要作用:指定列表文件的每一页上打印的标题。指定列表文件的每一页上打印的标题。格式:格式:TITLETEXT如如果果程程序序中中没没有有使使用用NAME伪伪指指令令,也也可可使使用用TITLE伪伪指指令令指指定定模模块块名名。汇汇编编程程序序将将用用TEXT中中的的前前6个个字字符符作作为为模模块名。块名。TEXT最多可有最多可有60个字符。个字符。定义程序开始和结束的伪指令定义程序开始和结束的伪指令NAME及及TITLE伪指令并伪指令并不是不是不可缺少的。不可缺少的。如如果果程程序序中中既既无无NAME又又无无TITLE伪伪指指令令,则则用用源源文文件名件名作为模块名。作为模块名。此时,直接由段定义语句此时,直接由段定义语句SEGMENT开始编写程序。开始编写程序。一一般般经经常常使使用用TITLE,以以便便在在列列表表文文件件中中能能打打印印出出标标题来。题来。定义程序开始和结束的伪指令定义程序开始和结束的伪指令表示源程序结束的伪指令的格式为:表示源程序结束的伪指令的格式为:ENDLABEL标号标号LABEL指示程序指示程序开始开始执行的起始地址。执行的起始地址。如果多个程序模块相连接,则只有如果多个程序模块相连接,则只有主程序主程序要使用要使用标号,其他子程序模块则只用标号,其他子程序模块则只用END而不必指定标而不必指定标号。号。注意:注意:汇编程序将在遇汇编程序将在遇END时时结束结束汇编,而程序则汇编,而程序则将从主模块的第一个标号处开始执行。将从主模块的第一个标号处开始执行。在存储段中存储数据在存储段中存储数据命令:命令:DB、DW、DD、DQ、DT对应:对应:1字节、字节、2字节、字节、4字节、字节、8字节、字节、10字节字节格式:格式:【变量变量】命令命令参数参数1,参数,参数2,【;注释;注释】功能:功能:分配变量的存储空间分配变量的存储空间变量初始化变量初始化在存储段中存储数据在存储段中存储数据DATASEGMENTFIRSTDBCS11,o,k,?;SECONDDWOK,A,?,1234H;THIRDDB2DUP(12H,34H);FOURTHDB100DUP(?);ALIGN2DFLOATDD300HDD2.13DD3.1E+12DATAENDSCS11ok?KO41H00H?34H12H12H34H12H34H?FIRSTSECONDTHIRDFOURTH注意:注意:变量的存储形式!变量的存储形式!DUP的用法!的用法!DS:0000H在存储段中存储数据在存储段中存储数据变量名:变量名:指针!指针!字符串定义字符串定义NOTESDBTheresultis:,$除了除了DB定义的字符串常量外,单引号中定义的字符串常量外,单引号中ASCII字符的字符的个数不得超过两个。个数不得超过两个。思考:思考:DWABCD和和DW0ABCDH非法、合法?非法、合法?DATASEGMENTAREA1DW?AREA2DW$AREA3DW10DATAENDSMOVAX,AREA3等价于等价于MOVAX,0004ALIGN伪指令伪指令ALIGN伪指令的格式:伪指令的格式:ALIGNn其功能是控制下一个数据或指令的开始位置。其功能是控制下一个数据或指令的开始位置。例,例,ALIGN2:按字的边界存储。:按字的边界存储。ALIGN4:按双字的边界存储。:按双字的边界存储。ALIGN16:从可以被:从可以被16整除的地址开始分配存储整除的地址开始分配存储空间。空间。ALIGN伪指令不能用于存储器模型,因为模型伪指令不能用于存储器模型,因为模型的大小的大小确定确定了数据的对齐方式。了数据的对齐方式。符号定义伪指令符号定义伪指令1.等值伪指令等值伪指令EQU格式:格式:EQU功功能能:给给符符号号名名定定义义一一个个值值,赋赋予予一一个个符符号号名名、表表达达式式或助记符。或助记符。例、例、CONSTANTEQU256利利用用EQU命命令令可可以以为为较较复复杂杂的的表表达达式式及及源源程程序序中中的的任任何何符符号号(如如指指令令助助记记符符、寄寄存存器器名名、变变量量名名、标标号号、段段名名、宏宏定义名等)定义一个替换名。定义名等)定义一个替换名。在在程程序序中中,使使用用新新替替换换名名的的作作用用与与使使用用原原来来的的表表达达式式或或符号名的作用完全等价。符号名的作用完全等价。例、例、ABCEQUBXMOV BX,ABC符号定义伪指令符号定义伪指令2.解除定义伪指令解除定义伪指令PURGE格式:格式:PURGE功功能能:解解除除指指定定符符号号的的定定义义;解解除除符符号号定定义义后后,可用可用EQU重新进行定义。重新进行定义。例、例、Y1EQU7;定义;定义Y1的值为的值为7PURGEY1;解除;解除Y1的定义的定义Y1EQU36;重新定义;重新定义Y1的值为的值为36符号定义伪指令符号定义伪指令3.等号伪指令等号伪指令=与与EQU相类似,也可以作为赋值操作使用。相类似,也可以作为赋值操作使用。它们之间的区别:它们之间的区别:EQU伪指令中的表达式名伪指令中的表达式名不不允许允许重复定义,而重复定义,而“=”伪指令则伪指令则允许允许重复定义。重复定义。如下语句在程序中是允许使用的。如下语句在程序中是允许使用的。TEMP=7TEMP=TEMP+1TEMP=6或或TEMPEQU6都都可可以以使使数数6赋赋以以符符号号名名TEMP,然而不允许两者同时使用。,然而不允许两者同时使用。名字和变量名字和变量名字和变量名字和变量分析运算符分析运算符OFFSET,SEG,TYPE,LENGTH,SIZE合成运算符合成运算符PTR,THIS,LABEL名字名字名字:名字:文件名、标题名、文件名、标题名、段名段名、过程名过程名、符号常量名符号常量名等等。等等。段名:段名:可用作段基值。可用作段基值。例如,段定义语句例如,段定义语句DATASEGMENT,段名为,段名为DAA。源程。源程序在进行汇编连接时,系统分配给该段一个段基值,设为序在进行汇编连接时,系统分配给该段一个段基值,设为2000H。这时,段名就可作为段基值。这时,段名就可作为段基值2000H被引用。被引用。过程名:过程名:代表过程的入口地址,作为调用指令的目的地址使用。代表过程的入口地址,作为调用指令的目的地址使用。符号常量:符号常量:在源程序中由符号常量定义语句命名。在源程序中由符号常量定义语句命名。例如,例如,COUNTEQU20,此后,此后COUNT可当作可当作20被使用。被使用。变量变量已定义的变量具有下列三种属性:已定义的变量具有下列三种属性:段属性、偏移地址属性、类型属性。段属性、偏移地址属性、类型属性。段属性:段属性:定义变量的段基值。此值必须在一个段寄存器中。定义变量的段基值。此值必须在一个段寄存器中。偏移地址属性:偏移地址属性:变量的偏移地址是从段的起始地址到定义变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。变量的位置之间的字节数。类型属性:类型属性:变量的类型属性定义该变量所保留的字节数。变量的类型属性定义该变量所保留的字节数。例例如如,BYTE(DB,1个个字字节节长长)、WORD(DW,2个个字字节节长长)、DWORD(DD,4个个字字节节长长)、QWORD(DQ,8个个字字节长节长)和和TBYTE(DT,10个字节长个字节长)。变量(续)变量(续)要要把把变变量量的的属属性性取取出出来来作作为为操操作作数数,需需采采用用“分分析析运运算算符符”。SEG变量名:变量名:取段基值。取段基值。OFFSET变量名:变量名:取偏移地址。取偏移地址。TYPE变量名:变量名:取变量的数据类型。取变量的数据类型。字节数据,字节数据,TYPE变量名变量名1字数据,字数据,TYPE变量名变量名2双字数据,双字数据,TYPE变量名变量名48字节数据,字节数据,TYPE变量名变量名810字节数据,字节数据,TYPE变量名变量名10变量(续)变量(续)要要把把变变量量的的属属性性取取出出来来作作为为操操作作数数,需需采采用用“分分析析运运算算符符”。SEG变量名:变量名:取段基值。取段基值。OFFSET变量名:变量名:取偏移地址。取偏移地址。TYPE变量名:变量名:取变量的数据类型。取变量的数据类型。LENGTH变量名:变量名:表示变量所在数组的数据元素个数。表示变量所在数组的数据元素个数。注注意意:只只有有当当数数据据用用复复制制符符DUP定定义义时时,LENGTH才等于数组的元素个数,否则才等于数组的元素个数,否则LENGTH就等于就等于1。SIZE变变量量名名:表表示示变变量量所所在在数数组组的的字字节节总总数数,且且满满足足公式公式SIZE=LENGTHTYPE。例例DATASEGMENTBUF1DBN1,N2,N3,N10;N1N10为为10个字节数据个字节数据BUF2DB10DUP(0)BUF3DW10DUP(?)DATAENDS设段的段基值为设段的段基值为2000H,则,则SEGBUF1=2000HOFFSETBUF1=0000HTYPEBUF1=1LENGTHBUF1=1SIZEBUF1=1SEGBUF2=2000HOFFSETBUF2=000AHTYPEBUF2=1LENGTHBUF2=10SIZEBUF2=10SEGBUF3=2000HOFFSETBUF3=0014HTYPEBUF3=2LENGTHBUF3=10SIZEBUF3=20变量和常量变量和常量AREA1DW0867HMOVAX,AREA1DW伪指令伪指令语句用来定义变量,变量用作表示存储器中的数语句用来定义变量,变量用作表示存储器中的数据。程序运行过程中,变量是可以被修改的运算对象。据。程序运行过程中,变量是可以被修改的运算对象。变量名为变量名为AREA1,表示内存中一个数据区的名字,也就是符,表示内存中一个数据区的名字,也就是符号地址,该地址单元存放一个字数据号地址,该地址单元存放一个字数据0867。MOVAX,AREA1指令执行后,指令执行后,AX=0867H。AREA1EQU0867HMOVAX,AREA1等值等值伪指令伪指令EQU给常数给常数0867H定义了一个符号名定义了一个符号名AREA1,程序中可以使用符号程序中可以使用符号AREA1代表立即数代表立即数0867H。这两段程序效果相同,但符号这两段程序效果相同,但符号AREA1的含义不同。的含义不同。修改属性运算符修改属性运算符BUFWDW1234H,5678H合法:合法:MOVAX,BUFW非法:非法:MOVAL,BUFW合成运算符合成运算符(又称(又称修改属性运算符修改属性运算符),可作用于),可作用于变量和标号变量和标号。类型(重新)指定运算符:类型(重新)指定运算符:PTR属性指定运算符:属性指定运算符:THIS类型指定命令:类型指定命令:LABEL修改属性运算符修改属性运算符类型(重新)指定运算符类型(重新)指定运算符PTR格式:格式:类型类型PTR变量变量/标号标号其中类型是其中类型是BYTE,WORD,DWORD,NEAR,FAR功能:功能:用新类型取代表达式默认的数据类型用新类型取代表达式默认的数据类型例、例、BUFWDW1234H,5678HMOVAL,BYTEPTRBUFW可以用可以用EQU和和PTR定义一个新的变量,它与原变量具有相同定义一个新的变量,它与原变量具有相同的段属性和偏移地址属性,但类型属性不同。的段属性和偏移地址属性,但类型属性不同。例、例、BUFWDW1234H,5678HBUFBEQUBYTEPTRBUFW则则MOVAL,BUFB合法。合法。修改属性运算符修改属性运算符属性运算符属性运算符THIS格式:格式:变量变量/标号标号THIS类型类型THIS和和EQU一起用来定义一个变量,其功能是将右边的一起用来定义一个变量,其功能是将右边的类型属性赋给左边的变量类型属性赋给左边的变量/标号,该变量或标号的段地址和标号,该变量或标号的段地址和偏移量与偏移量与下一个存储单元下一个存储单元的地址相同。的地址相同。BUFBEQUTHISBYTEBUFWDW1234H,5678H则则MOVAL,BUFB合法。合法。FADDREQUTHISFARMOVAX,100此时此时MOVAX,100前有标号前有标号FADDR,允许其它段的,允许其它段的JMP指令指令跳转到本段跳转到本段FADDR标号地址上。标号地址上。修改属性运算符修改属性运算符类型指定类型指定命令命令LABEL格式:格式:变量变量/标号标号LABEL类型类型LABEL伪指令定义一个指定的符号名,伪指令定义一个指定的符号名,该符号名的段地该符号名的段地址和偏移量与下面紧跟存储单元的相应属性相同址和偏移量与下面紧跟存储单元的相应属性相同,但该符,但该符号的类型是新指定的。使同一变量或标号在不同的地方引号的类型是新指定的。使同一变量或标号在不同的地方引用时,可以采用不同的名字。用时,可以采用不同的名字。BUFBLABELBYTEBUFWDW1234H,5678H则则MOVAL,BUFB合法。合法。DISFLABELFARDISN:MOVAX,SI则则DISF和和DISN指向同一条指令,指向同一条指令,DISF是是DISN的的别名别名。修改属性运算符修改属性运算符以下两行等价:以下两行等价:tag1EQUTHISBYTEtag1LABELBYTE地址计数器地址计数器$功能:功能:保存当前正在汇编的指令保存当前正在汇编的指令(或数据或数据)的地址。的地址。说明:说明:可参加构成表达式。可参加构成表达式。示例示例1 1:ARRAY DW 1,2,$+4,3,$+5ARRAY DW 1,2,$+4,3,$+5 示例示例2 2:BUFFER DB 1,2,3,4,5BUFFER DB 1,2,3,4,5 COUNT EQU$-BUFFERCOUNT EQU$-BUFFER ;COUNTCOUNT的值为的值为BUFFERBUFFER的长度的长度 地址计数器地址计数器000081810000030300007C7C0000020200000101ARRAYARRAY0074H0074H0078H0078H007CH007CH定位伪指令定位伪指令ORGORG格式:格式:ORG ORG 表达式表达式操作:操作:将表达式的值送入将表达式的值送入汇编地址计数器汇编地址计数器,即命令汇编程序,即命令汇编程序从表达式值指定的位置生成目标代码。从表达式值指定的位置生成目标代码。说明:说明:若需相对若需相对$移动,则移动,则表达式表达式$+$+偏移量偏移量。示例:示例:D_SEG SEGMENT PARA DATAD_SEG SEGMENT PARA DATA ORG 10HORG 10H X DB 20H,30H X DB 20H,30H ORG$+5 ORG$+5 Y DB 40H,50H Y DB 40H,50H D_SEG ENDS D_SEG ENDS定位伪指令定位伪指令50400017H?30200010H?0000H过程定义:过程定义:PROC和和ENDP过程名:过程名:在汇编语言程序中可作为调用指令的目的地址使用。在汇编语言程序中可作为调用指令的目的地址使用。例如,例如,CALLSORT,其中,其中SORT就表示过程名为就表示过程名为SORT的过程的入口地址。的过程的入口地址。类型:类型:far,near。可以嵌套调用。可以嵌套调用。可以递归。可以递归。过程名过程名PROC类型类型;RET;或;或RETn过程名过程名ENDP过程定义:过程定义:PROC和和ENDP在在MASM6.0版本的汇编程序中,版本的汇编程序中,PROC伪指令可以自动保伪指令可以自动保持过程中使用的寄存器。这些寄存器用持过程中使用的寄存器。这些寄存器用USES语句指示。语句指示。例,例,ADDSPROCNEARUSESBXCXDX过程名过程名PROC类型类型USES;RET;或;或RETn过程名过程名ENDP宏指令的定义、调用和扩展宏指令的定义、调用和扩展宏(宏(MACRO)是源程序中一段有独立功能的程序代码。它是源程序中一段有独立功能的程序代码。它只需在源程序中定义一次,就可以多次用一条只需在源程序中定义一次,就可以多次用一条宏指令宏指令来调用。来调用。宏定义是用宏定义是用伪指令伪指令来实现的。其格式为:来实现的。其格式为:macro_name MACROENDMdummyParameterList宏指令名宏指令名宏定义体宏定义体形式参数形式参数(用逗号隔开)(用逗号隔开)宏指令名宏指令名必须是合法的标识符,其第一个符号必须是字母。必须是合法的标识符,其第一个符号必须是字母。其中其中MACRO和和ENDM是一对伪指令,这对伪指令之间是是一对伪指令,这对伪指令之间是宏定义体,即宏定义体,即“一组有独立功能的程序代码一组有独立功能的程序代码”。宏指令的定义、调用和扩展宏指令的定义、调用和扩展经宏定义定义后的宏指令就可以在源程序中调用,经宏定义定义后的宏指令就可以在源程序中调用,这种对宏指令的调用称这种对宏指令的调用称宏调用宏调用。宏调用的格式为:宏调用的格式为:macro_nameactualparameterlist(实参数,用逗号隔开实参数,用逗号隔开)当源程序被汇编时,汇编程序将对每个宏调用作当源程序被汇编时,汇编程序将对每个宏调用作宏宏展开展开。宏展开就是用宏定义体取代源程序中的宏指令名,宏展开就是用宏定义体取代源程序中的宏指令名,而且用实参数一一取代宏定义的形式参数。而且用实参数一一取代宏定义的形式参数。宏定义:宏定义:SAVEREGMACROPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIENDM宏调用:宏调用:SAVEREG宏展开:宏展开:将宏定义体的内容(具有独立功能的一段代码)全将宏定义体的内容(具有独立功能的一段代码)全部列出。部列出。宏定义开始宏定义开始宏定义体宏定义体宏定义结束宏定义结束宏指令宏指令例例1、宏定义可以无变元、宏定义可以无变元宏定义:宏定义:FOOMACROP1,P2,P3MOVAX,P1P2P3ENDM宏调用:宏调用:FOOWORD_VAR,INC,AX宏展开:宏展开:MOVAX,WORD_VARINCAX例例2、宏定义带形式参数、宏定义带形式参数过程调用和宏调用工作方式的区别过程调用和宏调用工作方式的区别过程调用工作方式:过程调用工作方式:执行时调用。执行时调用。XA,yBCALL QxC,yDCALL Q主程序主程序Q PROC .RETQ ENDP子程序子程序Q(x,y)过程调用和宏调用工作方式的区别过程调用和宏调用工作方式的区别宏调用工作方式:宏调用工作方式:汇编时展开。汇编时展开。Q A,BQ C,D主程序宏定义:Q x,yQ(A,B)Q(C,D)Q MACRO x,yENDM过程调用和宏调用工作方式的区别过程调用和宏调用工作方式的区别1.在处理时间上不同。在处理时间上不同。2.传递参数的方式不同。传递参数的方式不同。3.用宏指令得到的目标代码长,占内存空间大,用宏指令得到的目标代码长,占内存空间大,而且宏调用的次数越多,所占内存空间越大;而且宏调用的次数越多,所占内存空间越大;用子程序占内存空间小,而且不会随调用次数用子程序占内存空间小,而且不会随调用次数的增加而增加,但执行时间长。的增加而增加,但执行时间长。指令性指令性语句中的标号语句中的标号指令性语句的指令性语句的格式:格式:标号标号:操作码:操作码操作数操作数;注释注释标号具有三种属性。标号具有三种属性。段属性、偏移地址属性和类型属性。段属性、偏移地址属性和类型属性。段属性:段属性:定义标号所在段的定义标号所在段的段基值段基值,此值在一个段,此值在一个段寄存器中。寄存器中。偏移地址属性:偏移地址属性:标号的偏移地址是从段起始地址到标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。定义标号的位置之间的字节数。指令性语句中的标号指令性语句中的标号类型属性:类型属性:用来指出该标号是供段内转移用,还是供段间转用来指出该标号是供段内转移用,还是供段间转移用。移用。如果是用于段内转移的,则类型为如果是用于段内转移的,则类型为NEAR。如果是用于段间转移的,则类型为则称为如果是用于段间转移的,则类型为则称为FAR。标号为标号为NEAR时,时,TYPE1;标号为标号为FAR时,时,TYPE2。指令性语句中的标号,其类型一般为指令性语句中的标号,其类型一般为NEAR。标号类型的改变可以应用算符标号类型的改变可以应用算符PRT、THIS和和LABEL命令。命令。过程名过程名与与标号标号一样具有段属性、偏移地址属性和类型属性。一样具有段属性、偏移地址属性和类型属性。指令性语句中的操作数指令性语句中的操作数指令中的操作数可以按寻址方式表示。指令中的操作数可以按寻址方式表示。指令中的操作数也可以用指令中的操作数也可以用段名段名、符号常量符号常量、变量变量、属性属性、过过程名程名和和标号标号来表示。来表示。例如:例如:MOVAX,DATA;设;设DATA是段名,代表段基值,立即寻是段名,代表段基值,立即寻址方式址方式MOVSI,OFFSETARRAY;OFFSETARRAY是属性,立是属性,立即寻址方式即寻址方式MOVCX,COUNT;COUNT是符号常量,立即寻址方式是符号常量,立即寻址方式MOVBL,BUFFER;BUFFER是变量,直接寻址方式是变量,直接寻址方式CALLSBRT1;SBRT1是过程名,直接寻址方式是过程名,直接寻址方式JMPDONE;DONE是标号,直接寻址方式是标号,直接寻址方式LOOPAGAIN;AGAIN是标号,直接寻址方式是标号,直接寻址方式汇编程序语法汇编程序语法常量、标识符和表达式常量、标识符和表达式伪指令伪指令存储器的组织存储器的组织程序举例程序举例存储器的存储器的组织组织模型模型完整段定义完整段定义简化段简化段存储模型存储模型使用简化段的程序,每个模块必须用使用简化段的程序,每个模块必须用.MODEL伪指令说明存储伪指令说明存储模型,并且该伪指令必须在所有段定义之前。模型,并且该伪指令必须在所有段定义之前。.MODEL伪指令格式如下:伪指令格式如下:.MODEL选择项选择项MASM可以使用从小到大多种多种可以使用从小到大多种多种模型:模型:TINY、SMALL、MEDIUM、COMPACT、LARGE、HUGE、FLAT选择选择项有三种:项有三种:语言关键字、语言关键字、堆栈距离堆栈距离存储模式的含义存储模式的含义存储模式存储模式符号符号意义意义微模式微模式空或空或TINY 全部数据和代码放在一个物理段内全部数据和代码放在一个物理段内(64KB),执行程序可以转化为),执行程序可以转化为.COM程序,该模式程序,该模式不能使用简化段不能使用简化段。小模式小模式SMALL数据和代码各放在一个物理段内数据和代码各放在一个物理段内(64KB),所有代码和数据都用),所有代码和数据都用NEAR方式访问。这是最方便常用的方式。方式访问。这是最方便常用的方式。中模式中模式MEDIUM数据放在一个物理段内(数据放在一个物理段内(64KB),但是),但是代码可以大于代码可以大于64KB而放在不同的物理段而放在不同的物理段内。所有数据都用内。所有数据都用NEAR方式访问,所方式访问,所有代码都用有代码都用FAR方式访问。方式访问。存储模式的含义存储模式的含义存储模式存储模式 符号符号意义意义紧缩模式紧缩模式 COMPACT 代码段在一个物理段内(代码段在一个物理段内(64KB),但是),但是数据可以大于数据可以大于64KB而放在不同的物理段而放在不同的物理段内。所有代码段都用内。所有代码段都用NEAR方式访问,方式访问,所有数据都用所有数据都用FAR方式访问。注意,每方式访问。注意,每个数组本身不能大于个数组本身不能大于64KB。大模式大模式LARGE代码和数据都可以大于代码和数据都可以大于64KB而放在不同而放在不同的物理段内。所有代码和数据都用的物理段内。所有代码和数据都用FAR方式访问。注意:每个数组本身不能大方式访问。注意:每个数组本身不能大于于64KB。预定义常数。预定义常数DATASIZE值为值为1.存储模式的含义存储模式的含义存储模式存储模式 符号符号意义意义巨型模式巨型模式 HUGE代码和数据都可以大于代码和数据都可以大于64KB而放在不同而放在不同的物理段内。所有代码和数据都用的物理段内。所有代码和数据都用FAR方式访问。注意,每个数组本身不能大方式访问。注意,每个数组本身不能大于于64KB。预定义常数。预定义常数DATASIZE值为值为2。平展模式平展模式 FLAT允许用户使用允许用户使用32位位移量,但位位移量,但DOS下不下不允许使用这种模型,只能在允许使用这种模型,只能在OS/2下或其下或其他保护模式的操作系统下使用。他保护模式的操作系统下使用。MASM5.0版不支持该模型,但版不支持该模型,但MASM6.0支持。支持。.MODEL伪指令的选项伪指令的选项语言关键字选项语言关键字选项:决定决定了过程和公共了过程和公共符号的符号的调用约定调用约定及命名约定及命名约定。可以使用。可以使用C、FORTRAN、BASIC、PASCAL、stdcall等关键字。等关键字。堆栈距离选项:堆栈距离选项:可以用可以用NEARSTACK(默认)或(默认)或FARSTACK来说明。来说明。NEARSTACK是是指把堆栈段和数据段组合到一个指把堆栈段和数据段组合到一个DGROUP段中,段中,DS和和SS均指向均指向DGROUP段。段。FARSTACK是指堆栈段和数据段不合并。是指堆栈段和数据段不合并。存储器的存储器的组织组织模型模型完整段定义完整段定义简化段简化段完整段定义完整段定义段名:段名:通常段名确定了段的首地址,整个逻辑段存放在首地通常段名确定了段的首地址,整个逻辑段存放在首地址开始的一片连续存储单元中。址开始的一片连续存储单元中。源程序在进行汇编连接时,系统分配给段一个段基值,设为源程序在进行汇编连接时,系统分配给段一个段基值,设为2000H。这时段名。这时段名STACK就可以作为段基值就可以作为段基值2000H被引用。被引用。STACKSEGMENTPARASTACKSTACKSTADB50DUP(?)TOPEQULENGTHSTASTACKENDS段名段名SEGMENT定位类型定位类型组合类型组合类型字长类型字长类型类别类别;段名段名ENDS完整段定义完整

    注意事项

    本文(《数据传送指令》PPT课件.pptx)为本站会员(wuy****n92)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开