微机原理与接口 第5章1_汇编语言程序设计_概念及格式.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:56 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

微机原理与接口 第5章1_汇编语言程序设计_概念及格式.ppt

微机原理与接口第5章1_汇编语言程序设计_概念及格式.ppt

预览

免费试读已结束,剩余 46 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章汇编语言程序设计5.1汇编语言源程序的格式及上机过程计算机语言发展过程机器语言:依赖于机器的低级语言,书写格式为二进制代码。优点:执行速度快,效率高。缺点:表达的意义不直观,编写、阅读、调试较困难。汇编语言:一种符号语言,与机器语言一一对应;使用助记符优点:用户理解容易缺点:不能被机器直接识别高级语言:独立于机器的通用语言,接近人类的自然语言。优点:易学易用,可移植性较好缺点:目标代码冗长,占用内存多,执行效率不高例一编程实现c=a+b,并在屏幕上显示结果解1:用C语言实现datasegmentadb?bdb?cdb?stringdb'c=$'dataendscodesegmentmainprocfarassumecs:code,ds:dataassumees:datastart:pushdssubax,axpushaxmovax,datamovds,axmoves,ax汇编语言源程序的组织结构汇编语言源程序采用的是分段结构,即一个汇编语言源程序由若干段组成(一般由数据段和代码段组成),每一个段以SEGMENT语句开始,以ENDS语句结束,整个程序的结尾是END语句。在代码段中下面的内容是不可缺少的:(1)定义段(使用SEGMENT/ENDS语句定义)(2)约定段寄存器和段的关系(即物理段和逻辑段的关系,使用一个或多个ASSUME语句实现)(3)装填段寄存器(只装填数据型段寄存器)(4)设置返回DOS的方法汇编语言源程序的格式CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,5MOVSI,0CLCLOOPER:MOVAL,DATA2[SI]ADCDATA1[SI],ALINCSIDECCXJNZLOOPERMOVAH,4CHINT21HCODEENDS例如:MYDARASEGMENT;定义数据段起始语句……;定义数据MYDATAENDS;定义数据段终止语句MYCODESEGMENT;定义代码段起始语句ASSUMECS:MYCODE,DS:MYDATA;约定段寄存器和段的关系START:MOVAX,MYDATA;装填相应的段寄存器MOVDS,AX……;完成所需功能的程序段MOVAH,4CH;设置返回DOSINT21HMYCODEENDS;定义代码段终止语句ENDSTART;程序结束5.1.2汇编语言语句的类型和格式1.语句分类①指令性语句:也称指令语句,指令系统的指令,汇编后产生目标代码。②指示性语句:也称伪指令语句,告诉汇编程序如何汇编,汇编后不产生目标代码。③宏指令语句:自定义语句,由指令语句和伪指令语句组成的指令集合,不展开时不产生目标代码。2.语句的格式指令语句与伪指令语句的格式是类似的。一般情况下,汇编语言的语句可以由1~4部分构成:[名字]助记符[操作数][;注释]其中带方括号的部分表示任选项,既可以有,也可以没有。例5.1中有如下语句:LOOPER:MOVAL,DATA2[SI];取一个字节加数DATA1DB0F8H,60H,0ACH,74H,3BH;被加数第一条语句是指令语句,其中“LOOPER:”是名字,“MOV”是指令助记符,“AL,DATA2[SI]”是操作数,“;”后面是注释部分;第二条语句是伪指令语句,其中“DATA1”是名字,“DB”是伪指令定义符,“0F8H,60H,0ACH,74H,3BH”是操作数,“;”后面是注释部分。1)名字汇编语言语句的第一个组成部分是名字(Name)。在指令语句中,这个名字是一个标号。指令语句中的标号实质上是指令的符号地址。并非每条指令语句必须有标号,但如果一条指令前面有一标号,则程序中其它地方就可以引用这个标号。在例5.1中,START、LOOPER就是标号。标号后面有一个冒号。标号有三种属性:段、偏移量和类型。①标号的段属性是定义标号在程序段的段地址,当程序中引用一个标号时,该标号的段值应在CS寄存器中。②标号的偏移量属性表示标号所在段的起始地址到定义该标号的地址之间的字节数。偏移量是一个16位无符号数。③标号的类型属性有两种:NEAR和FAR。前一种标号可以在段内被引用;后一种标号可以在其它段被引用。如果定义一个标号时后跟冒号,则汇编程序确认其类型为NEAR。伪指令语句中的名字可以是变量名、段名、过程名。与指令语句中的标号不同,这些伪指令语句中的名字并不总是任选的,有些伪指令规定前面必须有名字,有些则不允许有名字,也