汇编语言程序格式课件

PPT
  • 阅读 72 次
  • 下载 0 次
  • 页数 31 页
  • 大小 118.012 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
汇编语言程序格式课件
可在后台配置第一页与第二页中间广告代码
汇编语言程序格式课件
可在后台配置第二页与第三页中间广告代码
汇编语言程序格式课件
可在后台配置第三页与第四页中间广告代码
汇编语言程序格式课件
汇编语言程序格式课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 31
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】汇编语言程序格式课件.ppt,共(31)页,118.012 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44771.html

以下为本文档部分文字说明:

汇编语言程序格式汇编语言程序格式汇编语言程序格式一、汇编语句类型和格式1.语句类型–硬指令语句(指令性语句)是指能产生目标代码,CPU可以执行的,能完成特定功能的语句,它主要由CPU指令组成–伪指令语句(指示性语句)是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编–宏指令语句是

一个指令序列,汇编时凡有宏指令语句的地方都将用相应的指令序列的目标代码插入汇编语言程序格式2.语句的格式(1)执行性语句–标号:硬指令助记符操作数,操作数;注释(2)说明性语句–名字伪指令助记符参数,参数….;注释汇编语言程序格式二、完整段定

义格式8086按照逻辑段组织程序,具有代码段、数据段、附加段和堆栈段一个汇编语言源程序可以包括若干个代码段、数据段或堆栈段段与段之间的顺序可以随意排列。逻辑段用汇编语言源程序中的段定义伪指令来定义汇编语言程序格式二、完

整段定义格式完整段定义伪指令指定段寄存器伪指令段寄存器的装入可执行程序的正常结束汇编语言程序格式1.完整段定义伪指令(SEGMENT、ENDS)作用:控制汇编程序和连接程序在内存中组织代码和数据的方式。格式

:段名SEGMENT[定位类型][组合类型][‘类别名’]┇段名ENDS注意:SEGMENT和ENDS总是成对出现中间省略部分称为段体。对代码段来说,则主要是程序代码;对其它段来说,一般用于变量、符号等的定义方括

号中的为可选项,当有可选项时各项顺序不能错,可选项之间用空格隔开汇编语言程序格式(1)段名段名是用户自定义的,但不要与指令助记符或伪指令重名用来指示汇编程序为该段分配的存储区的首地址段名有段地址和偏移地址两个属

性段开始和段结束的段名必须相同汇编语言程序格式(2)定位类型说明段的起始地址的边界要求,指示连接程序按定位类型提出的要求,安排各段在内存的相互衔接方式。它有5种可选择类型:①BYTE:段的起始地址可以从任何地址开始。段起始地址(20位):×××××

×××××××××××××××B②WORD:段的起始地址必须以偶地址开始段起始地址(20位):×××××××××××××××××××0B汇编语言程序格式③DWORD:段的起始地址必须为4的倍数段起始地址(20

位):××××××××××××××××××00B④PARA:段的起始地址必须从小段边界开始段起始地址(20位):××××××××××××××××0000B⑤PAGE:段的起始地址必须从页的边界开始段起始地址(20位):××××××

××××××00000000B如未指定定位类型,则汇编程序默认为PARA。汇编语言程序格式(3)组合类型当程序有多个段时,组合类型用来说明段与段之间是怎样连接和定位的,共有6种组合类型:①不指定或称隐含方式:表示本段与其他模块中的同名段无连接关系,它将作为一个

独立的段运行。②PUBLIC:本段与其他模块中说明为PUBLIC方式的同名段顺序连接,组成一个大的逻辑段,它们共用同一个段起始地址。③COMMON:本段与其他模块中说明为COMMON方式的同名段从同一地址开始重叠连接,段长是同名段中最长的段的长度。汇编语言程序格式④STACK:表示该段是堆栈段的

