资源描述:
《南邮微机原理课件第6章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.1汇编源程序的编程格式6.2系统功能调用6.3程序设计举例6.4Windows汇编语言编程初步第6章汇编语言程序设计汇编源程序有两种编程格式:EXE文件的编程格式:只能生成扩展为EXE的可执行文件;COM文件的编程格式:可以生成扩展为COM的可执行文件。COM文件的执行级别高于EXE文件,同名的BAT(批处理)文件执行级别最低。6.1源程序的编程格式EXE文件的编程格式此格式允许源程序使用多个逻辑段(包括据段、堆栈段、代码段及其它逻辑段);在实模式下,每个逻辑段的目标块不超过64K;适合编写
2、大型程序。.486DATASEGMENTUSE16;定义数据段MESGDB‘IAMASTUDENT!’,’$’DATAENDSCODESEGMENTUSE16;定义代码段ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXLAST:MOVAH,9MOVDX,OFFSETMESGINT21HMOVAH,4CHINT21H;返回DOSCODEENDSENDBEGEXE文件的内存映象磁盘上的EXE文件包括两部分:装入模块和重定位信息DOS装载EXE文件时,根据重定位信
3、息完成装入模块的重定位。同时,重定位信息被丢弃。DOS在同一内存块的用户程序上方(低地址处)偏移地址为00H~FFH的单元处自动生成一个256字节的数据块,称为程序段前缀(PSP)。DOS自动使DS=ES=存放PSP的段基址,使CS:IP指向用户程序的启动地址INT20H数据段代码段堆栈段DS,ESCS:IPSSSP注:DOS把EXE文件调入内存后,自动给SS、SP赋初值,程序中给SS、SP赋初值的指令可省略。PSP(256字节)用户程序COM文件的编程格式汇编语言要求此格式必须符合以下规定:·
4、源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段;·程序使用的数据,可以集中设置在代码段的开始或未尾;·在代码段偏移地址(有效地址)为100H的单元,必须是程序的启动指令;·代码段目标块小于64K。COM文件的编程格式适合于编写中小型程序。.486CODESEGMENTUSE16ASSUMECS:CODEORG100HBEG:JMPSTARTMESGDB‘HELLO’,0DH,0AH,’$’;用户程序数据区START:MOVCX,10;设置循环次数LAST:MOVAH,9MOVDX,OFF
5、SETMESGINT21H;显示一行HELLOLOOPLAST;循环计数MOVAH,4CHINT21H;返回DOSCODEENDSENDBEGCOM文件的内存映象磁盘上的COM文件没有重定位信息,体积比EXE文件小。DOS装载COM文件时,在同一内存块的用户程序上方(低地址处)偏移地址为00H~FFH的单元处自动生成一个PSP;然后从偏移地址100H处开始存放用户程序;DOS自动使CS=DS=ES=SS=存放PSP的段基址,使IP=100H,SP=FFFEH。INT20H代码段堆栈段CS,DSE
6、S,SSIP(FFFEH)SPPSP(256字节)用户程序(64K-256)返回DOS的其它方法EXE格式文件可以借用PSP首单元的INT20H返回DOS执行完用户程序后,使CS:IP指向PSP的首单元。DOS在装载EXE文件时将DS指向该单元,故可采取措施:把执行程序放在一个远过程中;用户程序在给SS、SP赋初值后,DS赋值前,用三条指令把PSP的首单元的物理地址(DS:0000H)压入堆栈,即:PUSHDSMOVAX,0PUSHAX返回DOS时,执行RET指令,栈顶四个字节弹出分别送CS和I
7、P,即可执行INT20H指令。COM格式文件可直接执行INT20H指令.486;方式定义DATASEGMENTUSE16;定义数据段MESGDB‘HELLO’,0DH,0AH,’$’DATAENDSCODESEGMENTUSE16;定义代码段ASSUMECS:CODE,DS:DATA,SS:STACK;说明段约定MAINPROCFAR;为什么定义成远过程?BEG:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXLAST:MOVAH,9MOVDX,OFFSETMESGIN
8、T21H;显示显示一行HELLORET;返回DOSMAINENDPCODEENDSENDBEG;汇编结束源程序清单:6.2系统功能调用DOS的4个组成部分中IBMBIO.COM和IBMDOS.COM是DOS系统的核心模块IBMBIO.COM为基本I/O设备处理程序,与BIOS一起完成数据输入和数据输出的基本操作IBMDOS.COM是磁盘文件管理程序;一片大容量的EPROM或FLASH存储器这两个模块均有若干子功能可以被用户程序调用,称为“DOS功能调用”和“BIOS功能调用”(系统功能调用)PC