如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
封面汇编语言和高级语言(1)汇编语言和高级语言(2)汇编语言和高级语言(3)汇编语言和高级语言(4)汇编语言和高级语言(5)汇编语言的应用场合硬指令和伪指令3.1.2汇编语言的程序格式汇编语言源程序;lt301a.asm(文件名).modelsmall;定义程序的存储模式.stack;定义堆栈段.data;定义数据段stringdb’Hello,Everybody!’,0dh,0ah,’$’;在数据段定义要显示的字符串.code;定义代码段.startup;程序起始点,建立DS、SSmovdx,offsetstring;指定字符串movah,9int21h;利用功能调用显示信息.exit0;程序结束点,返回DOSend;汇编结束;SampleA.ASM.modelsmall.stack.data...;在数据段定义数据.code.startup;(注1)...;在代码段填入指令序列.exit0;(注2)...;子程序代码end;(注3);SampleC.ASM.modelsmall.stack.data...;在数据段定义数据.codestart:movax,@datamovds,ax...;在代码段填入指令序列movax,4c00hint21h...;子程序代码endstart;lt301b.asm(文件名)stacksegmentstack;定义堆栈段dw512dup(?);堆栈段有512字(1024字节)空间stackends;堆栈段结束datasegment;定义数据段stringdb’Hello,Everybody!’,0dh,0ah,’$’dataendscodesegment’code’;定义代码段assumecs:code,ds:data,ss:stackstart:movax,data;建立DS段地址movds,axmovdx,offsetstringmovah,9int21hmovax,4c00hint21h;利用功能调用返回DOScodeends;代码段结束endstart;汇编结束,同时指明程序起始点5.1.1汇编语言源程序的格式START:MOVAX,(SEG)DATAMOVDS,AX;初始化DSMOVCX,5;循环次数送CXMOVSI,0;置SI初值为0CLC;清CF标志LOOPER:MOVAL,(OFFSET)DATA2[SI];取一个字节加数ADC(OFFSET)DATA1[SI],AL;与被加数相加例5.1分析2.汇编语言语句的类型和格式1).语句的类型汇编语言源程序中的语句可以分为三种类型:指令语句、伪指令语句和宏指令语句。(1)指令语句:它是能产生目标代码,CPU可以执行的能完成特定功能的语句。(2)伪指令语句:它是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。例如,告诉汇编程序已写出的汇编语言源程序有几个段,段的名字是什么;定义变量,定义过程,给变量分配存储单元,给数字或表达式命名等。显然,伪指令语句是汇编程序在汇编时使用的。(3)宏指令语句:它是一种用户利用宏指令语句自己定义的语句。2)语句的格式指令语句与伪指令语句的格式是类似的。一般情况下,汇编语言的语句可以由1~4部分构成:[名字]助记符[操作数][;注释]其中带方括号的部分表示任选项,可以有,也可以没有。例5.1中有如下语句:LOOPER:MOVAL,DATA2[SI];取一个字节加数DATA1DB0F8H,60H,0ACH,74H,3BH;被加数1)名字在指令语句中,这个名字是一个标号。标号后面通常有一个冒号。标号有三种属性:段、偏移量和类型(NEAR和FAR)。伪指令语句中的名字可以是变量名、段名、过程名。伪指令语句的名字后面通常不跟冒号,这是它和标号的一个明显区别。变量也有三种属性:段、偏移量和类型(BYTE、WORD、DWORD、QWORD、TBYTE)。注:段名时默认的是段属性;变量名是默认的是偏移量的属性,见例5.1。2)助记符汇编语言语句中的第二个组成部分是助记符(Memonic)。在指令语句中的第二部分是CPU指令系统中指令的助记符,如MOV、ADC等。在伪指令语句中的第二部分是伪指令的定义符,如DB、SEGMENT、ENDS、END等。它们在程序中的作用是定义变量的类型、定义段以及告诉汇编程序结束汇编等。3)操作数汇编语言语句中的第三个