如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第四章汇编语言程序设计用汇编语言编写源程序,经过汇编程序和连接程序生成目标程序和执行程序文件名.ASM文件名.OBJ文件名.EXE1、用文本编辑程序EDIT.EXE编写汇编语言源程序,产生扩展名为.ASM的源文件;2、用汇编语言编写的源程序经过汇编程序MASM.EXE自动翻译成目标程序,产生扩展名为.OBJ的目标文件;3、用链接程序LINK.EXE将目标程序链接产生扩展名为.EXE的可执行程序。8086的汇编程序为ASM-86扩展后的宏汇编程序为MASM-86汇编语言是一种面向计算机的符号语言。由汇编语言组成的源程序需要由汇编程序将其“汇编”成机器语言组成的程序。这样,计算机才能执行处理。汇编程序(MASM.EXE)的主要功能是:1、将汇编语言源程序翻译成机器语言;2、按程序员指定,分配存储区域(包括程序区,数据区,堆栈区等);3、将各种进位制数据转换成二进制数;4、把字符转换成ASCII码;5、计算出数值表达式的值;6、对源程序进行检查,如果有指令错或程序格式错则给出相应提示。在8086/8088汇编语言中,有两类汇编语言指令,一类是执行性指令,另一类是说明性指令。对执行性指令,汇编程序都为之产生机器指令代码;而说明性指令的作用仅仅是告诉汇编程序对源程序中的执行性指令应该如何产生代码,或分配存储区。1、执行性指令“执行性指令”又称“指令语句”。这类语句经汇编后总有目标程序与之对应,按其与汇编后目标程序对应情况又可分为两种类型:一般性执行性指令和宏指令。执行性指令的功能主要由其对应的目标程序在运行时来实现。(1)一般性执行指令这种指令是一条指令对应一条8086/8088的机器指令,即指令系统中包括的指令。(2)宏指令这种指令是由伪操作定义的。宏指令是一般性指令的扩展。(3)执行性指令的格式[标号:][前缀]指令助记符[操作数表][;注释]其中[]表示根据不同的指令或不同情况可以任选的部分。操作数表是由逗号分隔开的多个操作数。1)标号代表“:”后指令的存储地址,供JMP,CALL和LOOP等指令操作使用。除此之外,它还具备一些其他“属性”2)前缀是8086/8088中一些特殊指令,它们同其他指令配合使用,如“串操作指令”的重复指令REP。3)指令助记符包括8086/8088指令助记符以及用宏定义语句定义过的宏指令名。4)操作数对8086/8088的一般性执行指令来说,可以是一个或二个操作数,这时我们称左边的操作数为目标操作数,右边的操作数为源操作数,对宏指令来说,可能有多个操作数。操作数之间有逗号隔开。5)注释以“;”开始,用来简要说明该指令在程序中的作用,以提高程序的可读性。2、说明性指令(伪指令)“说明性指令”又称“指示性语句”。由伪操作符定义,用于程序以源程序方式同“汇编程序”通信。程序采用说明性指令表示源程序的起始终止信息、分段情况、内存结构、打印要求和变量说明等信息。说明性指令的功能由汇编程序来完成。说明性指令在汇编时不产生任何代码。说明性指令的格式如下:[名字]伪操作指令[操作数表][;注释]其中“名字”可以是标识符定义的常量名、变量名、过程名、段名以及结构名或记录名等。所谓标识符是由字母、数字、特殊字符(如?或下划线)等组成的字符串。第一节汇编语言程序格式BEGIN:movax,data;建立数据段段地址movds,axmovax,stack;建立堆栈段movss,axmovdx,offsetNOTES;显示提示信息movah,09h;系统调用int21hmovbx,NUM;将数装入BXmovch,4;共4个16进制数ROTATE:movcl,4;cl中为移位位数rolbx,cl;循环左移4次moval,bl;将最高4位移到BL中andal,0fh;提取al中的低4位(一个16进制数);首先提取的是16位数中的高4位addal,30h;将该数转换为ASCII码cmpal,‘9’;是0–9的数吗?jleDISPLAY;是,转DISPLAY,显示该数addal,07h;否,则是A–F之间的数DISPLAY:movdl,al;显示程序movah,2;系统调用,输出字符int21hdecch;显示字符数减1jnzROTATE;不到4个,转ROTATEmovax,4c00h;系统调用,AH=4C,退出并返回DOSint21hCODEENDS;代码段结束ENDBEGIN;程序结束二、汇编语言的语句1、指令语句在汇编时产生目标代码,对应着机器的某种操作的语句称为指令语句。如:MOVAX,CXA