一部分。把所有相同‘类别名’的具有STACK组合类型的段连接成一个连续段,该段长度为各原有段的总和。将连续段首地址送SS,段内最大偏移地址送SP(SP指向栈顶)。当定义了STACK属性后,在主程序中可省略对SS和SP的初始化。⑤MEMORY:与PUBLIC同义。汇编语言

程序格式(4)‘类别名’类别名必须用单引号括起来。连接时对不同模块、不同名的程序段只要‘类别名’相同,则放在一个连续的物理空间,但每段之间是独立的,不进行组合。汇编语言程序格式2.指定段寄存器伪指令(ASSUME)作用:明确段和段寄存器之间的关系,即

告诉汇编程序,在运行期间通过哪个段才能找到所要的指令和数据格式:ASSUME段寄存器名:段名[,段寄存器名:段名[……]]例如:ASSUMECS:CODE,DS:DATA,SS:STACK汇编语言程序格式3.段寄存器的装入ASS

UME伪指令只是指出各段和段寄存器之间的关系,但并未真正将段基地址装入相应的段寄存器中,所以在程序的代码段开始处就应该先进行段基址的装入数据段DS、附加段ES和堆栈段SS的段基址由用户程序代码装入代码段CS在加载程序后由系统自动装入汇编语

言程序格式(1)DS、ES的装入MOVAX,DATA;数据段段基地址送AX寄存器MOVDS,AX;AX寄存器的内容送数据段寄存器DS或MOVAX,SEGX;变量X所在数据段的段基址送AX寄存器MOVDS,AX汇编语言程序格式(2)CS的装入对CS和IP的装入方法是利用EN

D后的标号来完成的。如:START:┇ENDSTART系统自动将START所在段的段地址送CS寄存器,将START所在段内的偏移地址送IP寄存器。汇编语言程序格式(3)SS的装入方法1:由系统自动装填。要求在定义堆栈段时,必须把参数写全。这时,将程序装入内存,系统会自动地把堆栈段地址和堆栈指

针置入SS和SP中,因而可以不在代码段中装入SS和SP的值。STACK1SEGMENTPARASTACK‘STACK’DB50HDUP(?)STACK1ENDS汇编语言程序格式方法2:手动装填STACK1

SEGMENTPARADW50HDUP(?)TOPLABELWORD;TOP属性为WORDSTACK1ENDSCODESEGMENTASSUMECS:CODE,SS:STACK1START:MOVAX,STACK1MOVSS,AX;堆栈段的段地址送SSMOVSP,OFFSETTOP;

堆栈段的栈顶地址送SP┇TOP是该堆栈的初始栈顶部地址。汇编语言程序格式4.操作系统下可执行程序的正常结束方法1(非标准方法):在CODEENDS之前增加如下语句:MOVAX,4C00HINT21H方法2(标准方法):MAINPROCFARPUSHDS;保存原来的PSP

段地址MOVAX,0H;0送AXPUSHAX;0压栈┇RET;返回DOSMAINENDP汇编语言程序格式完整段定义的源程序格式DATASEGMENT;定义数据段DATASTRINGDB‘Hello,Everybody!’,0DH,0AH,’$’DATAENDS;数据段结束CODESEGMENT

;定义代码段CODEASSUMECS:CODE,DS:DATA;确定CS、DS、SS指向的逻辑段START:MOVAX,DATA;设置数据段的段地址DSMOVDS,AXMOVDX,OFFSETSTRING;利用功能调用显示信

息MOVAH,9INT21HMOVAH,4CH;利用系统功能调用返回DOSINT21HCODEENDS;代码段结束ENDSTART;汇编结束汇编语言程序格式三、简化段定义格式简化的段定义书写简单,有利于实现汇编语言程序模块与高级语言程序模

块的连接,它可以由操作系统自动安排段序,自动保证名字定义的一致性。汇编语言程序格式1.存储模式选择伪操作(﹒MODEL)格式:﹒MODEL模式类型功能:本语句一般放在段定义之前,用来说明在存储器中是如何安放各个段的。模式类型说明代码段、数据段在程序中如何安排;代码、数据的寻址是近还是远。根据它

