欢迎来到天天文库
浏览记录
ID:48812071
大小:1.51 MB
页数:59页
时间:2020-01-28
《微机原理与接口技术4.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章8086汇编语言程序设计导学讲述了一些常见的伪指令、宏指令、各种程序设计以及如何调试和运行一个汇编程序,要求在程序设计时能够熟练运用所学的伪指令,对程序设计重点掌握三种程序结构,即顺序结构、分支结构、循环结构的程序设计方法,掌握子程序的设计方法,以便能够设计具有良好结构的程序2内容第一节伪指令…1第二节宏指令2第三节程序设计3第四节调试与运行4第五节80X86/Pentium微处理器简介(略)53第一节伪指令伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理伪指令不产生与之相应的目标代码。伪指令用于定义数据、分配存储区、定义段以及定义过程等4一、数据定义伪指令数据定义伪指令
2、的用途是定义一个变量的类型,并赋初值,或者仅分配存储单元,而不赋值;示例:DATADB100,OFFH;存人64H,FFHSTRDB‘WELCOME!’;存人8个字符BADW‘AB’;存入42H,41HADRSDWTABLE,TABLE+5,TABLE+10;存入3个偏移地址BUFFERDB10DUP(?):给BUFFER分配十个字节,不赋值5二、符号定义伪指令1.EQU:STREQU64*10242.=(等号)COUNT=103.LABELAREAWLABELWORD;变量AREAW类型为WORDAGAINFLABELFAR;定义标号AGAINF为FAR6三、段定义伪指令1.SEGM
3、ENT/ENDS格式:段名SEGMENT[定位类型][组合类型][‘类别’]段名ENDS(1)定位类型(ALIGN)告诉汇编程序如何确定逻辑段的边界在存储器中的位置①BYTE(1)②WORD(2)③PARA(16)缺省④PAGE(256)(2)组合类型(Combine)①不组合NONE②PUBLIC③STACK④COMMON⑤MEMORY⑥AT表达式(3)‘类型’(‘Class’):具用相同类别名逻辑段被装入连续的内存区72.ASSUME/NOTHING格式:ASSUME段寄存器名:段名[,段寄存器名:段名[,…]]ASSUME伪指令告诉汇编程序,将某一个段寄存器设置为某一个逻辑段址关
4、键字NOTHING表示取消前面用ASSUME伪指令对这个段寄存器的设置。ASSUMECS:CODE,DS:DATAl,SS:STACK8四、过程定义伪指令PROC/ENDP格式:过程名PROC[NEAR]/FARRET过程名ENDP示例:NAME2PROCNEAR;RETNAME2ENDP9五、模块定义与连接伪指令在编写规模比较大的汇编语言程序时,可以将整个程序划分为几个独立的源程序(或称模块),然后将各个模块分别进行汇编,生成各自的目标程序,最后将它们连接成为一个完整的可执行程序。各个模块之间可以相互进行符号访问。也就是说,在一个模块中定义的符号可以被另一个模块引用。通常称这类符号为
5、外部符号,而将那些在一个模块中定义,只在同一模块中引用的符号称为局部符号101.NAMENAME伪指令用于给源程序汇编以后得到的目标程序指定一个模块名,连接时需要使用这个目标程序的模块名。其格式为NAME模块名2.ENDEND伪指令表示源程序到此结束,指示汇编程序停止汇编,对于END后面的语句可以不予理会。格式为:END[标号]113.PUBLICPUBLIC伪指令说明本模块中的某些符号是公共的,即这些符号可以提供给将被连接在一起的其他模块使用。格式为:PUBLIC符号[,…]4.EXTRNEXTRN伪指令说明本模块中所用的某些符号是外部的,即这些符号将在被连接在一起的其他模块中定义(
6、在定义这些符号的模块中还必须用PUBLIC伪指令说明)。格式为:EXTRN名字:类型[,…]12第二节宏指令在汇编语言中,如果在源程序中需要多次使用同一个程序段,可以将这个程序段定义为一个宏指令,然后每次需要时,即可简单地用宏指令来代替(称为宏调用),从而避免了重复书写,使源程序更加简洁、易读。13一、MACRO/ENDM格式:宏指令名MACRO[参数[,…]];(宏定义体)ENDM示例:DECADD1MACROOPRl,OPR2MOVAL,OPR1ADDAL,OPR2DAAMOVOPRl,ALENDM调用:DECADDlDL,BUFFER14二、PURGE:取消已有的宏定义。格式PU
7、RGE宏指令名[,…]15三、宏指令与子程序的区别1)宏指令由宏汇编程序MASM在汇编过程中进行,在每个宏调用处,将相应的宏定义插入;而调用指令CALL和返回指令RET则是CPU指令。执行CALL指令时,CPU使程序的控制转移到子程序的入口地址。2)宏指令简化了源程序,但不能简化目标程序,汇编以后,在宏定义处不产生机器代码。但在每个宏调用处,通过宏扩展,重复程序段的机器代码仍然出现多次,因此不节省内存单元。对于子程序来说,在目标程序中定义子程序
此文档下载收益归作者所有