第4章汇编语言程序设计课件

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

【文档说明】第4章汇编语言程序设计课件.ppt,共(51)页,693.012 KB,由小橙橙上传

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

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

第4章汇编语言程序设计本章要点:汇编语言程序设计基础源程序的汇编、连接与调试分支程序设计技术循环程序设计技术子程序设计技术综合程序设计示例本教案内容第4章汇编语言程序设计1.汇编语言程序设计基础2.源程序的汇编、

连接与调试3.分支程序设计技术4.循环程序设计技术5.子程序设计技术6.综合程序设计示例汇编语言程序设计算法所谓算法,简单地说就是计算机能够实现的有限的解题步骤。我们知道,计算机只能进行最基本的算术运算和逻辑运算,要完成较为复杂的运算和控制操作,必须选择合适的算法,这是正确编程的基础。若题目涉及到

某种运算,则必须写出适合程序设计的正确算法,若题目要完成的功能未涉及到运算,也要写出编程思想。汇编语言程序设计设计流程将提出的算法或编程思想用流程图的方式画出来。图4.1给出了流程图中较为通用的几种符号。汇编语言程序设计起始

和终止框执行框判断框连接框汇编语言程序设计图4.1流程图符号根据流程图编写程序编写程序是采用程序设计语言来实现上面已确定的算法,此过程有些书上称为编码。本书所介绍的是采用汇编语言编写程序。采用汇编语言编写程序应注意以下几个问题

:汇编语言程序设计(1)必须详细了解CPU的编程模型、指令系统、寻址方式及相关伪指令;(2)必须进行存储空间和工作单元的合理分配;(3)多次使用的程序段可采用子程序或宏指令;(4)尽可能用标号或变量来代替绝对地址和常数;汇编语言程序设计程序的检验程序编写好以后,必须经过书面检查

和上机调试,以便说明程序是否正确。检验时,应预先选择典型数据,检查是否可以得到预期结果。汇编语言程序设计编写说明文件一个完整的软件应有相应的说明文件,这不仅便于用户使用,也便于对程序的维护和扩充。说明文件主要应包括程序的功能和使用方法,程序

的基本结构和所采用的主要算法以及程序必要说明和注意事项等。汇编语言程序设计我们知道,8086/8088CPU的地址空间是分段结构的,程序中出现的数据与代码以及程序中用到的堆栈都必须纳入某个段中。那么,如何告诉汇编程序,源程

序中的哪些内容属于数据段,哪些属于代码段呢?这自然是由汇编系统中提供的伪指令来实现的。下面我们首先介绍构成完整程序的有关伪指令。汇编语言程序设计基础汇编语言源程序的完整结构STACKSEGMENTSTACKDB256DUP(?)TOPLABELW

ORDSTACKENDSDATA1SEGMENTDATA1ENDS……用DB、DW等伪指令定义的段的实体汇编语言程序设计基础DATA2SEGMENTDATA2ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1ASSUMEE

S:DATA2,SS:STACKSTART:MOVAX,DATA1MOVDS,AX;DS初始化MOVAX,DATA2MOVES,AX;ES初始化……用DB、DW等伪指令定义的段的实体汇编语言程序设计基础MOVAX,STACKMOVSS,AX;SS初始化MOVS

P,OFFSETTOPMOVAH,4CHINT21H;程序结束,返回DOS操作系统CODEENDS;代码段定义结束ENDSTART;整个程序结束………….用指令语句编写的完成某一功能的程序体。汇编语言程序设计基础1.段定义伪指令格式:

段名SEGMENT[定位类型][组合类型][′类型′];段定义开始伪指令指令语句或伪指令语句组成的段的实体段名ENDS;段定义结束伪指令……汇编语言程序设计基础①段名:段名是所定义的段的名称,其构成规则与语句的名称一样。段名一但定义,就具备了以下5个属性。

段地址段内偏移地址定位类型组合类型类别汇编语言程序设计基础其中,格式中的定位类型、组合类型和类别外面的方括号不是语法符号,它表示该项是可以省略的。汇编语言程序设计基础在段定义时,SEGMENT与ENDS必须成对出现。SEGMENT与ENDS左边的段名必须一致。汇

编语言程序设计基础②定位类型:告诉汇编程序(MASM.EXE)对该段汇编时,该段的起始边界的要求。其类型有PAGE、PARA、WORD、BYTE四种。这四种类型的边界地址的要求如下:汇编语言程序设计基础PAGE=XXXXXXXXXXXX0