们的不同组合,模式类型可以有如下5种。汇编语言程序格式①Tiny模式:也叫微模式,所有数据及代码放入同一个物理段内,该模式用于编写较小的源程序,这种模式的源程序最终可以形成COM文件。②Small:也叫小模式,所有数据放入一个64KB的段中,所有代码放入另一个64KB的段中,即程序中只有一个

数据段和一个代码段这是一般应用程序最常用的一种模式。汇编语言程序格式③Medium:也叫中模式:所有数据放入一个64KB的段中,代码可以放入多于一个的段中,即程序中可以有多个代码段。④Compact:也叫压缩模式,所有代码放入一个64KB的段中;数据可以放入多于一个的

段中,即程序中可以有多个数据段。⑤Large:也叫大模式,代码和数据都可以分别放入多于一个的段中,即程序中可以有多个代码段和多个数据段。汇编语言程序格式2.数据段定义伪指令(.DATA)格式:.DATA[名字]定义一个数据段,如果有多个数据段,则用名字

来区别:只有一个数据段时,隐含段名为DATA。3.堆栈段定义伪指令(.STACK)格式:.STACK[长度]定义一个堆栈段,并形成SS及SP的初值,SP的默认值为1024,隐含段名为STACK。可选的长度参数指定堆栈段所占存储区的字节数,默认

大小是1KB。汇编语言程序格式4.代码段定义伪指令(.CODE)格式:.CODE[名字]定义一个代码段,如果有多个代码段,则用名字来区别:只有一个代码段时,隐含段名为CODE。5.程序开始伪指令(.STARTUP)格

式:.STARTUP产生程序开始执行的代码,同时还指定了程序开始执行的起点。在小模式下,可以省略将数据段基址装入DS的语句。汇编语言程序格式6.程序返回伪指令(.EXIT)格式:.EXIT[参数]功能:.EXIT产生终止程序执行返回操作系统

的指令代码。可选参数是一个返回的数码,通常用0代表没有错误例如:.EXIT0对应的代码是:MOVAX,4C00HINT21H汇编语言程序格式简化段定义的源程序格式.MODELSMALL;定义程序的存储模式.STACK;定义堆栈段.DATA;定义数据段STRINGDB’Hello,E

verybody!’,0DH,0AH,’$’;在数据段定义要显示的字符串.CODE;定义代码段.STARTUP;说明程序起始位置,并建立DS、SS内容MOVDX,OFFSETSTRING;指定字符串在数据段的偏移地址MOVAH,9INT21H;利用DOS功能调用显示信息.EXIT

0;程序结束点,返回DOSEND;汇编结束汇编语言程序格式简化段定义的源程序格式.MODELSMALL;定义程序的存储模式.STACK;定义堆栈段.DATA;定义数据段STRINGDB’Hello,Everybody!’,0D

H,0AH,’$’;在数据段定义要显示的字符串.CODE;定义代码段Start:MOVAX,DATAMOVDS,A;说明程序起始位置,并建立DS、SS内容MOVDX,OFFSETSTRING;指定字符串在数据段的偏移地址MOVAH,9INT21H;利用DOS功能调用显示信息MOVA

H,4cHINT21H;程序结束点,返回DOSENDstart;汇编结束汇编语言程序格式综合练习在数据段定义一字节变量,存储一个0-9之间的十进制数(1)编写汇编语言源程序,将该十进制数显示到屏幕上(2)用debug将汇

编生成的可执行文件调入内存,查看数据段的内容(3)在内存中修改数据段中定义的十进制数,用t或g命令显示运行结果思考:(1)如何在屏幕上显示一个两位的十六进制数(2)如何在屏幕上显示一个两位的十进制数汇编语言程序格式DATASEGMENTADB6DATAENDSCODESEGMENTASSUMEC

S:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDL,6ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?