书签 分享 收藏 举报 版权申诉 / 116
上传文档赚钱

类型第4章汇编语言设计学习培训模板课件.ppt

  • 上传人(卖家):林田
  • 文档编号:4161659
  • 上传时间:2022-11-16
  • 格式:PPT
  • 页数:116
  • 大小:1.90MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第4章汇编语言设计学习培训模板课件.ppt》由用户(林田)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    汇编语言 设计 学习 培训 模板 课件
    资源描述:

    1、第4章 汇编语言设计第第3章学习了章学习了8086硬指令,硬指令,第第4章介绍章介绍MASM基本的伪基本的伪指令。第指令。第4章重点掌握:章重点掌握:程序的格式、开发方法程序的格式、开发方法 参数的表达、变量的定义参数的表达、变量的定义 基本伪指令基本伪指令 程序设计结构程序设计结构硬指令和伪指令硬指令和伪指令n硬指令硬指令使使CPU产生动作、并在程序执产生动作、并在程序执行时才处理的语句,就是第行时才处理的语句,就是第3章学习的处理章学习的处理器指令(助记符指令)器指令(助记符指令)n伪指令伪指令(Directive)不产生不产生CPU动动作、在程序执行前由汇编程序处理的说明性作、在程序执行

    2、前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等语句,例如,数据说明、变量定义等等伪指令与具体的处理器类型无关,但与汇编伪指令与具体的处理器类型无关,但与汇编程序的版本有关程序的版本有关2022-11-163内容提要内容提要4.1 汇编语言与汇编程序汇编语言与汇编程序n汇编语言汇编语言是一种面向是一种面向CPUCPU指令系统的程序设指令系统的程序设计语言,它采用指令助记符来表示操作码和计语言,它采用指令助记符来表示操作码和操作数,用符号地址表示操作数地址。操作数,用符号地址表示操作数地址。n汇编语言编写的源程序在输入计算机后,需汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程

    3、序,计算机才能执行相要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为汇编,完成汇编应指令,这个翻译过程称为汇编,完成汇编任务的程序称为任务的程序称为汇编程序汇编程序。汇编语言源程序汇编语言源程序机器语言目标程序机器语言目标程序汇编程序汇编程序翻译工具翻译工具常用汇编程序常用汇编程序nMASMMASM是是Microsoft公司的汇编器,公司的汇编器,MASM 6.11从从8086可支持到可支持到Pentium CPU。宏汇编宏汇编程序程序MASMEXE是目前在是目前在 PC机上使用较多的机上使用较多的汇编程序。它是采用两遍扫描的方式对源程序进汇编程序。它是采用两遍扫描的方式对源程序

    4、进行汇编的。行汇编的。nTASM TASM(Turbo Assembler)是是Borland公公司的汇编器,司的汇编器,TASMTASM的部分语法与的部分语法与MASMMASM不同。不同。TASM 5.0也可以用来汇编也可以用来汇编Win32汇编语言源汇编语言源程序程序。2022-11-16辑辑编编文本编辑器,如文本编辑器,如 EDIT.COM源程序:文件名源程序:文件名.asm编编汇汇汇编程序,如汇编程序,如 TASM.EXE目标模块:文件名目标模块:文件名.obj接接连连连接程序,如连接程序,如TLINK.EXE可执行文件:文件名可执行文件:文件名.exe试试调调调试程序,如调试程序,如

    5、 TD.EXE错误错误错误错误错误错误错误错误与上机调试有关的文件类型介绍与上机调试有关的文件类型介绍n源程序文件源程序文件(.asm):在编辑状态下建立的汇编语在编辑状态下建立的汇编语言源程序。言源程序。n目标文件目标文件(.obj):是源程序按模块独立汇编后形是源程序按模块独立汇编后形成的目标代码文件,内含与指令操作码一一对应成的目标代码文件,内含与指令操作码一一对应的二进制机器码,但不能直接运行。的二进制机器码,但不能直接运行。n可执行文件可执行文件(.exe):链接程序将各模块对应的目链接程序将各模块对应的目标程序和汇编语言的库程序文件连接起来,把目标程序和汇编语言的库程序文件连接起来

    6、,把目标程序中的相对地址连成物理内存中的绝对地址标程序中的相对地址连成物理内存中的绝对地址,由此产生了可在,由此产生了可在DOS下运行的下运行的.EXE文件。文件。为何学习汇编语言?为何学习汇编语言?n对理解计算机的工作原理有很大意义。对理解计算机的工作原理有很大意义。n能编出高效率的程序,对于小型的微处理器能编出高效率的程序,对于小型的微处理器系统几乎是唯一选择。系统几乎是唯一选择。n能直接控制硬件。能直接控制硬件。n能编出实时性强的程序。能编出实时性强的程序。4.2 汇编语言中的标识符、运算符及操作符汇编语言中的标识符、运算符及操作符一、汇编语言一、汇编语言源程序的组成源程序的组成n三段式

    7、结构三段式结构:数据段、堆栈段、代码段数据段、堆栈段、代码段n每段均由伪指令每段均由伪指令SEGMENT开始开始,ENDS结束。结束。n整个源程序用整个源程序用END语句结尾语句结尾,END后面可跟该程后面可跟该程序执行的起始地址序执行的起始地址START。n 这里把主程序建立为过程这里把主程序建立为过程,由由DOS调用该过程调用该过程,进进入程序后将入程序后将DS的内容及的内容及0作段地址和偏移地址入作段地址和偏移地址入栈栈,以便在程序结束时用以便在程序结束时用RET指令返回指令返回DOS。2022-11-1612完整程序具有以下特点:完整程序具有以下特点:二、语句二、语句的构成与规范的构成

    8、与规范名字名字 操作符操作符 操作数操作数 ;注释;注释 执行性语句执行性语句由硬指令构成的语句,它通常对由硬指令构成的语句,它通常对应一条机器指令,出现在程序的应一条机器指令,出现在程序的代码段代码段中:中:标号标号:硬指令助记符硬指令助记符 操作数操作数,操作数操作数;注释;注释说明性语句说明性语句由伪指令构成的语句,它通常指由伪指令构成的语句,它通常指示汇编程序如何汇编源程序:示汇编程序如何汇编源程序:名字名字 伪指令助记符伪指令助记符 参数参数,参数参数,;注释;注释2022-11-16131、名字、名字域域n标号标号是反映硬指令位置(是反映硬指令位置(逻辑地址逻辑地址)的)的标识符标

    9、识符,后跟一个冒号分隔后跟一个冒号分隔n名字名字是反映伪指令位置(是反映伪指令位置(逻辑地址逻辑地址)和属性的)和属性的标标识符识符,后跟空格或制表符分隔,没有一个冒号,后跟空格或制表符分隔,没有一个冒号n标识符标识符(IdentifierIdentifier)一般最多由一般最多由3131个字母、数个字母、数字及规定的特殊符号(如字及规定的特殊符号(如 _ _、$、?、)组成,不)组成,不能以数字开头。默认情况下,汇编程序不区别标能以数字开头。默认情况下,汇编程序不区别标识符中的字母大小写识符中的字母大小写n一个程序中,每个标识符的定义是唯一的,还不一个程序中,每个标识符的定义是唯一的,还不能

    10、是汇编语言采用的保留字能是汇编语言采用的保留字2022-11-16142、操作符、操作符域域n硬指令助记符硬指令助记符可以是任何一条处理器指令,可以是任何一条处理器指令,也可以是一条宏指令也可以是一条宏指令n伪指令助记符伪指令助记符将在本章学习将在本章学习2022-11-16153、操作数、操作数域域n处理器指令的处理器指令的操作数操作数可以是立即数、寄存器可以是立即数、寄存器和存储单元和存储单元n伪指令的伪指令的参数参数可以是常数、变量名、表达式可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分隔等,可以有多个,参数之间用逗号分隔n参数参数是指令的操作对象(在学习硬指令时被是指令的操

    11、作对象(在学习硬指令时被称为操作数),参数之间用逗号分隔称为操作数),参数之间用逗号分隔n参数参数根据指令不同可以没有,可以有根据指令不同可以没有,可以有1个、个、2个或多个个或多个2022-11-1616n实现实现+(加法加法)、-(减法减法)、(乘法乘法)、/(除除)、MOD(求余求余)以及以及SHL(左移左移)和和SHR(右移右移)共共七种运算七种运算mov ax,3mov ax,3*4+54+5;等价于等价于 mov ax,17mov ax,17n其中其中MODMOD也称为取模,它产生除法之后的余也称为取模,它产生除法之后的余数,如数,如19 19 mod 7=5mod 7=5n加加+

    12、和减和减-运算符还可以用于地址表达式运算符还可以用于地址表达式三、运算符三、运算符移位运算符移位运算符n实现对数值的左移、右移的逻辑操作;移入实现对数值的左移、右移的逻辑操作;移入低位或高位的是低位或高位的是0 0n格式为:格式为:数值表达式数值表达式 SHL/SHR SHL/SHR 移位次数移位次数mov al,0101b SHL(2mov al,0101b SHL(2*2)2);等价于等价于 mov al,01010000bmov al,01010000bn实现按位相与、相或、异或、求反的逻辑运实现按位相与、相或、异或、求反的逻辑运算算or al,03h AND 45hor al,03h

    13、AND 45h;等价于等价于 or al,01hor al,01hn关系运算符有关系运算符有 EQ(相等相等)、NE(不相等不相等)、LT(小小于于)GT(大于大于)、LE(小于或等于小于或等于)、GE(大于大于或等于或等于)共六种共六种n关系运算都是双操作数运算,它的运算对象只能关系运算都是双操作数运算,它的运算对象只能是两个性质相同的项目。是两个性质相同的项目。n关系运算的结果只可能是两种情况:即关系成立关系运算的结果只可能是两种情况:即关系成立或不成立。或不成立。当关系成立时,运算结果为全当关系成立时,运算结果为全1,否则,否则为全为全0。MOV AL,3 EQ 2;AL=00HMOV

    14、BX,3 GE 2;BX=FFFFH 四、操作符四、操作符n分析操作符分析操作符n合成操作符合成操作符分析操作符是对存储器地址进行运算的。它分析操作符是对存储器地址进行运算的。它可以将存储器地址的三个重要属性,即段、可以将存储器地址的三个重要属性,即段、偏移量和类型分离出来,返回到所在位置作偏移量和类型分离出来,返回到所在位置作操作数使用。操作数使用。分析运算符共有五个:分析运算符共有五个:SEG、OFFSET、TYPE、SIZE和和LENGTH。其中其中SIZE和和LENGTH只对数据存储器地址操作数有效只对数据存储器地址操作数有效。四、操作符四、操作符nSEG(求段基址)求段基址)把把SE

    15、G运算符加于一个标号或变量,求出的是该运算符加于一个标号或变量,求出的是该标号或变量所在段基址。标号或变量所在段基址。格式:格式:SEG 变量名或标号名变量名或标号名nOFFSET(求偏移量)求偏移量)把把OFFSET运算符加于一个标号或变量,所求出运算符加于一个标号或变量,所求出的是该标号或变量在段内的偏移量部分。的是该标号或变量在段内的偏移量部分。格式:格式:OFFSET 变量名或标号名变量名或标号名nTYPETYPE运算符可加在变量、结构和标号的前面,运算符可加在变量、结构和标号的前面,所求出的是这些存储器操作数的类型部分。所求出的是这些存储器操作数的类型部分。存储器操作数存储器操作数类

    16、型值类型值nLENGTH把把LENGTH运算符加在数组变量的前面,求出该运算符加在数组变量的前面,求出该数组中所包含的变量或结构的个数。数组中所包含的变量或结构的个数。在在8086汇编语言中,汇编语言中,LENGTH运算符只对用运算符只对用DUP定义的变量才有意义,它给出分配给变量的定义的变量才有意义,它给出分配给变量的单元单元(字节、字或双字字节、字或双字)数。数。V1DW 4 DUP(1)MOV AL,LENGTH V1 ;AL4nSIZESIZE和和LENGTH的功能类似,也是只有用于由的功能类似,也是只有用于由DUP定义的变量才有意义,但不同的是它给出的定义的变量才有意义,但不同的是它

    17、给出的是一个变量总的字节数。是一个变量总的字节数。SIZE X LENGTH X TYPE XV1DW 4 DUP(1)MOV AL,SIZEV1;AL8n这种操作符为这种操作符为存储器地址操作数存储器地址操作数临时指定一临时指定一个新的属性,而忽略当前的属性,所以又称个新的属性,而忽略当前的属性,所以又称为为属性修改操作符属性修改操作符。n有有3个综合运算符个综合运算符:PTRPTRTHISTHIS段属性前缀段属性前缀PTRnPTR用来生成一个新的存储器地址操作数,但它用来生成一个新的存储器地址操作数,但它本身并不实际分配存储器。本身并不实际分配存储器。格式:格式:类型类型 PTR 存储器地

    18、址表达式存储器地址表达式nPTR将它左边的类型指定给右边的地址表达式。将它左边的类型指定给右边的地址表达式。这样一来,这样一来,PTR便产生了一个新的存储器地址操便产生了一个新的存储器地址操作数。这个新的地址操作数具有和作数。这个新的地址操作数具有和PTR右边的地右边的地址表达式一样的段基址和偏移量,即它们指示的址表达式一样的段基址和偏移量,即它们指示的是同一存储单元,但却有不同的类型。是同一存储单元,但却有不同的类型。V1DW 2030HV2EQU BYTE PTR V1THISnTHIS运算符像运算符像PTR一样,可以用来建立一一样,可以用来建立一个特殊类型的存储器地址操作数,而不实际个特

    19、殊类型的存储器地址操作数,而不实际为它分配新的存储单元。为它分配新的存储单元。用用THIS建立的存建立的存储器地址操作数的段和偏移量部分与目前所储器地址操作数的段和偏移量部分与目前所能分配的下一个存储单元的段和偏移量相同能分配的下一个存储单元的段和偏移量相同,但类型由,但类型由THIS指定。指定。V2 EQU THIS BYTEV1 DW 2030HTYPE V12TYPE V21段属性前缀段属性前缀n8086的寻址方式中,有一些是隐含指出所的寻址方式中,有一些是隐含指出所规定的段寄存器的。例如,若用规定的段寄存器的。例如,若用BP作基址作基址寻址的单元,则表明此单元位于寻址的单元,则表明此单

    20、元位于SS段;而段;而用用BX作基址寻址的单元则位于作基址寻址的单元则位于DS段。但在段。但在某些特例下,需要进行段超越寻址,则应使某些特例下,需要进行段超越寻址,则应使用段属性前缀。用段属性前缀。格式:格式:段寄存器名:地址表达式段寄存器名:地址表达式MOV AX,ES:BXSI4.3 伪指令及其应用伪指令及其应用 伪指令是汇编程序系统软件同程序设计者伪指令是汇编程序系统软件同程序设计者之间的约定,伪指令不翻译成指令码,不指之间的约定,伪指令不翻译成指令码,不指挥挥CPUCPU操作,仅仅告诉汇编程序软件对源程操作,仅仅告诉汇编程序软件对源程序汇编时按何种约定的规则对源程序进行相序汇编时按何种

    21、约定的规则对源程序进行相应的处理和安排,随着系统硬、软件的不断应的处理和安排,随着系统硬、软件的不断升级,伪指令也不断增多。升级,伪指令也不断增多。2022-11-1631一、数据一、数据定义及存储器分配伪指令定义及存储器分配伪指令这类指令有:这类指令有:DB、DW、DD、DQ和和DT,它们的作用是将所需要的数据放入指定的存它们的作用是将所需要的数据放入指定的存储单元中,或者是为程序分配指定数目的存储单元中,或者是为程序分配指定数目的存储单元,并根据情况对它们进行初始化。储单元,并根据情况对它们进行初始化。格式:格式:变量名变量名DBDWDDDQDT表达式,表达式,表达式,表达式,;注释注释2

    22、022-11-1632nDB:定义定义字节变量字节变量,其后的每一个表达式,其后的每一个表达式占一个字节。占一个字节。nDW:定义定义字变量字变量,其后的每一个表达式的,其后的每一个表达式的值占二个字节,低字节在低地址,高字节在值占二个字节,低字节在低地址,高字节在高地址。高地址。nDD:定义定义双字变量双字变量,其后的每一个表达式,其后的每一个表达式的值占四个字节,同样低字节在低地址,高的值占四个字节,同样低字节在低地址,高字节在高地址。字节在高地址。2022-11-1633n十进制数,以字母十进制数,以字母D或或d结尾,可以省略结尾,可以省略n由由09、AF组成,以字母组成,以字母H或或h

    23、结尾结尾n由由0或或1两个数字组成,以字母两个数字组成,以字母B或或b结尾结尾n例如:例如:64H、0FFh、0B800H、01101100B2022-11-1634n表示定义的变量无法确定初值表示定义的变量无法确定初值n DA-B DB?2022-11-1635n用单引号或双引号括起来的单个字符或多个用单引号或双引号括起来的单个字符或多个字符,其数值是每个字符对应的字符,其数值是每个字符对应的ASCII码码的值的值n例如:例如:d=64HAB=4142HHello,Everybody!2022-11-1636n重复操作符重复操作符DUP的应用的应用用用DUP定义重复数据,格式为:定义重复数据

    24、,格式为:变量名变量名 DBDWDDDQDT 表达式表达式 DUP(表达式表达式)DUP左边的表达式表示要重复的次数,右左边的表达式表示要重复的次数,右边圆括号中的表达式表示要重复的内容,它边圆括号中的表达式表示要重复的内容,它可以是下列的内容之一:可以是下列的内容之一:一个问号?,表示该单元不初始化,由汇编程序随一个问号?,表示该单元不初始化,由汇编程序随便预置为什么值;便预置为什么值;一个数据项表;一个数据项表;一个数值表达式或地址表达式。一个数值表达式或地址表达式。2022-11-1637DATASEGMENTWD1DW-8,2549HWD2DW BY2BY1DB ABCD$BY2DB

    25、2 DUP(-1)DB 25,2,5DD1DD BY2DATA ENDS 2022-11-1638已知已知DS=1234H,画存储单元分配图,画存储单元分配图例 4-7二、符号二、符号定义伪指令定义伪指令EQU和和=nEQU伪指令的作用是把该指令右边的数值伪指令的作用是把该指令右边的数值等价赋值给它左边的符号。等价赋值给它左边的符号。符号名符号名 EQU 表达式表达式其中,表达式可以是一个常数,一个可以求其中,表达式可以是一个常数,一个可以求出常数值的表达式,一个寄存器名或一个指出常数值的表达式,一个寄存器名或一个指令助记符令助记符COUNTEQU 20 COUNT2EQU COUNT10 C

    26、 EQU CX M EQU MOV B EQU DS:BP20 2022-11-1639EQU和和=的使用的使用n一个符号一经一个符号一经EQU赋值之后,在整个程序赋值之后,在整个程序中,这个符号不能重新再赋值。中,这个符号不能重新再赋值。COUNT EQU20COUNT EQU201;错误错误COUNT20COUNT201 ;正确正确2022-11-1640三、段定义三、段定义伪指令伪指令SEGMENTENDS n完整段定义由完整段定义由SEGMENTSEGMENT和和ENDSENDS这一对伪指令实现,这一对伪指令实现,SEGMENTSEGMENT伪指令定义一个逻辑段的开始,伪指令定义一个逻

    27、辑段的开始,ENDSENDS伪指伪指令表示一个段的结束令表示一个段的结束n段定义指令后的段定义指令后的4 4个关键字用于确定段的各种属性个关键字用于确定段的各种属性,堆栈段要采用,堆栈段要采用stackstack组合类型,代码段应具有组合类型,代码段应具有codecode类别,其他为可选属性参数类别,其他为可选属性参数n如果不指定,则采用默认参数;但如果指定,注如果不指定,则采用默认参数;但如果指定,注意要按照上列次序意要按照上列次序段名段名segment 定位定位 组合组合 类别类别段名段名endsv段名段名由编程者任取,定位类型、组合类型和类别由编程者任取,定位类型、组合类型和类别是赋给段

    28、名的属性,它们可以缺省,但是赋给段名的属性,它们可以缺省,但8086宏汇编有一缺省值。宏汇编有一缺省值。2022-11-1642v定位类型定位类型用来规定对段起始边界的要求用来规定对段起始边界的要求PAGE:段起始地址的最低段起始地址的最低8位必须为位必须为0,即从,即从一页一页(PAGE)的起点开始。的起点开始。PARA:段起始地址的最低段起始地址的最低4位必须为位必须为0,即从,即从某一节某一节(PARAGRAPH)的边界开始。的边界开始。WORD:段起始地址的最低段起始地址的最低l位必须为位必须为0,即从,即从偶地址开始。偶地址开始。BYTE:段起始地址为任意值,即从任何字节开段起始地址

    29、为任意值,即从任何字节开始。始。2022-11-1643v组合类型组合类型指定多个逻辑段之间的关系指定多个逻辑段之间的关系NONE:表示本段与其它段逻辑上不发生关系,每表示本段与其它段逻辑上不发生关系,每段都有自己的基地址。这是缺省的组合类型。段都有自己的基地址。这是缺省的组合类型。PUBLIC:连接程序首先将本段与其它同名同类别的连接程序首先将本段与其它同名同类别的段相邻地连接在一起,然后为所有这些段相邻地连接在一起,然后为所有这些PUBLIC段段指定一个共同的段基址。连接的先后次序由连接指定一个共同的段基址。连接的先后次序由连接命令指定。命令指定。STACK:与与PUBLIC同样处理,但此

    30、段作为堆栈段同样处理,但此段作为堆栈段。当多个程序模块连接在一起时,各模块中至少。当多个程序模块连接在一起时,各模块中至少得有一个模块内有一个得有一个模块内有一个STACK段。如果有多个,段。如果有多个,则初始化时,则初始化时,SS指向第一个所遇到的指向第一个所遇到的STACK段。段。2022-11-1644COMMON:连接程序为本段和其它同名同连接程序为本段和其它同名同类别的段指定相同的段基址。因而这些段是类别的段指定相同的段基址。因而这些段是相互重叠的。段的长度取决于最长的相互重叠的。段的长度取决于最长的COMMON段的长度。段的长度。AT表达式表达式:连接程序把本段装在表达式的值:连接

    31、程序把本段装在表达式的值所指定的段地址上所指定的段地址上(表达式的值应为表达式的值应为16位位)。这种方式不能用来指定代码段这种方式不能用来指定代码段。MEMORY:连接程序将把本段定位在被连接连接程序将把本段定位在被连接在一起的其它所有段之上。在一起的其它所有段之上。2022-11-1645v类别类别n当连接程序组织段时,将所有的同类别段相当连接程序组织段时,将所有的同类别段相邻分配邻分配n段类别可以是任意名称,但必须位于单引号段类别可以是任意名称,但必须位于单引号中中n大多数大多数MASM程序使用程序使用 code、data和和stack来分别指名代码段、数据段和堆来分别指名代码段、数据段

    32、和堆栈段,以保持所有代码和数据的连续栈段,以保持所有代码和数据的连续2022-11-1646四、四、ASSUME伪指令伪指令n通知通知MASM用指定的段寄存器来寻址对应用指定的段寄存器来寻址对应的逻辑段,即的逻辑段,即建立段寄存器与段的缺省关系建立段寄存器与段的缺省关系nASSUME伪指令并不为段寄存器设定初值伪指令并不为段寄存器设定初值,连接程序,连接程序LINK将正确设置将正确设置CS:IP和和SS:SP;由于数据段通常都需要,所以在样板由于数据段通常都需要,所以在样板源程序中,首先为源程序中,首先为DS赋值;如果使用附加赋值;如果使用附加段,还要赋值段,还要赋值ES2022-11-164

    33、7ASSUME 段寄存器:段名段寄存器:段名,段寄存器名:段名段寄存器名:段名,.五、过程五、过程定义伪指令定义伪指令PROC/ENDPn汇编语言中的子程序是以过程的形式出现的汇编语言中的子程序是以过程的形式出现的nNEAR是缺省类型是缺省类型n每个过程最后执行的语句应该为每个过程最后执行的语句应该为RETnPROC和和ENDP必须成对出现必须成对出现2022-11-1648过程名过程名PROCNEAR/FARRET过程名过程名ENDP六、六、程序计数器程序计数器$和和ORG伪指令伪指令v程序计数器程序计数器在程序中,出现在表达式中,它的值为在程序中,出现在表达式中,它的值为程程序下一个所能分

    34、配的存储单元的偏移地址序下一个所能分配的存储单元的偏移地址。DATASEGMENTA1DB 10H,20H,30HCEQU$-A1DATAENDS2022-11-1649v起始位置设定伪指令起始位置设定伪指令ORGORG伪指令用来指定程序或数据块的起点伪指令用来指定程序或数据块的起点。ORG 数值表达式数值表达式ORG后的数值表达式的值将作为后的数值表达式的值将作为下一条指下一条指令语句或变量的偏移地址令语句或变量的偏移地址。2022-11-1650DATASEGMENT ORG 10HXDB 20H,30H ORG$+3CONST EQU 0ABCDHDAT1DB ABCDEDAT2DW 2

    35、0H DUP(0)DATAENDS 2022-11-1651例 4-9n21H号中断是号中断是DOS提供给用户的用于调用系统功提供给用户的用于调用系统功能的中断,它有近百个功能供用户选择使用,主能的中断,它有近百个功能供用户选择使用,主要包括设备管理、目录管理和文件管理三个方面要包括设备管理、目录管理和文件管理三个方面的功能,为了便于使用,已将所有子程序放在其的功能,为了便于使用,已将所有子程序放在其中断服务程序中按顺序编号(即中断服务程序中按顺序编号(即子程序功能号子程序功能号)n汇编语言程序设计需要采用系统的各种功能程序汇编语言程序设计需要采用系统的各种功能程序n充分利用操作系统提供的资源

    36、是程序设计的一个充分利用操作系统提供的资源是程序设计的一个重要方面,需要掌握重要方面,需要掌握2022-11-1652功能调用的格式功能调用的格式通常按照如下通常按照如下4 4个步骤进行个步骤进行:在在AHAH寄存器中设置系统功能调用号寄存器中设置系统功能调用号 在指定寄存器中设置在指定寄存器中设置入口参数入口参数 执行指令执行指令INT 21HINT 21H实现中断服务程序的功实现中断服务程序的功能调用能调用 根据根据出口参数出口参数分析功能调用执行情况分析功能调用执行情况2022-11-1653键盘输入并回显键盘输入并回显n功能号:功能号:AH01Hn出口参数:出口参数:AL输入字符输入字

    37、符n功能:等待从键盘输入一个字符,送入功能:等待从键盘输入一个字符,送入AL并显示并显示在屏幕上。如按在屏幕上。如按Ctrl-Break退出退出n调用此功能时,若无键按下,则会一直等待,直调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值到按键后才读取该键值MOV AH,1;将功能号将功能号01H送入送入AHINT 21H2022-11-1654显示输出显示输出n功能号:功能号:AH02Hn入口参数:入口参数:DL输出字符输出字符n功能:在显示器当前光标位置显示给定的字功能:在显示器当前光标位置显示给定的字符,光标右移一个字符位置。如按符,光标右移一个字符位置。如按Ctrl-Bre

    38、ak或或Ctrl-C则退出则退出MOV AH,02;将功能号将功能号02送入送入AHMOV DL,$;设入口参数设入口参数INT 21H2022-11-1655显示字符串输出显示字符串输出n功能号:功能号:AH09Hn入口参数:入口参数:DS:DX欲显示字符串在主存中的首地址欲显示字符串在主存中的首地址字符串应以字符串应以$(24H)结束结束n功能:在显示器输出指定的字符串功能:在显示器输出指定的字符串n可以输出回车(可以输出回车(0DH)和换行(和换行(0AH)字字符产生回车和换行的作用符产生回车和换行的作用2022-11-1656键盘输入到缓冲区键盘输入到缓冲区n功能号:功能号:AH0AH

    39、n入口参数:入口参数:DS:DX缓冲区首地址缓冲区首地址n执行该功能调用时,用户按键,最后用回车执行该功能调用时,用户按键,最后用回车确认确认n本调用可执行全部标准键盘编辑命令;用户本调用可执行全部标准键盘编辑命令;用户按回车键结束输入,如按按回车键结束输入,如按CtrlBreak或或CtrlC则中止则中止2022-11-1657缓冲区的定义缓冲区的定义n第第1字节字节事先填入事先填入最多欲接收的字符个数最多欲接收的字符个数(包括回车字符,可以是包括回车字符,可以是1255)n第第2字节字节将存放将存放实际输入的字符个数实际输入的字符个数(不包(不包括回车符)括回车符)n第第3字节字节开始将存

    40、放开始将存放输入的字符串输入的字符串n实际输入的字符数多于定义数时,多出的字实际输入的字符数多于定义数时,多出的字符丢掉,且响铃;若少于定义数时,缓冲区符丢掉,且响铃;若少于定义数时,缓冲区多余空间填多余空间填0Data segmentData segmentBufBuf db 81 db 81;定义缓冲区定义缓冲区,第第1 1个字节填入可个字节填入可;能输入的最大字符数;能输入的最大字符数db db?;存放实际输入的字符数存放实际输入的字符数db 81 dup(?)db 81 dup(?);存放输入的字符串存放输入的字符串Data endsData ends返回返回DOS的方法的方法n在在D

    41、OS环境下运行环境下运行MASM86汇编语言汇编语言程序,都应具备能正确返回程序,都应具备能正确返回DOS的功能,的功能,否则会出现死机否则会出现死机n两种返回方法:两种返回方法:INT 20H和和INT 21H的的4CH号号功能调用都能退出或结束当前程序功能调用都能退出或结束当前程序,返回,返回DOSn两种返回方法,对应两种程序框架结构两种返回方法,对应两种程序框架结构源程序框架结构之一:源程序框架结构之一:INT 20HCODE SEGMENTASSUME CS:CODE DS:DATA,ES:DATA,SS:STACKSTART PROCFAR;PUSHDS;DS入栈入栈 MOV AX,

    42、0;0偏移地址入栈偏移地址入栈 PUSHAX;.MOVAX,DATA;初始化;初始化DS MOV DS,AX;(程序正文程序正文);RET;返回返回 DOSSTART ENDPCODE ENDSEND START;汇编结束汇编结束.EXE文件格式文件格式n对于每一个可执行文件,装入对于每一个可执行文件,装入内存内存后都有一个后都有一个程序前缀区程序前缀区PSP(Program Segment Prefix),这个区域内包括有这个文件的一些这个区域内包括有这个文件的一些信息。信息。nPSP的头两个字节为的头两个字节为INT 20H指令。指令。EXE文文件被装入内存后,件被装入内存后,DOS将将D

    43、S和和ES寄存器指向寄存器指向PSP区的起点区的起点,即,即INT 20H指令,这个指令指令,这个指令的功能是返回操作系统。但的功能是返回操作系统。但INT 20H的执行的执行需要一个大前提,那就是只有当需要一个大前提,那就是只有当CS指向指向PSP区时,这条指令才能正常运行。区时,这条指令才能正常运行。2022-11-1662如何实现如何实现DOS的返回?的返回?PUSH DS ;将将PSP区的段基址入栈区的段基址入栈MOV AX,0PUSH AX ;将将PSP区的区的INT 20H指令的偏移量指令的偏移量入入栈栈RET堆栈中首先保存了堆栈中首先保存了PSP区的区的入入口地址。口地址。程序的

    44、最后一条执行指令是程序的最后一条执行指令是RET,执行时,它将执行时,它将这个入口地址弹入这个入口地址弹入CS:IP中,此时便会执行中,此时便会执行1NT 20H,实现正确返回实现正确返回DOS源程序框架结构之二:源程序框架结构之二:INT 21HnINT 21H的的4CH号号功能调用将终止当前程序,功能调用将终止当前程序,并把控制权转给调用程序。所有打开的文件,在并把控制权转给调用程序。所有打开的文件,在此时关闭此时关闭。CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:EDAT,SS:STACKMAIN:MOV AX,DATA ;初始化初始化DS MOV DS,

    45、AX MOV AX,EDAT ;初始化初始化ES MOV ES,AX MOV AX,STACK ;初始化初始化SSMOV SS,AX MOV SP,OFFSET TOP;初始化栈顶初始化栈顶;(程序正文程序正文);MOV AH,4CH ;返回返回DOS INT 21H CODEENDS END MAIN 4.7 汇编语言程序设计汇编语言程序设计n在算法的实现上,由于汇编语言指令功能较弱,在算法的实现上,由于汇编语言指令功能较弱,因此考虑的问题要细小的多,层次要低得多。对因此考虑的问题要细小的多,层次要低得多。对指令集功能既要有一个较全面的宏观上的把握,指令集功能既要有一个较全面的宏观上的把握,

    46、又要对指令的执行有一个微观上的理解,如标志又要对指令的执行有一个微观上的理解,如标志位、寻址方式、操作数类型、寄存器用法等等。位、寻址方式、操作数类型、寄存器用法等等。n变量的具体存储格式需要搞得很清楚,还要进行变量的具体存储格式需要搞得很清楚,还要进行具体的内存分配。具体的内存分配。n在很多汇编语言程序中,需要考虑时序问题,因在很多汇编语言程序中,需要考虑时序问题,因为涉及到硬件的控制。为涉及到硬件的控制。n结构化的程序设计结构化的程序设计Boehm和和Jacobi提出并证明了结构定理:提出并证明了结构定理:即即任何程序都可以由任何程序都可以由顺序结构顺序结构、条件结构条件结构、循环结构循环

    47、结构三种基本结构程序构成结构化程序三种基本结构程序构成结构化程序。2022-11-1668YNYN顺序顺序IF,THEN,ELSECASEDO_WHILEDO_UNTILNY顺序结构与简单程序设计顺序结构与简单程序设计n顺序结构的程序从执行开始到最后一条指令顺序结构的程序从执行开始到最后一条指令为止,指令指针为止,指令指针IP的内容为线性增加的内容为线性增加n流程结构由一个接一个的处理框组成流程结构由一个接一个的处理框组成n使用的指令为传送类,运算类和移位类指令使用的指令为传送类,运算类和移位类指令n顺序结构的程序一般为简单程序:如顺序结构的程序一般为简单程序:如表达式表达式程序程序、查表程序

    48、查表程序n顺序结构的程序顺序结构的程序是最基本、最常见的程序结是最基本、最常见的程序结构。构。2022-11-16692022-11-1670开始计算X*X计算3*Y计算存结果结束2022-11-16712022-11-16722022-11-16732022-11-16742022-11-16752022-11-16762022-11-16772022-11-16782022-11-1679MOV AH,4CHINT 21H CODEENDSEND START;汇编结束汇编结束条件结构与分支程序设计条件结构与分支程序设计n分支程序根据条件是真或假决定执行与否分支程序根据条件是真或假决定执行与

    49、否n判断的条件是各种指令,如判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志(等执行后形成的状态标志(在汇编语言中在汇编语言中,所谓条件所谓条件,就是标志寄存器中各标志位的状就是标志寄存器中各标志位的状态态)n转移指令转移指令Jcc和和JMP可以实现分支控制可以实现分支控制2022-11-1680两路分支两路分支 在程序中使用一条条件转移语句就可实现两路分支。在程序中使用一条条件转移语句就可实现两路分支。2022-11-16811、不完全二路分支、不完全二路分支指令序列指令序列2指令序列指令序列1指令序列指令序列3指令序列指令序列1 ;影响状态标志位;影响状态标志位Jcc LAB

    50、EL指令序列指令序列2 LABEL:指令序列:指令序列3 比较两个数,选出其中大者存比较两个数,选出其中大者存AL寄存器。寄存器。这里设两个数均为无符号数这里设两个数均为无符号数,其程序段如下:其程序段如下:MOV AL,BX ;取前个元素到取前个元素到ALINCBX ;指向后个元素指向后个元素CMP AL,BX ;两数比较两数比较JAE BIGER ;前元素前元素=后元素,转后元素,转EXCH:MOV AL,BX ;否则,取后元素到否则,取后元素到ALBIGER:2、完全二路分支、完全二路分支指令序列1指令序列2指令3指令序列NY 指令序列JCC LABEL2指令序列1JMP LABEL3L

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第4章汇编语言设计学习培训模板课件.ppt
    链接地址:https://www.163wenku.com/p-4161659.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库