第5章汇编语言程序设计初步课件.ppt
《第5章汇编语言程序设计初步课件.ppt》由会员分享,可在线阅读,更多相关《第5章汇编语言程序设计初步课件.ppt(96页珍藏版)》请在三一办公上搜索。
1、,2023/1/11,汇编语言程序设计,1,5.1 概述5.2 汇编语言程序框架结构5.3 MASM的基本伪指令5.4 常数、变量和标号5.5 宏指令5.6 段定义的简化,第5章 汇编语言程序设计初步,2022/9/24汇编语言程序设计15.1 概述第5章,2023/1/11,汇编语言程序设计,2,第5章 汇编语言程序设计初步,汇编语言是用指令助记符和符号地址来编写程序汇编程序将源源程序汇编成二进制代码汇编语言包括:指令助记符、数据和存放数据的变量、标号、伪指令,及相应的使用规则。源程序中一条汇编指令或伪指令均占一行指令语句:标号:助记符 Op1,Op2,;注释伪指令语句:符号 伪指令助记符
2、Op1,Op2,;注释,5.1 概述,2022/9/24汇编语言程序设计2第5章 汇编语言程序设计,2023/1/11,汇编语言程序设计,3,1.用编辑程序,如EDIT建立.ASM源程序;2.用汇编程序MASM把.ASM文件汇编成.OBJ文件;3.用连接程序LINK把.OBJ文件连接成.EXE文件;4.在DOS下直接键入可执行文件名即可运行该程序。5.用调试程序DEBUG调试该程序。,运行汇编语言程序的步骤:,5.1 概述,2022/9/24汇编语言程序设计31.用编辑程序,如EDI,2023/1/11,汇编语言程序设计,4,运行汇编语言程序的步骤:,5.1 概述,2022/9/24汇编语言程
3、序设计4运行汇编语言程序的步骤:,2023/1/11,汇编语言程序设计,5,1编辑,输入源程序;对源程序进行修改。,一定要用“纯文本”格式来储存源程序文件,否则无法汇编。产生的源程序文件应该以“.ASM”或“.TXT”为扩展名,最好使用“.ASM”扩展名。,编辑软件可以用记事本(Notepad)、Word以及命令行方式下的Edit。,5.1 概述,2022/9/24汇编语言程序设计51编辑 输入源程序;一,2023/1/11,汇编语言程序设计,6,2汇编,Microsoft公司的MASM(Macro Assembler)Borland公司的TASM(Turbo Assembler),常用的汇编
4、工具:,汇编阶段的任务是把汇编语言源程序“翻译”成为机器代码(称为“目标”),产生二进制的“目标文件”。,5.1 概述,2022/9/24汇编语言程序设计62汇编 Microso,2023/1/11,汇编语言程序设计,7,3连接,把几个程序模块产生的目标文件连接成一个完整的可执行程序;把“子程序库”中的子程序连接到程序中去。,如果程序里没有定义堆栈段,连接过程会产生警告信息“No stack”。如果程序比较小,这个警告信息不影响连接产生的可执行程序的使用。,连接阶段主要完成的操作是:,5.1 概述,2022/9/24汇编语言程序设计73连接把几个程序模块产,2023/1/11,汇编语言程序设计
5、,8,4运行和调试,“MYPRG1”,扩展名“.EXE”可以省略。如果同时存在文件MYPGM.EXE和MYPGM.COM,上面 的命令将执行程序MYPRG.COM而不是MYPGM.EXE。如果同时存在文件MYPGM.EXE和MYPGM.COM,执行 程序MYPGM.EXE时,需要在命令行打入它的全名。,由TLINK产生的“.EXE”或者“.COM”文件可以直接执行。,5.1 概述,2022/9/24汇编语言程序设计84运行和调试“MYPR,2023/1/11,汇编语言程序设计,9,汇编语言程序不包含输出结果的相关指令,操作者无法看到程序的运行结果。程序能够运行,但是不能得到预想的结果。,发生以
6、下两种情况之一的,需要对程序进行“调试”。,DEBUG MYPRG1.EXE TD MYPRG1,5.1 概述,2022/9/24汇编语言程序设计9 汇编语言程序不包含输,2023/1/11,汇编语言程序设计,10,第5章 汇编语言程序设计初步,5.2 源程序的基本框架结构,汇编语言程序对内存是分段使用的,一般情况下,内存被分为三种类型区:堆栈段区CS指向正当前运行的代码段数据段区DS指向当前的数据段代码段区SS指向当前的堆栈段,下面以一个简单的程序例子,来介绍汇编语言程序的基本框架结构。,2022/9/24汇编语言程序设计10第5章 汇编语言程序设,2023/1/11,汇编语言程序设计,11
7、,5.2源程序的基本框架结构,_STACKSEGMENT STACK STACK;定义堆栈段DB 256 DUP(0);堆栈区长度256字节_STACKENDS;堆栈段定义结束_DATASEGMENT;定义数据段MsgDBHello,World!,13,10,$_DATAENDS;数据段定义结束_TEXTSEGMENTCODE;定义代码段ASSUME CS:_TEXT,DS:_DATA,SS:_STACKStart:MOVAX,_DATA;取数据内存区段地址MOVDS,AX;设置数据段寄存器MOVDX,Offset MsgMOVAH,9INT21h;中断21h的9号功能,显示字符串MOVAX,
8、4C00hINT21h;运行结束,返回DOS_TEXTENDS;代码段定义结束ENDStart;源程序到此为止,2022/9/24汇编语言程序设计115.2源程序的基本框架,2023/1/11,汇编语言程序设计,12,5.2源程序的基本框架结构,1.内存的分段使用,完整的源程序应有:,(1)代码段至少有一个代码段,代码段含有指令,也可以含有伪指令和宏指令。(2)数据段为数据提供内存区。通常在数据段中定义变量、常量等。(3)堆栈段定义并分配供堆栈使用的内存区。如果没有堆栈段,仍可以使用系统提供的16个字节的堆栈空间。,2022/9/24汇编语言程序设计125.2源程序的基本框架,2023/1/1
9、1,汇编语言程序设计,13,5.2源程序的基本框架结构,2.源程序的结束与执行入口,完整的源程序应有:,(1)END为结束语句,表示源程序到此结束。(2)END后面可附带一个在程序中已定义的标号,用以说明程序的在调入时开始执行的第一条指令所在位置。源程序是一个独立的程序或主模块,那么伪指令END后面必须附带一个标号;源程序仅是一个普通模块,那么其END后面就不能附带标号,2022/9/24汇编语言程序设计135.2源程序的基本框架,2023/1/11,汇编语言程序设计,14,5.2源程序的基本框架结构,3.其它,完整的源程序应有:,(1)ASSUME语句ASSUME语句说明各分段与段寄存器之间
10、的对应关系。(2)装填DS、ES、SS必须装填DS、ES和SS,CS则由系统装填。只要定义完整,SS也可以由系统装。(3)返回DOS 运行于操作系统下的汇编语言程序,须在程序中通过操作系统的相关功能调用来结束其运行。,2022/9/24汇编语言程序设计145.2源程序的基本框架,2023/1/11,汇编语言程序设计,15,5.2源程序的基本框架结构,例5.1EP501.ASM 在显示器上输出文字“Hello,World!”。注意输出文字定义在代码段中。,2022/9/24汇编语言程序设计155.2源程序的基本框架,2023/1/11,汇编语言程序设计,16,5.2源程序的基本框架结构,例5.2
11、EP502.ASM 用BCD数进行运算:12345678+33445566。注意高地址高字节、低地址低字节存放。,2022/9/24汇编语言程序设计165.2源程序的基本框架,2023/1/11,汇编语言程序设计,17,5.2源程序的基本框架结构,NAME模块名符号定义区(EQU)EXTRN外部变量说明PUBLIC公共变量说明数据段附加段堆栈段代码段,汇编语言源程序的一般结构:,2022/9/24汇编语言程序设计175.2源程序的基本框架,数据段名SEGMENT变量定义数据空间预置数据段名ENDS堆栈段名SEGMENT PARA STACK STACK堆栈空间预置堆栈段名ENDS代码段名SEG
12、MENTASSUME段寄存器地址说明START:段地址装填主程序体返回DOS代码段名ENDSENDSTART,2023/1/11,18,汇编语言程序设计,数据段名SEGMENT2022/9/2418汇编语言程序设,代码段名SEGMENTASSUMEDS:数据段名,CS:代码段名ASSUMESS:堆栈段名START:MOVAX,数据段名MOVDS,AX主程序体MOVAH,4CHINT21H代码段名ENDSENDSTART,由于返回DOS的方法不同,代码段的结构有两种:,2023/1/11,19,汇编语言程序设计,代码段名SEGMENT由于返回DOS的方法不同,代码段的结,代码段名SEGMENTA
13、SSUMEDS:数据段名,CS:代码段名ASSUMESS:堆栈段名MAINPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,数据段名MOVDS,AX主程序体RETMAINENDP代码段名ENDSENDMAIN,2023/1/11,20,汇编语言程序设计,代码段名SEGMENT2022/9/2420汇编语言程序设,2023/1/11,汇编语言程序设计,21,第5章 汇编语言程序设计初步,5.3 MASM的基本伪指令,一、符号定义二、数据定义三、段定义四、过程定义五、开始和结束语句六、其它伪操作,2022/9/24汇编语言程序设计21第5章 汇编语言程序设,2023/1/11,汇编语
14、言程序设计,22,5.3 MASM的基本伪指令,1.等值语句 EQU2.等号语句=3.解除语句 PURGE,一.符号定义语句,2022/9/24汇编语言程序设计225.3 MASM的基,等值语句 EQU,格式nameEQUexpression功能给符号名定义一个常数值,可以求出常数值的表达式,已定义的别的符号名,或有效的助记符。例如CONSTANTEQU128ALPHAEQU3BETAEQUALPHA+5MOVEEQUMOV,2023/1/11,23,汇编语言程序设计,等值语句 EQU格式nameEQUexpression,等号语句=,格式name=expression功能同EQU语句类似。区
15、别EQU语句不允许重复定义=语句则允许重复定义,例如:EMP=8:EMP=EMP+1,注意:在同一源文件中,同一符号名不能同时使用EQU和“=”语句来分别定义。,2023/1/11,24,汇编语言程序设计,等号语句=格式name=expression例如注意,解除语句 PURGE,格式PURGE name1,name2,,nameN功能解除定义过的符号名。解除后的符号名可重新定义。,例如ALPHAEQU7BETAEQUALPHA-5PURGEALPHA,BETAALPHAEQU24,2023/1/11,25,汇编语言程序设计,解除语句 PURGE格式例如2022/9/2425汇编语言程,202
16、3/1/11,汇编语言程序设计,26,5.3 MASM的基本伪指令,DB伪指令:用来定义字节,其后的每个操作数占一个字节。DW字2字节DD双字4字节DQ四字8字节DT10字节,二.数据定义语句,为一个数据项分配存储单元,用一个符号名与这个存储单元相联系,并可以赋初值。,2022/9/24汇编语言程序设计265.3 MASM的基,数据定义语句,格式:变量名DB 操作数1,操作数2,;注释变量名DW 操作数1,操作数2,;注释:其中,操作数字段可以是各种形式的数据,存入指定的存储单元;也可以只分配存储空间,而不存入确定的数据。,2023/1/11,27,汇编语言程序设计,数据定义语句格式:2022
17、/9/2427汇编语言程序设计,数据定义语句,例1BDATADB10,4,10HWDATADW100,100H,-5DDATADD3*20,0FFFDH汇编时,在相应的存储单元中存入数据。如右图所示。,1.操作数可以是常数或表达式,BDATAWDATADDATA,2023/1/11,28,汇编语言程序设计,数据定义语句例11.操作数可以是常数或表达式BDATA2,数据定义语句,例2MSGDBASTR1DBHow are you?STR2DBABSTR3DWAB汇编时,在相应的存储单元中存入数据。如右图所示。注意:两个以上字符的字符串只能用DB定义和初始化。,2.操作数可以是字符串,MSGSTR
18、1STR2STR3,2023/1/11,29,汇编语言程序设计,数据定义语句例22.操作数可以是字符串MSG2022/9,数据定义语句,例3ABCDB12H,?,?,?,0DEFDW?,569HGHIDD678H,?汇编时,在相应的存储单元中存入数据。如右图所示。注意:保留空单元就是不赋初值,并不是赋0值。,3.操作数为“?”,保留空单元,ABCDEFGHI,2023/1/11,30,汇编语言程序设计,数据定义语句例33.操作数为“?”,保留空单元ABC20,数据定义语句,格式:CNT DUP(OPR1,OPR2,)其中,CNT为重复次数,常数。例4ARY1DB2 DUP(0,1,2,?)AR
19、Y2DB1,3 DUP(1,0,2 DUP(6,?),5)ARY3DB10H,2 DUP(0,2 DUP(1,2,3),?)ARY4DB128 DUP(?)其中ARY3称为嵌套DUP,汇编时,在相应的存储单元中存入数据如右图所示。,4.操作数字段使用重复操作符DUP,ARY3,2023/1/11,31,汇编语言程序设计,数据定义语句格式:CNT DUP(OPR1,OPR2,),数据定义语句,用DW可以把变量或标号的偏移地址存人存储器用DW可以把变量或标号的整个地址存人存储器例5ADDRDWNUM;偏移地址NUMDB12H,56HADDBDDBRANCH;偏移地址,段地址:BRABCH:CMPA
20、X,0,5.操作数也可以为地址,2023/1/11,32,汇编语言程序设计,数据定义语句用DW可以把变量或标号的偏移地址存人存储器5.操,汇编语言程序设计 第四章 汇编语言程序格式,数据定义语句,数据定义语句前面的变量的值是该语句中第一个数据项在当前段内的第一个字节的偏移地址。每个存储单元与一种类型联系。例4.6OPER1DB12H,34HOPER2DW78H,56H:MOVAL,OPER1+1;AL=34HMOVAX,OPER2+1;AX=5600HMOVOPRE1+1,0;BMOVAL,BYTE PTR OPER2;AL=78H,OPER1OPER2,2023/1/11,33,汇编语言程序
21、设计,汇编语言程序设计 第四章 汇,2023/1/11,汇编语言程序设计,34,5.3 MASM的基本伪指令,段定义语句主要有:SEGMENT和ENDSASSUMEORG,三、段定义语句,实模式下存储器是分段的,所以需要有段定义语句按段来组织程序和使用存储器。,2022/9/24汇编语言程序设计345.3 MASM的基,段定义语句SEGMENT、ENDS,成对出现功能把汇编语言源程序分成段,相当于存储器段。有代码段、数据段、附加段、堆栈段。代码段中,存放指令、伪指令、宏指令。其它段中,存放伪指令。,2023/1/11,35,汇编语言程序设计,段定义语句SEGMENT、ENDS成对出现2022/
22、9/24,SEGMENT、ENDS,格式段名 SEGMENT 定位类型 组合类型 类别:段名 ENDS其中:定位类型:PAGE、PARA、WORD、BYTE组合类型:PRIVATE、PUBLIC、STACK、COMMON、MEMORY、AT 表达式类别:连接时组成段组的名字。,2023/1/11,36,汇编语言程序设计,SEGMENT、ENDS格式2022/9/2436汇编语言程,SEGMENT、ENDS,MYDATA SEGMENTPARAPUBLIC DATA XDB12HYDB34HZDB?MYDATAENDSMYSTACKSEGMENTPARASTACK STACKDB64 DUP(?
23、)MYSTACKENDSCODE1SEGMENTASSUMECS:CODE1,DS:MYDATA,SS:MYSTACK:MOVAL,XADDAL,YMOVZ,AL:CODE1ENDS,2023/1/11,37,汇编语言程序设计,SEGMENT、ENDSMYDATA SEGMENTPA,ASSUME语句,格式ASSUME段寄存器:段名,段寄存器:段名,其中:段寄存器必须是CS、DS、ES、SS中的一个;段名必须是由SEGMENT定义的段名;ASSUME NOTHING可取消前面由ASSUME所指定的段寄存器。例如:ASSUME CS:CODE,DS:DATA,SS:STACK,2023/1/11
24、,38,汇编语言程序设计,ASSUME语句格式2022/9/2438汇编语言程序设计,ASSUME语句,功能ASSUME语句指定某个段分配给哪个段寄存器,明确段和段寄存器之间的关系,使汇编程序在汇编指令时知道各段寄存器的值。同时可以在指令中省掉许多段超越前缀,即使段约定得以实现。,2023/1/11,39,汇编语言程序设计,ASSUME语句功能2022/9/2439汇编语言程序设计,ASSUME语句,说明1.ASSUME语句如果一行写不下,分行写时需再次使用ASSUME语句,如:ASSUME CS:MYCODE,DS:MYDATAASSUME SS:STACK2.ASSUME分配段寄存器,但并
25、不能把段地址装入段寄存器,所以在代码段中,还必须把段地址装入相应的段寄存器。,2023/1/11,40,汇编语言程序设计,ASSUME语句说明2022/9/2440汇编语言程序设计,装填段地址,MYDATA SEGMENT BUFDB12HMYDATAENDSMYSTACKSEGMENTPARASTACK STACKDW64 DUP(?)TOSLABELWORDMYSTACKENDSCODE1SEGMENTASSUMECS:CODE1,DS:MYDATA,SS:MYSTACKSTART:MOVAX,MYDATAMOVDS,AX;装填DSMOVAX,MYSTACKMOVSS,AX;装填SSMOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 初步 课件
链接地址:https://www.31ppt.com/p-2109288.html