资源描述:
《南京邮电大学 微机原理与接口技术 第6章2010.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.1汇编源程序的编程格式6.2系统功能调用6.3程序设计举例6.4Windows汇编语言编程初步第6章汇编语言程序设计汇编源程序有两种编程格式:EXE文件的编程格式:只能生成扩展为EXE的可执行文件;COM文件的编程格式:可以生成扩展为COM的可执行文件。COM文件的执行级别高于EXE文件,同名的BAT(批处理)文件执行级别最低。6.1源程序的编程格式EXE文件的编程格式此格式允许源程序使用多个逻辑段(包括数据段、堆栈段、代码段及其它逻辑段);在实模式下,每个逻辑段的目标块不超过64K;适合编写大型程序。.486DATASEGMENTUSE16;定
2、义数据段MESGDB‘IAMASTUDENT!’,’$’DATAENDSCODESEGMENTUSE16;定义代码段ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXLAST:MOVAH,9MOVDX,OFFSETMESGINT21HMOVAH,4CHINT21H;返回DOSCODEENDSENDBEGEXE文件的内存映象磁盘上的EXE文件包括两部分:装入模块和重定位信息DOS装载EXE文件时,根据重定位信息完成装入模块的重定位。同时,重定位信息被丢弃。DOS在同一内存块的用户程序上方(低地址处)偏移地址为00H~
3、FFH的单元处自动生成一个256字节的数据块,称为程序段前缀(PSP)。DOS自动使DS=ES=存放PSP的段基址,使CS:IP指向用户程序的启动地址INT20H数据段代码段堆栈段DS,ESCS:IPSSSP注:DOS把EXE文件调入内存后,自动给SS、SP赋初值,程序中给SS、SP赋初值的指令可省略。PSP(256字节)用户程序COM文件的编程格式汇编语言要求此格式必须符合以下规定:·源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段;·程序使用的数据,可以集中设置在代码段的开始或未尾;·在代码段偏移地址(有效地址)为100H的单元,必须是程序
4、的启动指令;·代码段目标块小于64K。·COM文件的编程格式适合于编写中小型程序。.486CODESEGMENTUSE16ASSUMECS:CODEORG100H;定位语句BEG:JMPSTARTMESGDB‘HELLO’,0DH,0AH,’$’;用户程序数据区START:MOVCX,10;设置循环次数LAST:MOVAH,9MOVDX,OFFSETMESGINT21H;显示一行HELLOLOOPLAST;循环计数MOVAH,4CHINT21H;返回DOSCODEENDSENDBEGCOM文件的内存映象磁盘上的COM文件没有重定位信息,体积比EXE文
5、件小。DOS装载COM文件时,在同一内存块的用户程序上方(低地址处)偏移地址为00H~FFH的单元处自动生成一个PSP;然后从偏移地址100H处开始存放用户程序;DOS自动使CS=DS=ES=SS=存放PSP的段基址,使IP=100H,SP=FFFEH。INT20H代码段堆栈段CS,DSES,SSIP(FFFEH)SPPSP(256字节)用户程序(64K-256)6.2系统功能调用DOS的4个组成部分中IBMBIO.COM和IBMDOS.COM是DOS系统的核心模块IBMBIO.COM为基本I/O设备处理程序,与BIOS一起完成数据输入和数据输出的基
6、本操作IBMDOS.COM是磁盘文件管理程序;一片大容量的EPROM或FLASH存储器这两个模块均有若干子功能可以被用户程序调用,称为“DOS功能调用”和“BIOS功能调用”(系统功能调用)PC-DOS的模块结构DOS—ShellDOS—KernelDOS—BIOS命令处理程序command.com——命令解释,外部命令装入等。2.DOS内核程序MSDOS.SYS——包括文件管理、磁盘管理、DOS功能调用等。该模块以系统功能调用的方式供用户使用,INT21H3.DOS基本输入输出程序模块IO.SYS——管理输入输出设备:显示器、键盘、打印机、串行通信
7、设备等的驱动,并转换为ROM—BIOS固件的设备控制程序的请求。DOS—ShellDOS—KernelDOS—BIOSDOS命令ROM—BIOS显示器卡盘控制卡串行口卡键盘接口打印机卡应用层DOS服务层ROM—BIOS服务层硬件控制层应用程序INT10HINT13HINT14HINT16HINT17HINT21H高端中断向量表系统数据区IBMBIO.COMIBMDOS.COMCOMMAND.COM低端实地址模式1MB空间键盘缓冲区显示缓冲区等用户程序通过INT21H软中断指令调用DOS系统功能,调用模式如下:MOVAH,功能号设置入口参数INT21H
8、分析出口参数功能号:代表一个不同功能的子程序DOS功能调用调用模式:MOVAH,功能号设置入口参数INT21