资源描述:
《第4章汇编语言程序格式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章汇编语言程序格式源程序书写格式伪操作程序中数据的组织4.1源程序书写格式完整的段定义一般格式如下:<段名>SEGMENT……<段名>ENDS简化段定义.MODEL,.STACK,.DATA,.CODE一般格式书写结构:<堆栈段名>SEGMENTSTACK……<堆栈段名>ENDS<数据段名>SEGMENT……<数据段名>ENDS<代码段名>SEGMENTASSUME定义过程名或起始标号:……<代码段名>ENDSEND过程名或起始标号几点说明源程序中的堆栈段、数据段和代码段是逻辑段。源程序在汇编、连接后生成的段
2、是物理段。逻辑段和物理段的关系取决于伪指令ASSUME。一个源程序至少有一个逻辑代码段和END伪指令。一个源程序文件可以含有多个逻辑数据段、多个逻辑代码段、多个逻辑堆栈段。;完整段定义datasegmentHMessageDB'Hello,World',13,10,'$'dataendscodesegmentAssumecs:code,ds:dataStart:movax,datamovds,axmovah,9movdx,OFFSETHMessageint21hmovah,4chint21hcodeendsEND
3、Start书写格式举例;简化段定义1.ModelSmall.DATAHMessageDB'Hello,World!',13,10,'$'.CODEStart:movax,@datamovds,axmovah,9movdx,OFFSETHMessageint21hmovah,4chint21hENDStart书写格式举例;简化段定义2.ModelSmall.DATAHMessageDB'Hello,World',13,10,'$'.CODEStart:.STARTUPmovah,9movdx,OFFSETHMess
4、ageint21h.EXIT0ENDStart书写格式举例书写格式中涉及的伪指令SEGMENT/ENDS相当于一个逻辑段的前后括号,必须成对出现。<段名>由用户给出,前后必须一致。END格式:END[过程名
5、标号]功能:源程序文件结束。ASSUME格式:ASSUME段寄存器名:逻辑段名功能:用于指定某逻辑段应通过哪个段寄存器寻址,但并不把具体值装入相应的段寄存器。段寄存器的装填CS的装填系统完成,无需用户干预。DS,ES,SS(对于386后继机型,FS,GS)装填有用户程序完成。以DS为例,一般方法:MOVAX,
6、<逻辑段名>MOVDS,AX程序开始伪指令:.STARTUP(只能在简化段定义格式中使用)DOS下汇编语言程序的正常结束方法1:采用DOS4CH功能调用。…..MOVAH,4CHINT21H……END方法2:RET方式<程序名>PROCFARPUSHDSSUBAX,AXPUSHAX……RET<程序名>ENDP……END4.2伪操作伪操作它不是程序运行期间由计算机执行的,而是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。处理器选择伪操作段定义伪操作
7、程序开始和结束伪操作数据定义及存储器分配伪操作表达式赋值伪操作地址计数器与对准伪操作基数控制伪操作.8086选择8086指令系统(默认值).286选择80286指令系统.286P选择保护模式下的80286指令系统.386选择80386指令系统.386P选择保护模式下的80386指令系统.486选择80486指令系统.486P选择保护模式下的80486指令系统.586选择Pentium指令系统.586P选择保护模式下的Pentium指令系统◆处理器选择伪操作:◆段定义伪操作:完整的段定义格式datasegment;
8、定义数据段…dataends;----------------------------------------extrasegment;定义附加段…extraends;----------------------------------------codesegment;定义代码段assumecs:code,ds:data,es:extrastart:movax,datamovds,ax;段地址段寄存器…codeendsendstartPSPDSESSSCSEXE程序的内存映象图装入模块文件头……code
9、segmentmainprocfarassume……start:pushdsmovax,0pushax……retmainendpcodeendsendstart……codesegmentmainprocfarassume……start:…………movax,4c00hint21hmainendpcodeendsendstart存储模式与简化段定义伪操作(1)MODEL伪操作