汇编语言入门教程--汇编语言程序结构.pptx
《汇编语言入门教程--汇编语言程序结构.pptx》由会员分享,可在线阅读,更多相关《汇编语言入门教程--汇编语言程序结构.pptx(64页珍藏版)》请在咨信网上搜索。
1、教学重点本章重点掌握:程序的格式、开发方法参数的表达、变量的定义变量和标号的属性第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构第一章第一章基础知识基础知识机器语言计算机能够直接识别并执行的二进制机器指令序列优点:开销小、运行速度快;缺点:难以编写和理解,编程效率很低。汇编语言(Assembly Language)用助记符号表示机器指令代码、变量地址,标号等的符号指令序列。优点:易记、易理解,易编写程序,大大提高了编程效率;问题:需要将助记符号翻译为机器语言。汇编语言源程序:用汇编语言编写的程序。汇编程序:将助记符号翻译为机器语言的语言处理程序,以便 计算机能够识别。汇
2、编:将助记符号翻译为机器语言的过程。理解以上几个名词概念:汇编语言、汇编语言源程序、汇编程序、汇编概概念念第一节:汇编程序功能及上机过程 汇编程序功能 汇编程序的主要功能如下:(1)检测语法错 显示错误信息(2)源程序文件 二进制目标文件(并输出*.LST文件)(3)展开宏指令一般汇编程序都应具有如下功能:宏汇编功能 支持地址和数据的符号表示 支持内存管理 支持程序的模块化组织 支持多种类型的数据表示等 汇编程序依赖于硬件,不同机型的系统有自己的汇编程序。上机过程 上机过程如图所示第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构汇编语言源程序的结构与书写格式汇编语言源程
3、序是段结构的:代码段、数据段、堆栈段、附加段 源程序由段组成,每段有一个段名,segment定义段起点,ends定义段结束点。每段由若干语句行组成,源程序以end结束。例字符串传送指令和伪指令指令指令使CPU产生动作、并在程序执行时才处理的语句,就是前一章学习的处理器指令伪指令伪指令(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等伪指令与具体的处理器类型无关,但与汇编程序的版本有关 本课程采用微软宏汇编程序本课程采用微软宏汇编程序 MASM 5.0MASM 5.0汇编语言语句一般格式为:标识符/语句标号 指令名 操作数序列 ;注释 标
4、识符用来为变量、段及过程等命名 语句标号标识符后加:,提供转移地址指令名指令可分为三类:机器指令、伪指令和宏指令。机器指令:指令系统中的指令,程序运行时由CPU执行;伪指令:汇编程序执行的操作,规定汇编程序如何按要求进行汇编及分配内存。宏指令:由一系列指令或伪指令构成,汇编时展开成若干条机器指令,用于提高编程效率。操作数序列可以是常量、变量、表达式、寄存器名或标号等,用逗号隔开。(伪指令和宏指令由汇编程序在汇编期间处理伪指令和宏指令由汇编程序在汇编期间处理)注释符“;”后可给出语句注释,提高可读性和可理解性。第二节:汇编语言语句格式与分类第二节:汇编语言语句格式与分类(1)常量 0011011
5、0B 389D 467O B407H 3.475E+5 Input a number(2)变量 变量名:存储单元的符号地址 变量值:存储单元中的数据MOV AL,Amov al,a变量的三种属性:段值(SEG):变量所在段的起始地址 偏移量(OFFSET):段起点距离变量所在存储单 元位置的字节数50偏移量段起点类型(TYPE):变量占用的字节数常量、变量、标号常量、变量、标号(3)标号 标号:存放指令的存储单元的符号地址,常用作转移地址。NEAR :2字节转移地址 CMP AX,BX JNE NEXT NEXT:MOV AX,0 标号的三种属性:段值(SEG):标号所在段的起始地址 偏移量(
6、OFFSET):段起点距离标号所指存储单 元位置的字节数 类型(TYPE):NEAR,FAR(偏移地址)短指针(近指针)段内转移FAR:4字节转移地址(段、偏移地址)长指针(远指针)段间转移第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构汇编语言程序的语句类型:汇编语言程序的语句类型:1、程序执行指令语句。、程序执行指令语句。2、伪操作语句。、伪操作语句。3、宏指令语句。、宏指令语句。伪操作的功能:伪操作的功能:伪操作又称为伪指令,它不象机器指令那样是在程序运行期间由伪操作又称为伪指令,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由
7、汇编程序处理的操作,它计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,它们可以完成如下功能:们可以完成如下功能:(1 1)符号定义伪指令)符号定义伪指令 (2 2)数据定义伪指令)数据定义伪指令 (3 3)段定义伪指令)段定义伪指令 (4 4)过程定义伪指令过程定义伪指令 (5 5)条件汇编伪指令)条件汇编伪指令 (6 6)宏指令)宏指令 (7 7)结构与记录)结构与记录 一、一、数据定义及存储器分配伪操作数据定义及存储器分配伪操作格式:Variable Mnemonic Operand,Operand ;Comments 变变量量(Variable)字字段段:是是可可有有
8、可可无无的的,它它用用符符号号地地址址表表示示,其其作作用用与与指指令令语语句句前前的的标标号号相相同同,但但它它的的后后面面不不跟跟冒冒号号。如如果果语语句句中中有有变变量量则则汇汇编编程程序序使使其其记记以以第第一个字节的偏移地址。一个字节的偏移地址。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构注释(Comments)字段:用来说明该伪操作的功能,它也是可有可无的。助记符(Mnemonic)字段:说明所用伪操作的助记符,常用的有以下几种:DB伪操作:伪操作:用来定义字节,其后的每个操作数都占有一个字节。用来定义字节,其后的每个操作数都占有一个字节。DW的的操操作
9、作:用用来来定定义义字字,其其后后的的每每个个操操作作数数占占有有一一个个字字(低低位位字字节节在第一个字节地址中,在第一个字节地址中,高位字节在第二个字节地址中高位字节在第二个字节地址中)。DD伪操作:伪操作:用来定义双字,其后的每个操作数占有二个字。用来定义双字,其后的每个操作数占有二个字。DQ伪操作:伪操作:用来定义四个字,其后的每个操作数占有四个字。用来定义四个字,其后的每个操作数占有四个字。DT伪伪操操作作:用用来来定定义义十十个个字字节节,其其后后的的每每个个操操作作数数占占有有十十个个字字节节,形成压缩的形成压缩的BCD码。码。这些伪操作可以把其后面跟着的数据存入指定的存储单元,
10、或者只分配存储器空这些伪操作可以把其后面跟着的数据存入指定的存储单元,或者只分配存储器空间而并不存入确定的数值。间而并不存入确定的数值。DW和和DD伪操作可以存储偏移地址或完整的地址伪操作可以存储偏移地址或完整的地址。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构例例操操作作数数可可以以是是常常数数,或或者者是是表表达达式式(根根据该表达式可以求得一个常数据该表达式可以求得一个常数),如,如DATA_BYTEDB10,4,l0HDATA_WORDDW100,100H,-5DATADWDD3*20,0FFFDH汇编程序可以在汇编期间在存储器中存入汇编程序可以在汇编期间在
11、存储器中存入数据,如右图所示。数据,如右图所示。例例操作数也可以是字符串,如:操作数也可以是字符串,如:MESSAGE DB MESSAGE DB H2LLOH2LLO则存储器存储情况如下图所示:则存储器存储情况如下图所示:第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构注意:注意:DBAB和和DWAB的存储的存储分配空间的不同。如下图:分配空间的不同。如下图:例例操操作作数数?可可以以保保留留存存储储空空间间,但但不不存存入数据。入数据。如:如:ABCDB0,?,?,?,0DFFDW?,52,?经汇编后的存储情况如右图所示。经汇编后的存储情况如右图所示。第一章第一章基
12、础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构操作数字段还可以使用复制操作符来复制某个(或某些)操作数。其格式为操作数字段还可以使用复制操作符来复制某个(或某些)操作数。其格式为:repeat_countDUP(operate,operate,)其中其中repeat_count可以是一个表达式,可以是一个表达式,它的值应该是一个正整数,用来指定括号它的值应该是一个正整数,用来指定括号中的操作数的重复次数。中的操作数的重复次数。例例ARRAYlDB2DUP(0,1,2,?,?)ARRAY2DB100DUP(?)汇编后的存储情况如下图所示。汇编后的存储情况如下图所示。ARRAYlDB2
13、DUP(0,1,2,?,?)和以下语句是等价的:和以下语句是等价的:ARRAYlDB0,I,2,?,0,1,2,?第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构例例DUP操作可以嵌套,例如操作可以嵌套,例如ARRAY3DB100DUP(0,2DUP(1,2),0,3)则汇编结果如右图所示:则汇编结果如右图所示:可以用可以用DW或或DD伪操作把变量或标号的偏移地址伪操作把变量或标号的偏移地址(DW)或整个地址或整个地址(DD)存入存储器。用存入存储器。用DD伪操作存入伪操作存入地址时,第一个字为偏移地址,第二个字为段地址。地址时,第一个字为偏移地址,第二个字为段地址。例
14、如例如PARAMETER_TABLEDWPAR1DWPAR2DWPAR3INTERSEG_DATADDDATA1DDDATA2则汇编后的存储情况如下图所示。其中偏移地址或段地址则汇编后的存储情况如下图所示。其中偏移地址或段地址均占有一个宇,其低位字节占有第一个字节,高位字节占均占有一个宇,其低位字节占有第一个字节,高位字节占有第二个字节。有第二个字节。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构顺便说明一下,这里操作数字段中的变量或标号可以使用表达式如顺便说明一下,这里操作数字段中的变量或标号可
15、以使用表达式如:在这种情况下,汇编后,存储器中应该存入表达式的值。在这种情况下,汇编后,存储器中应该存入表达式的值。例如例如PARAMETER_TABLEDWPAR1+1DWPAR2+1说明变量的类型属性问题说明变量的类型属性问题:在在数数据据定定义义伪伪操操作作前前面面的的变变量量的的值值是是该该伪伪操操作作中中的的第第一一个个数数据据项项在在当当前前段段内内的的第第一一个个字字节节的的偏偏移移地地址址。此此外外,它它还还有有一一个个类类型型属属性性用用来来表表示示该该语语句句中中的的每每一一个个数数据据项项的的长长度度(以以字字节节为为单单位位表表示示),因因此此DB伪伪操操作作的的类类型
16、型属属性性为为1,DW为为2,DD为为4,DQ为为8,DT则为则为10,变量表达式的属性和变量是相同的。,变量表达式的属性和变量是相同的。汇编程序可以用这种隐含的类型属性来确定某些指令是字指令还是字节汇编程序可以用这种隐含的类型属性来确定某些指令是字指令还是字节指令。指令。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构例如例如OPER1DB?,?,?OPER2DW?,?,?MOV OPER1,0 MOV OPER1,0 MOV OPER2,0 MOV OPER2,0 则第一条指令应为字节指令,第则第一条指令应为字节指令,第二条指令则应为字指令。二条指令则应为字指令。如
17、果有下列指令序列如果有下列指令序列:OPER1DB1,2OPER2DW1234H,2345HMOVAX,OPER1+1MOVAL,OPER2 汇编程序在汇编这一段程序时,能发汇编程序在汇编这一段程序时,能发现两条现两条MOV指令的两个操作数的类型属性指令的两个操作数的类型属性是不相同的:是不相同的:OPERl十十1为字节类型属性而为字节类型属性而AX为字为字类型属性;类型属性;OPER2为字类型属性而为字类型属性而AL为字节类为字节类型属性。型属性。汇编语言将指示由于属性类型不匹配出错。汇编语言将指示由于属性类型不匹配出错。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结
18、构有有一一个个办办法法可可以以指指定定操操作作数数的的类类型型属属性性,它它优优先先于于隐隐含含的的类类型型属属性性,即即可可以以使使用用PTR属性操作符属性操作符。其格式为:。其格式为:typePTRVarible士士constantexpression其其 中中 类类 型型 可可 以以 是是 BYTE,WORD或或DWORD(双双字字),这这样样变变量量的的类类型型就就可可以以指定了。上面例子可以写为:指定了。上面例子可以写为:OPER1DB1,2OPER2DW1234H,2345HMOVAX,WORDPTROPER1+1MOVAL,BYTEPTROPER2通通过过PTR属属性性操操作作符
19、符就就把把OPER1十十1的的类类型型属属性性指指定定为为字字,两两个个操操作作数数的的属属性性就就一一致致了了,汇汇编编时时不不会会出出错错,而而运运行行时时应应把把OPER1十十1的的字字内内容容送送到到AX,即即把把OPER1十十1的的内内容容送送AL,把把OPER2的的第第一一个个字字节节的的内内容容运运AH,所所以以指指令令执执行行完完后后,(AX)3402H。同样,对于第二条语句(同样,对于第二条语句(AL)=34H第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构LABEL伪操作伪操作:除了用属性操作符给以定义外,还可以用除了用属性操作符给以定义外,还可以用
20、LABEL伪操作来定义,其格式为:伪操作来定义,其格式为:nameLABELtype(1)对于数据项可以表示为:对于数据项可以表示为:variable_nameLABELtype其中,其中,type可以是可以是BYTE,WORD或或DWORD(双字双字)。(2)对于可执行的代码,则可表示为)对于可执行的代码,则可表示为label_nameLABELtype其中,其中,type可以是可以是NEAR或或FAR。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构例如例如4.9BYTE_ARRAYLABELBYTEWORD_ARRAYDW50DUP(?)这这样样在在100个个字字
21、节节数数组组中中的的第第一一个个字字节节的的地地址址赋赋于于二二个个不不同同类类型型的的变变量量名名:字节类型的变量字节类型的变量BYTE_ARRAY和字类型变量和字类型变量WORD_ARRAY。指令指令MOVWORD_ARRAY十十2.,0把该数组的第把该数组的第3个和第个和第4个字节置个字节置0,而,而MOVBYTE_ARRAY十十2.,0则把该数组的第则把该数组的第3个字节置个字节置0。例:例:LABF LABEL FARLABF LABEL FAR LAB LAB:MOV AXMOV AX,100 100 第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构二、表达
22、式赋值伪操作二、表达式赋值伪操作EQU 有时程序中多次出现同一个表达式为方便起见可以用赋值伪操作给表达式有时程序中多次出现同一个表达式为方便起见可以用赋值伪操作给表达式赋予一个名字,其格式如下:赋予一个名字,其格式如下:此后,程序中凡需要用到该表达式之处就可以用表达式名来代替了。此后,程序中凡需要用到该表达式之处就可以用表达式名来代替了。上式中的表达式上式中的表达式可以是任何有效的操作数格式可以是任何有效的操作数格式,可以是任何可以求出常数值的表可以是任何可以求出常数值的表达式,也可以是任何有效的助记符。达式,也可以是任何有效的助记符。举例如下:举例如下:第一章第一章基础知识基础知识第五章第五
23、章汇编语言程序结构汇编语言程序结构必须注意必须注意EQU语句的表达式中如果有变量或标号的表达式,则在该语句前应该先语句的表达式中如果有变量或标号的表达式,则在该语句前应该先给出它们的定义。给出它们的定义。例如,语句例如,语句:则必须放在则必须放在DATA_ONE的定义之后才行,否则汇编程序将指示出错。的定义之后才行,否则汇编程序将指示出错。另另外外还还有有一一个个与与EQU相相类类似似的的=伪伪操操作作也也可可以以作作为为赋赋值值伪伪操操作作使使用用。它它们们之之间间的的区区别别是是:EQU伪伪操操作作中中的的表表达达式式名名是是不不允允许许重重复复定定义义的的,而而=伪伪操操作作则则允允许许
24、重复定义。重复定义。例如:例如:EMP=6或或EMPEQU6都可以使数都可以使数6赋以符号名赋以符号名EMP,但是不允许两,但是不允许两者同时使用。者同时使用。第一个语句后的指令中第一个语句后的指令中EMP值为值为7;而第二个语句后的指令中;而第二个语句后的指令中EMP值为值为8。第一章第一章基础知识基础知识第五章第五章汇编语言程序结构汇编语言程序结构三、段定义伪操作三、段定义伪操作存存储储器器的的物物理理地地址址是是由由段段地地址址和和偏偏移移地地址址组组合合而而成成的的,汇汇编编程程序序在在把把源源程程序序转转换换为为目目标标程程序序时时,必必须须确确定定标标号号和和变变量量的的偏偏移移地
25、地址址,并并且且需需要要把把有有关关信信息息通通过过目目标标模模块块传传送送给给连连接接程程序序,以以便便连连接接程程序序把把不不同同的的段段和和模模块块连连接接在在一一起起形形成一个可执行程序。为此,需要用段定义伪操作,成一个可执行程序。为此,需要用段定义伪操作,段定义伪操作的格式如下段定义伪操作的格式如下:此外,还要明确段和段寄存器的关系,这可用此外,还要明确段和段寄存器的关系,这可用ASSUME伪操作来实现,其格式为:伪操作来实现,其格式为:其中其中assignment说明分配情况,其格式为:说明分配情况,其格式为:其中段寄存器名必须是其中段寄存器名必须是CS、DS、ES和和SS中的一个
- 配套讲稿:
如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。