如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第3章教学重点硬指令和伪指令3.1汇编语言程序的开发3.1.1汇编语言程序的语句格式MOVCX,0;传送指令,具有2个操作数DELAY:NOP;空操作指令,没有操作数,带有标号LOOPDELAY;循环指令,标号DELAY说明转移位置BUFFERDB1,2,3,4,5,6,7;数据定义伪指令,在主存中开辟7个连续的字节单元,初值依次为1~7,BUFFER表示首地址标号、名字与标识符保留字助记符操作数与参数注释分隔符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...;在代码段填入指令序列.exit0...;子程序代码end;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;汇编结束,同时指明程序起始点;SampleB.ASMstacksegmentstackdw512dup(?)stackendsdatasegment...;在数据段定义数据dataendscodesegment’code’assumecs:code,ds:data,ss:stackstart:movax,datamovds,ax...;在代码段填入指令序列movax,4c00hint21h...;子程序代码codeendsendstart3.1.3汇编语言程序的开发过程开发过程1:源程序的编辑开发过程2:源程序的汇编开发过程3:目标模块的连接汇编和连接的依次自动实现开发过程4:可执行程序的调试3.2参数、变量和标号3.2.1数值型参数1.常数十进制常数十六进制常数二进制常数字符串常数符号常数符号定义DosWriteCharequ2CarriageReturn=13CallDOSequ<int21h>符号应用(左边程序段等价右侧的符号形式)movah,2;movah,DosWriteCharmovdl,13;movdl,CarriageReturnint21h;CallDOS2.数值表达式运算符算术运算符逻辑运算符移位运算符关系运算符高低分离符地址型参数3.2.2变量定义伪指令变量名初值表变量定义伪指令助记符定义字节单元伪指令DBdatasegment;数据段Xdb'a',-5db2dup(100),?Ydb'ABC'dataendsmoval,X;此处X表示它的第1个数据,故AL←'a'decX+1;对X为始的第2个数据减1,故成为-6movY,al;现在Y这个字符串成为'aBC'定义字单元伪指令DWdatasegment;数据段countdw8000h,?,'AB'maxintequ64hnumberdwmaxintarraydwmaxintdup(0)dataends字变量和字