衔接篇程序框架幻灯片.ppt
《衔接篇程序框架幻灯片.ppt》由会员分享,可在线阅读,更多相关《衔接篇程序框架幻灯片.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、衔接篇程序框架第1页,共34页,编辑于2022年,星期二硬指令和伪指令硬指令硬指令使使CPU产生动作、并在程序执行时才处理的语句。伪指令伪指令(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等。伪指令与具体的处理器类型无关,但与汇编程序的版本伪指令与具体的处理器类型无关,但与汇编程序的版本有关。有关。我们采用微软宏汇编程序我们采用微软宏汇编程序 MASM 6.15第2页,共34页,编辑于2022年,星期二一、汇编语言程序的开发本节从汇编语言程序的语句格式出发,给出第一个示范性的汇编语言源程序,并说明汇编语言程序的过程:编辑 汇编 连接
2、调试即汇编语言程序的开发方法第3页,共34页,编辑于2022年,星期二1 汇编语言程序的语句格式 执行性语句由硬指令构成的语句,它通常对应一条机器指令,出现在程序的代码段中:标号:硬指令助记符 操作数,操作数;注释 说明性语句由伪指令构成的语句,它通常指示汇编程序如何汇编源程序:名字 伪指令助记符 参数,参数,;注释第4页,共34页,编辑于2022年,星期二MOV CX,0MOV CX,0;传送指令,具有传送指令,具有2 2个操作数个操作数DELAY:DELAY:NOPNOP;空操作指令,没有操作数,带有标号空操作指令,没有操作数,带有标号LOOP DELAYLOOP DELAY;循环指令,标
3、号循环指令,标号DELAYDELAY说明转移位置说明转移位置BUFFERBUFFERDB 1,2,3,4,5,6,7DB 1,2,3,4,5,6,7;数据定义伪指令,在主存中开辟数据定义伪指令,在主存中开辟7 7个连续的字节单元,个连续的字节单元,初值依次为初值依次为1 17 7,BUFFERBUFFER表示首地址表示首地址汇编语言语句实例汇编语言语句实例第5页,共34页,编辑于2022年,星期二标号、名字与标识符标号标号是反映硬指令位置(逻辑地址)的标识符,后跟一个冒是反映硬指令位置(逻辑地址)的标识符,后跟一个冒号分隔号分隔名字名字是反映伪指令位置(逻辑地址)和属性的标识符,后是反映伪指令
4、位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有一个冒号跟空格或制表符分隔,没有一个冒号标识符标识符(IdentifierIdentifier)一般最多由)一般最多由3131个字母、数字及规定的特殊个字母、数字及规定的特殊符号(如符号(如 _ _、$、?、)组成,不能以数字开头。默认情况)组成,不能以数字开头。默认情况下,汇编程序不区别标识符中的字母大小写下,汇编程序不区别标识符中的字母大小写一个程序中,每个标识符的定义是唯一的,还不能是汇编语言一个程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字采用的保留字第6页,共34页,编辑于2022年,星期二保留字保留字(保留字
5、(Reserved WordReserved Word)是汇编程序已经利用的标识)是汇编程序已经利用的标识符,主要有:符,主要有:o硬指令助记符例如:MOVMOV、ADDo伪指令助记符例如:DB、EQUEQUo操作符例如:例如:OFFSETOFFSET、PTRPTRoo寄存器名寄存器名例如:AXAX、CSo预定义符号例如:例如:datadata 汇编语言大小写不敏感第7页,共34页,编辑于2022年,星期二注释语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性必要时,一个语句行也可以由分号开始作为阶段性注释汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理第8页,共34页,编辑
6、于2022年,星期二2 汇编语言的程序格式完整的汇编语言源程序由段组成完整的汇编语言源程序由段组成一个汇编语言源程序可以包含若干个代码段、数据段、附加段或一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列堆栈段,段与段之间的顺序可随意排列需独立运行的程序必须包含一个代码段,并指示程序执行的需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点起始点,一个程序只有一个起始点所有的可执行性语句必须位于某一个代码段内,说明性语句可根据所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内需要位于任一段内通常,程序
7、还需要一个堆栈段通常,程序还需要一个堆栈段第9页,共34页,编辑于2022年,星期二汇编语言源程序源程序分别用两种格式书写v第一种格式从MASM 5.0开始支持简化段定义格式v第二种格式MASM 5.0以前就具有完整段定义格式Hello,Everybody!程序功能程序功能第10页,共34页,编辑于2022年,星期二;01a.asm 01a.asm(文件名)(文件名)stackstacksegment stacksegment stack;定义堆栈段定义堆栈段dw 512 dup(?)dw 512 dup(?);堆栈段有堆栈段有512512字(字(10241024字节)空间字节)空间stack
8、stackendsends;堆栈段结束堆栈段结束datadatasegmentsegment;定义数据段定义数据段stringstringdb Hello,Everybody!,0dh,0ah,$db Hello,Everybody!,0dh,0ah,$datadataendsendscodecodesegment codesegment code;定义代码段定义代码段assume cs:code,ds:data,ss:stackassume cs:code,ds:data,ss:stackstart:start:mov ax,datamov ax,data;建立建立DSDS段地址段地址mov
9、 ds,axmov ds,ax例:完整段定义格式例:完整段定义格式第11页,共34页,编辑于2022年,星期二mov dx,offset stringmov dx,offset stringmov ah,9mov ah,9int 21hint 21hmov ax,4c00hmov ax,4c00hint 21hint 21h;利用功能调用返回利用功能调用返回DOSDOScodecodeendsends;代码段结束代码段结束end startend start;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点例:完整段定义格式例:完整段定义格式第12页,共34页,编辑于2022年,星期二
10、;SampleA.ASM;SampleA.ASMstackstacksegment stacksegment stackdw 512 dup(?)dw 512 dup(?)stackstackendsendsdatadatasegmentsegment.;在数据段定义数据在数据段定义数据datadataendsendscodecodesegment codesegment codeassume cs:code,ds:data,ss:stackassume cs:code,ds:data,ss:stackstart:start:mov ax,datamov ax,datamov ds,axmov
11、 ds,ax.;在代码段填入指令序列在代码段填入指令序列mov ax,4c00hmov ax,4c00hint 21hint 21hcodecodeendsends .;子程序代码子程序代码end startend start完整段定义完整段定义格式格式 MASM 5.x支持第13页,共34页,编辑于2022年,星期二;01b.asm;01b.asm(文件名)(文件名).model small.model small;定义程序的存储模式定义程序的存储模式.stack.stack;定义堆栈段定义堆栈段.data.data;定义数据段定义数据段stringstringdb Hello,Everyb
12、ody!,0dh,0ah,$db Hello,Everybody!,0dh,0ah,$;在数据段定义要显示的字符串在数据段定义要显示的字符串.code.code;定义代码段定义代码段.startup.startup;程序起始点,建立程序起始点,建立DSDS、SSSSmov dx,offset stringmov dx,offset string;指定字符串指定字符串mov ah,9mov ah,9int 21hint 21h;利用功能调用显示信息利用功能调用显示信息.exit 0.exit 0;程序结束点,返回程序结束点,返回DOSDOSendend;汇编结束汇编结束例:简化段定义格例:简化段
13、定义格式式第14页,共34页,编辑于2022年,星期二;SampleB.ASMSampleB.ASM.model small.model small.stack.stack.data.data.;在数据段定义数据在数据段定义数据.code.code.startup.startup;(注(注1 1).;在代码段填入指令序列在代码段填入指令序列.exit 0.exit 0;(注(注2 2).;子程序代码子程序代码endend;(注(注3 3)简化段定义简化段定义格式格式 MASM 6.x支持第15页,共34页,编辑于2022年,星期二;SampleC.ASM;SampleC.ASM.model s
14、mall.model small.stack.stack.data.data.;在数据段定义数据在数据段定义数据.code.codestartstart:mov ax,datamov ax,datamov ds,axmov ds,ax.;在代码段填入指令序列在代码段填入指令序列mov ax,4c00hmov ax,4c00hint 21hint 21h.;子程序代码子程序代码end startend start简化段定义简化段定义格式格式 MASM 5.x支持第16页,共34页,编辑于2022年,星期二TITLETITLEA04ASM1(EXE)Move and add operationsA
15、04ASM1(EXE)Move and add operationsSTACKSTACKSEGMENT PARA STACK StackSEGMENT PARA STACK Stack.STACKSTACKENDSENDS;-;-DATASEGDATASEGSEGMENT PARA DataSEGMENT PARA DataDATASEGDATASEGENDSENDS;-;-CODESEGCODESEG SEGMENT PARA CodeSEGMENT PARA CodeMAINMAINPROC FARPROC FARASSUME SS:STACK,DS:DATASEG,CS:CODESEGA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 衔接 程序 框架 幻灯片
限制150内