汇编语言程序设计-本章学习目标通过本章的学习应当掌握以.pptx
《汇编语言程序设计-本章学习目标通过本章的学习应当掌握以.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计-本章学习目标通过本章的学习应当掌握以.pptx(65页珍藏版)》请在咨信网上搜索。
1、第第4章章 汇编语言程序设计汇编语言程序设计 本章学习目标本章学习目标通过本章的学习,应当掌握以下内容:通过本章的学习,应当掌握以下内容:了解汇编语言的基本知识和特点。了解汇编语言的基本知识和特点。熟悉汇编语言的程序结构、段定义以及语句的格式。熟悉汇编语言的程序结构、段定义以及语句的格式。掌握汇编语言常用伪指令的使用方法。掌握汇编语言常用伪指令的使用方法。熟练掌握汇编语言程序设计的基本方法:顺序结构、熟练掌握汇编语言程序设计的基本方法:顺序结构、分支结构、循环结构和子程序结构。分支结构、循环结构和子程序结构。掌握程序设计中的宏指令和常用的系统功能的调用方掌握程序设计中的宏指令和常用的系统功能的
2、调用方法。法。4、1 机器语言、汇编语言与高级语言机器语言、汇编语言与高级语言程序设计语言通常分为程序设计语言通常分为3类:类:机器语言(机器语言(Machine Language)汇编语言(汇编语言(Assembler Language)高级语言(高级语言(High Level Language)4、1、1 机器语言和汇编语言机器语言和汇编语言1机器语言机器语言(1)机器指令)机器指令机器指令机器指令是指用二进制编码的指令,以表示计算机所是指用二进制编码的指令,以表示计算机所要进行操作数及操作对象(数据或数据地址)。要进行操作数及操作对象(数据或数据地址)。(2)指令系统和机器语言)指令系统
3、和机器语言指令系统指令系统是指特定计算机上机器指令的集合。机器语是指特定计算机上机器指令的集合。机器语言是由指令系统以及机器指令的使用规则构成的。言是由指令系统以及机器指令的使用规则构成的。机器语言机器语言是计算机惟一能识别的语言,只有用机器语是计算机惟一能识别的语言,只有用机器语言描述的程序,计算机才能直接执行。言描述的程序,计算机才能直接执行。(3)机器语言的主要特点)机器语言的主要特点机器语言主要具有下列两个特点:机器语言主要具有下列两个特点:机器语言与机器密切相关机器语言与机器密切相关 机器语言设计程序非常困难,但容易实现高性能机器语言设计程序非常困难,但容易实现高性能 2 汇编语言汇
4、编语言以助记符描述的指令称作汇编格式指令或符号指令,以助记符描述的指令称作汇编格式指令或符号指令,通常简称通常简称指令指令。指令和伪指令的集合及其程序设计规。指令和伪指令的集合及其程序设计规则便构成了则便构成了汇编语言汇编语言。用汇编语言编写的程序就是。用汇编语言编写的程序就是汇汇编语言源程序编语言源程序。4、1、2 汇编语言与高级语言汇编语言与高级语言机器语言和汇编语言机器语言和汇编语言都是面向机器的,是低级语言。都是面向机器的,是低级语言。高级语言高级语言在程序设计的简易性与代码的可移植性等方在程序设计的简易性与代码的可移植性等方面有了质的飞跃。当然,用高级语言编写的源程序必面有了质的飞跃
5、。当然,用高级语言编写的源程序必须经过编译和连接,将其转变为可执行程序或借助于须经过编译和连接,将其转变为可执行程序或借助于解释程序方可在计算机上运行。解释程序方可在计算机上运行。语言汇编语言高级语言代码效率高较低源程序可读性较差好对硬件的依附性 高低程序员硬件知识 高较低应用范围较广广泛汇编语言和高级语言的比较:汇编语言和高级语言的比较:4、1、3 汇编与连接汇编与连接 1汇编程序汇编程序 汇编是把汇编语言程序翻译成机器语言描述的目标程序汇编是把汇编语言程序翻译成机器语言描述的目标程序的过程。的过程。汇编程序是完成汇编任务的程序。汇编程序是完成汇编任务的程序。2连接程序连接程序 连接程序的主
6、要功能是实现多个目标文件及库文件的连连接程序的主要功能是实现多个目标文件及库文件的连接,并完成浮动地位的重定位。接,并完成浮动地位的重定位。从汇编语言源程序到可执行程序的生成过程如图所示。从汇编语言源程序到可执行程序的生成过程如图所示。汇编语言源程序汇编目标程序连接可执行程序4、2 汇编语言源程序的结构汇编语言源程序的结构4、2、1 汇编语言的语句格式汇编语言的语句格式汇编语言源程序中的每个语句可以由汇编语言源程序中的每个语句可以由4项组成,格式如下项组成,格式如下name operation operand ;comment名字项名字项 操作项操作项 操作数项操作数项 ;注释项;注释项下面分
7、别说明各项的表示方法。下面分别说明各项的表示方法。1名字项名字项源程序中用下列字符表示名字:源程序中用下列字符表示名字:字母:字母:AZ或或az;数字:数字:09;专用字符号:?、专用字符号:?、$;一般来讲,名字项可以是标号或变量。一般来讲,名字项可以是标号或变量。(1)标号:在代码段定义,后面跟冒号:)标号:在代码段定义,后面跟冒号:它有三种属性:段、偏移及类型。它有三种属性:段、偏移及类型。段属性:定义标号的段起始地址,在段属性:定义标号的段起始地址,在CX寄存器中。寄存器中。偏移属性:偏移属性:16位无符号数。位无符号数。类型属性:用来指出该标号是在本段内引用还是在其类型属性:用来指出
8、该标号是在本段内引用还是在其他段内引用的。他段内引用的。(2)变量:变量在除代码以外的其他段中定义,后面不)变量:变量在除代码以外的其他段中定义,后面不跟冒号。它也可以用跟冒号。它也可以用LABLE或或EQU伪操作来定义。变量伪操作来定义。变量经常在操作数字段出现。经常在操作数字段出现。它也有段、偏移及类型三种属性。它也有段、偏移及类型三种属性。段属性定义变量的段起始地址,此值必须在一个段寄段属性定义变量的段起始地址,此值必须在一个段寄存器中。存器中。偏移属性变量的偏移地址是偏移属性变量的偏移地址是16位无符号数,它代表从位无符号数,它代表从段的起始地址到定义变量的位置之间的字节数。在当前段段
9、的起始地址到定义变量的位置之间的字节数。在当前段内给出变量的偏移值等于当前地址计数器的值,当前地址内给出变量的偏移值等于当前地址计数器的值,当前地址计数器的值可以用计数器的值可以用$来表示。来表示。类型属性变量的类型属性定义该变量所保留的字节数。类型属性变量的类型属性定义该变量所保留的字节数。2操作项操作项操作项可以是指令、伪操作或宏指令的助记符。操作项可以是指令、伪操作或宏指令的助记符。3操作数项操作数项操作数项由一个或多个表达式组成,多个操作数项之间一操作数项由一个或多个表达式组成,多个操作数项之间一般用逗号分开。般用逗号分开。4注释项注释项注释项用来说明一段程序或一条或几条指令的功能,它
10、是注释项用来说明一段程序或一条或几条指令的功能,它是可有可无的。可有可无的。4、2、2汇编语言源程序的段定义汇编语言源程序的段定义段定义伪操作的格式如下:段定义伪操作的格式如下:segment-name SEGMENT segment-name ENDS其中删节号部分,对于其中删节号部分,对于DS、ES和和SS来说,一般是存贮单来说,一般是存贮单元的定义、分配等伪操作;对于代码段则是指令及伪操作。元的定义、分配等伪操作;对于代码段则是指令及伪操作。此外,还必须明确段和段寄存器的关系,这可用此外,还必须明确段和段寄存器的关系,这可用ASSUME伪操作来实现,其格式为:伪操作来实现,其格式为:AS
11、SUME assignment,assignment其中其中 assignment 说明分配情况,其格式为:说明分配情况,其格式为:段寄存器名段寄存器名:段名段名其中段寄存器名必须是其中段寄存器名必须是CS、DS、ES和和SS中的一个,中的一个,而段名则必须是由而段名则必须是由SEGMENT定义的段中的段名。定义的段中的段名。4、2、.3 汇编语言源程序的结构汇编语言源程序的结构汇编语言源程序的程序基本结构是段,一个汇编语言汇编语言源程序的程序基本结构是段,一个汇编语言源程序由若干个代码段、数据段、附加段和堆栈段组源程序由若干个代码段、数据段、附加段和堆栈段组成。段之间的顺序可以随意安排,通常
12、数据段在前,成。段之间的顺序可以随意安排,通常数据段在前,代码段在后。任何可执行汇编语言程序至少要有一个代码段在后。任何可执行汇编语言程序至少要有一个代码段,通常还可能有数据段和堆栈段。每个段都有代码段,通常还可能有数据段和堆栈段。每个段都有段首指令和段结束指令,段的内容介于这两条指令之段首指令和段结束指令,段的内容介于这两条指令之间。间。其一般结构如下其一般结构如下:SSEG SEGMENT STACK 堆栈段的内容堆栈段的内容SSEG ENDSDSEG SEGMENT DATA 数据段的内容数据段的内容DSEG ENDSCSEG SEGMENT CODE 代码段的内容代码段的内容CSEG
13、ENDS END 启动标号启动标号对于一般程序来说,定义太多的段只会增加程序设计对于一般程序来说,定义太多的段只会增加程序设计的复杂性,通常需要一个的复杂性,通常需要一个代码段代码段、一个、一个数据段数据段和一个和一个堆栈段堆栈段,有时可包含一个附加段。,有时可包含一个附加段。1为什么要用为什么要用ASSUME语句语句 指令指令 mov bl,xd mov xe,bl被汇编为被汇编为mov bl,byte ptr0000hmov byte ptr es:0000h,bl其中,在变量其中,在变量xe前增加了段超越前缀前增加了段超越前缀ES:,这就是:,这就是ASSUME的作用,也仅此而已。的作用
14、,也仅此而已。2设置段寄存器的初值设置段寄存器的初值(1)CS与与IPCS与与IP的初值不能在程序中显示设置,由系统自动设置的初值不能在程序中显示设置,由系统自动设置为为END后指定的起始地址。后指定的起始地址。(2)DS和和ES、DS和和ES的初值必须在程序中设置。的初值必须在程序中设置。设置方法如下:设置方法如下:MOV AX,SEG NAME MOV DS,AX(3)SS与与SPSS与与SP初值的设置方法有下列两种:初值的设置方法有下列两种:在程序中显示设置,类似于在程序中显示设置,类似于DS,例如:,例如:MOV AX,SSEGMOV SS,AXMOV SP,ST_TOP若堆栈段定义时
15、给出了参数若堆栈段定义时给出了参数STACK,则连接器,则连接器LINK自动将自动将SS:SP指向栈底;指向栈底;若未定义堆栈段,则由系统指定堆栈,若未定义堆栈段,则由系统指定堆栈,SS:SP也由也由系统自动设置。系统自动设置。例例4.2:在数据段定义首地址为:在数据段定义首地址为A的的10个字符,将这个字符,将这10个字符以相反次序传送到附加段首地址为个字符以相反次序传送到附加段首地址为B的内存单元的内存单元中。中。DSEG SEGMENTA DB 1234567890DSEG ENDSESEG SEGMENTB DB 10 DUP(?)ESEG ENDSCSEG SEGMENT ASSUM
16、E CS:CSEG,DS:DSEG,ES:ESEGSTART:MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AXLEA SI,A LEA DI,B ADD DI,9 MOV CX,10MOVE:CLD LODSB STD STOSB LOOP MOVE MOV AH,4CH INT 21HCSEG ENDS END START4、3 汇编语言的运算符汇编语言的运算符1算术运算符算术运算符算术运算符主要包括算术运算符主要包括+、*、/和和MOD、等。其中等。其中MOD是指除法运算后得到的余数。是指除法运算后得到的余数。语法格式为:语法格式为:expr1expr
17、2等价于等价于expr1+expr2。2逻辑运算符逻辑运算符逻辑运算符主要包括逻辑运算符主要包括AND、OR、XOR、NOT、SHR及及SHL。逻辑操作符是按位操作的,它只能用于数字表达。逻辑操作符是按位操作的,它只能用于数字表达式中。式中。3关系运算符关系运算符关系运算符主要包括关系运算符主要包括EQ(相等时为真)、(相等时为真)、NE(不相等(不相等时为真)、时为真)、LT(小于时为真)、(小于时为真)、GT(大于时为真)、(大于时为真)、LE(小于或等于时为真)、(小于或等于时为真)、GE(大于或等于时为真)(大于或等于时为真)等等6种。种。4数值回送(数值回送(Value return
18、ing)操作符)操作符它有它有TYPE、LENGTH、SIZE、OFFSET、SEG 5种。种。这些操作符把一些特征或存储器地址的一部分作为这些操作符把一些特征或存储器地址的一部分作为数值回送。下面分别说明各个操作符的功能。数值回送。下面分别说明各个操作符的功能。(1)TYPE格式:格式:TYPE Variable或或label如果是变量,则汇编程序将回送该变量的以字节数如果是变量,则汇编程序将回送该变量的以字节数表示的类型,表示的类型,DB为为1,DW为为2,DD为为4,DQ为为8,DT为为10。如果是标号,则汇编程序将回送代表该标号类型的如果是标号,则汇编程序将回送代表该标号类型的数值:数
19、值:NEAR为为1,FAR为为2。(2)LENGTH格式为:格式为:LENGTH Variable对于变量中使用对于变量中使用DUP的情况,汇编程序将回送分配的情况,汇编程序将回送分配给该变量的单元个数。而对于其他情况则回送给该变量的单元个数。而对于其他情况则回送1。(3)SIZE格式为:格式为:SIZE Variable其汇编的值为其汇编的值为LENGTH Variable*TYPE Variable,即,即回送直接分配给该变量的总的字节数。回送直接分配给该变量的总的字节数。(4)OFFSET格式为:格式为:OFFSET Variable或或label汇编程序将回送变量或标号的偏移地址值。汇
20、编程序将回送变量或标号的偏移地址值。(5)SEG格式为:格式为:SEG Variable或或label汇编程序将回送变量或标号的段地址值。汇编程序将回送变量或标号的段地址值。5属性操作符属性操作符属性操作符主要包括属性操作符主要包括PTR、段操作符、段操作符、SHORT、THIS、HIGH和和LOW 6种。种。(1)PTR格式为:格式为:type PTR expression PTR用来建立一个符号地址,但它本身并不分配存储用来建立一个符号地址,但它本身并不分配存储器,只是用来对已分配的存储地址赋予另一种属性,器,只是用来对已分配的存储地址赋予另一种属性,使该地址具有另一种类型。使该地址具有另
21、一种类型。(2)段操作符:)段操作符:用来表示一个标量、变量或地址表达式的段属性。例用来表示一个标量、变量或地址表达式的段属性。例如,用段前缀指定某段的地址操作数如,用段前缀指定某段的地址操作数MOV AX,ES:BX+SI。可见它是用段寄存器地址表达式来表示的。可见它是用段寄存器地址表达式来表示的。(3)SHORT用来修饰用来修饰JMP指令中转向地址的属性,指出转向地址指令中转向地址的属性,指出转向地址是在下一条指令地址是在下一条指令地址127个字节范围之内。个字节范围之内。(4)THIS格式为:格式为:THIS attribute或或type(5)HIGH和和LOW称为字节分离操作符,它接
22、收一个数或地址表达式,称为字节分离操作符,它接收一个数或地址表达式,HIGH取其高位字节,取其高位字节,LOW取其低位字节。取其低位字节。4.4 伪指令伪指令构成汇编语言源程序的语句主要包括两类:构成汇编语言源程序的语句主要包括两类:指令和伪指令。指令和伪指令。指令指令是在程序运行期间有是在程序运行期间有CPU执行的,汇编后由对应的执行的,汇编后由对应的机器代码所取代。机器代码所取代。伪指令伪指令是不可执行的是不可执行的,它只是在源程序汇编期间由汇编它只是在源程序汇编期间由汇编器处理的命令,用来指示汇编器为数据分配内存空间,器处理的命令,用来指示汇编器为数据分配内存空间,或者为汇编器提供源程序
23、结束或段定义等信息。或者为汇编器提供源程序结束或段定义等信息。1、变量定义伪指令变量定义伪指令变量定义伪指令用来为数据分配内存空间,并设置相变量定义伪指令用来为数据分配内存空间,并设置相应内存单元的初始值,其形式为:应内存单元的初始值,其形式为:变量名变量名 变量定义符变量定义符 操作数操作数,操作数,操作数 变量名是一个符号地址,表示其后操作数的首地址,变量名是一个符号地址,表示其后操作数的首地址,多个操作数构成一个数组。变量名是程序员给出的标多个操作数构成一个数组。变量名是程序员给出的标识符,为可选项,给出变量名只是为了按名存取其对识符,为可选项,给出变量名只是为了按名存取其对应的内存单元
24、。应的内存单元。变量定义符主要包括下列几种:变量定义符主要包括下列几种:(1)DB(Define Byte):定义字节,后面的每个操作):定义字节,后面的每个操作数占数占1个字节。个字节。(2)DW(Define Word):定义字,后面的每个操作):定义字,后面的每个操作数占数占1个字。个字。(3)DD(Define DWord):定义双字,后面的每个操):定义双字,后面的每个操作数占作数占2个字。个字。(4)DQ(Define QWord):定义四字,后面的每个操):定义四字,后面的每个操作数占作数占4个字。个字。(5)DT(Define Tbyte):定义十字节,后面的每个操):定义十字
25、节,后面的每个操作数占作数占10个字节。个字节。操作数可以为:操作数可以为:(1)数值表达式;)数值表达式;(2)ASC码字符串;码字符串;(3)地址表达式;)地址表达式;(4)?(只保存内存空间,未定义初始值);)?(只保存内存空间,未定义初始值);(5)DUP 子句,其格式为:子句,其格式为:重复次数重复次数 DUP (操作(操作数,数,操作数),操作数),DUP子句可以嵌套。子句可以嵌套。2、符号定义伪指令、符号定义伪指令符号定义伪指令的基本形式为:符号定义伪指令的基本形式为:符号名符号名 EQU 表达式表达式符号名符号名 =常数表达式常数表达式功能:给表达式指定一个等价的符号名。功能:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 本章 学习 目标 通过 应当 掌握
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。