0000000PARA=XXXXXXXXXXXXXXXX0000(缺省型)WORD=XXXXXXXXXXXXXXXXXXX0BYTE=XXXXXXXXXXXXXXXXXXXX即它们的边界地址(20位地址)应分别可以被2

56、16、2、1除尽,分别称为以页、节、字、字节为边界。汇编语言程序设计基础在实际应用中,每个段的定位类型常选PARA(节)型。因为若选PAGE(页)型,将会使相邻的段间有较大空间的浪费;而选WORD或BYTE型,又很难

做到使一个段的偏移地址从0000H开始。汇编语言程序设计基础③组合类型:告诉连接程序(LINK.EXE)在进行多模块目标程序连接时,该段与其它段连接的有关信息,如本段与其它段是否组合为同一段;组合后,本段信息与其他段信息的关系如何等。组合类型有以下6种不同的类型:汇编语言

程序设计基础NONE型:表示本段与不同模块中的其它段在逻辑上不发生关系。连接后各模块中的各段都有自己的段地址(也称基地址)。STACK型:组合后的这个段用作堆栈。当段定义中指明了STACK类型后,说明堆栈段已经确定,所以,在可执行文件装

入内存后段寄存器SS中已是该段的段地址,堆栈指针SP已指向堆栈底。汇编语言程序设计基础PUBLIC型COMMON型AT表达式型MEMORY型汇编语言程序设计基础④类别:类别可以使任何一个合法的名称,但必须用单引号括起来。在多模块程序设计中,连接时,将把不同模块中相同‘类别’的各段

在物理上相邻地连接在一起,其顺序亦与LINK时提供的各模块顺序一致。当类别相同的各段的段名不同时,它们连接后虽在同一物理段内,但汇编语言程序设计基础它们仍不属于同一段,也就是它们的段基址不相同。这样做的一个好处是便于程序的固化。在编程时,它们都是独立

的代码段,各段有各自的段基址,但连接后,他们却在同一物理段,从而可以固化在一起。在单模块程序设计中,类别可有可无。若有,它只是告知程序阅读者本段信息的含义。汇编语言程序设计基础2.汇编语言源程序的完整结构

STACKSEGMENTSTACKDB256DUP(?)TOPLABELWORDSTACKENDSDATA1SEGMENTDATA1ENDS……用DB、DW等伪指令定义的段的实体汇编语言程序设计基础DATA2

SEGMENTDATA2ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1ASSUMEES:DATA2,SS:STACKSTART:MOVAX,DATA1MOVDS,AX;DS初始化MOVAX,DATA2MOVES,AX;ES初始化……用DB、

DW等伪指令定义的段的实体汇编语言程序设计基础MOVAX,STACKMOVSS,AX;SS初始化MOVSP,OFFSETTOPMOVAH,4CHINT21H;程序结束,返回DOS操作系统CODEENDS;代码段定义结束ENDSTART;整个程序结束………….用指令语句编写的完成某一功能的程序体。

汇编语言程序设计基础3.LABEL伪指令格式中的类型有BYTE、WORD、DWORD、结构名、记录名、NEAR、FAR共7种。前5种属于变量的类型,后两种是属于标号的类型。结构和记录是由伪指令定义的两种数据类型(关于这两种数据类型的定义在此就不在叙述,请参阅有关资料)。格式:名称LABEL类型汇编

语言程序设计基础格式中的名称就是语句的名称,为一标识符,若后面的类型是前5种之一,那么该名称就是变量名;当类型为后两种时,该名称就是标号。我们已经知道,变量与标号除具有类型属性外,还具有段地址和偏移地址的属性,名称的这两个属性就是汇编程

序汇编到该语句时语句所在的段地址和偏移地址。汇编语言程序设计基础如前面定义的堆栈段:STACKSEGMENTSTACKDB256DUP(?)TOPLABELWORDSTACKENDS由于STACK段内的偏移地址开始为0000H,段内留出了256个字节作为堆栈区

,因此汇编到TOP处时,偏移地址为0100H。汇编语言程序设计基础汇编情况如下图所示:256B堆栈区SS:0000HTOPSS:00FFH0100HTOP具有该单元的偏移地址属性,但不占用该单元。……汇编语言程序设计基

础由于堆栈指针SP初始化后要指向栈底+1单元,所以上述程序段中有:MOVAX,STACKMOVSS,AXMOVSP,OFFSETTOP…………此段程序完成对SS、SP的初始化汇编语言程序设计基础又由于前面介绍组合类型时,介绍了若某段定义时,其组合类型选为STAC

K型,系统默认该段为堆栈段。所以,在可执行文件装入内存后,段寄存器SS中已是该段的段基址,堆栈指针SP已指向堆栈底+1单元的偏移地址。因此,在程序设计时,程序段就不用给SS、SP初始化了。汇编语言程序设计基础MOVAX,STACKMOVSS,AXMOVSP,OFFSETTOP这

段程序可以缺省。即:汇编语言程序设计基础LABEL伪指令的功能是定义某变量名或标号的类型的。它虽具有段地址与偏移地址的属性,但它不占内存单元。例如:BARRAYLABELBYTEAARRAYDW100DUP

(?)汇编语言程序设计基础上面定义了两种类型的变量,BARRAY为字节类型,AARRAY为字类型,它们的段和偏移地址属性完全相同,都是下面保留的100个字空间的首地址,其目的是为了程序中可以对这100个字空间作两种不同类型的操作。这一点上,LABE

L的作用与前面介绍的PTR操作符的作用相类似。汇编语言程序设计基础BARRAY100个字空间AARRAY……汇编语言程序设计基础当需要对该100个字空间进行字操作时,可利用AARRAY字变量。如下面指令格式是正确的。M

OVAX,AARRAY汇编语言程序设计基础当需要对该100个字空间进行字节操作时,可利用BRRAY字节变量。如下面指令格式是正确的。MOVAL,BARRAYMOVAL,BYTEPTRAARRAY等效于汇编语言程序设计基础4.ASS

UME伪指令ASSUME伪指令告诉汇编程序(MASM.EXE)在对源程序汇编时,源程序中的段名与哪个段寄存器建立关系。这种关系只是一种承诺关系,汇编程序对源程序汇编时,承认这种关系,但段寄存器的值并未确定,用户必须在代码段一开始用MOV指令对DS、ES、SS

初始化。汇编语言程序设计基础START:MOVAX,DATA1MOVDS,AX;对DS初始化MOVAX,DATA2MOVES,AX;对ES初始化MOVAX,STACKMOVSS,AX;对SS初始化如前面完整结构程序中的下段程序:汇编

语言程序设计基础因为CS不能做DST,所以用户不能对CS初始化,CS和IP的初始化是系统赋给的,其方法见下面的END伪指令介绍。汇编语言程序设计基础5.END伪指令格式:END表达式该伪指令标志整个源程序的结束。它告诉汇编程序汇

编到此结束。所以,每个单独汇编的源程序的结尾必须有END伪指令。格式中的表达式是该程序运行时的启动地址,它通常是可执行语句的标号。汇编语言程序设计基础如前面完整结构程序中的最后有:MOVAH,4CHINT21HCODEENDSENDSTART……总汇编结束起始地址表达式汇编语言程

序设计基础6.=伪指令和EQU伪指令格式:名称=表达式名称EQU表达式功能:将表达式的值赋给左边的名称,但表达式的值不能超过65535。汇编语言程序设计基础伪指令本身不占内存空间。它的功能是为格式中的表达式部分赋一个名称。在编写源程序时,凡用到表达式值的地方都可以用名称

(符号常量)来代替。但汇编时,在出现名称的地方又用表达式的值取代了该名称,例如是一个变量名,那么它将被这个变量名取代。汇编语言程序设计基础EQU伪指令定义的名称在程序中只能定义一次,而用=伪指令定义的名称可以重新定义。COUNTEQU5*8BPT=BYTEPTRMOVCX,COU

NT;等效于MOVCX,5*8MOVBPT[BX],0;等效于MOVBYTEPTR[BX],0…………汇编语言程序设计基础7.ORG伪指令格式:ORG表达式格式中的表达式的值是一个2字节的无符号数。ORG伪指令的功能是指明该语句下面的指令或者变量在段内的偏移地址。汇编语言程

序设计基础例如:ORG0100H该伪指令指出,下面指令或变量的偏移地址为0100H。ORG伪指令一般常用于数据段中来确定某变量的偏移地址。汇编语言程序设计基础

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