微机原理与接口技术第6章1

上传人:ji****72 文档编号:48569485 上传时间:2018-07-17 格式:PPT 页数:99 大小:709.50KB
返回 下载 相关 举报
微机原理与接口技术第6章1_第1页
第1页 / 共99页
微机原理与接口技术第6章1_第2页
第2页 / 共99页
微机原理与接口技术第6章1_第3页
第3页 / 共99页
微机原理与接口技术第6章1_第4页
第4页 / 共99页
微机原理与接口技术第6章1_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《微机原理与接口技术第6章1》由会员分享,可在线阅读,更多相关《微机原理与接口技术第6章1(99页珍藏版)》请在金锄头文库上搜索。

1、6.1 汇编源程序的编程格式6.2 系统功能调用6.3 程序设计举例6.4 Windows 汇编语言编程初步第6章 汇编语言程序设计汇编源程序有两种编程格式:EXEEXE文件的编程格式:文件的编程格式:只能生成扩展为EXE 的可执行文件;COMCOM文件的编程格式:文件的编程格式:可以生成扩展为COM的可执行文件。COM文件的执行级别高于EXE文件,同名的BAT(批处理)文件执行级别最低。6.1 源程序的编程格式EXE文件的编程格式此格式允许源程序使用多个逻辑段(包括据段、堆栈段、代码段及其它逻辑段);在实模式下,每个逻辑段的目标块不超过64K;适合编写大型程序。.486DATA SEGMEN

2、T USE16 ;定义数据段MESG DB I AM A STUDENT!,$DATA ENDSCODE SEGMENT USE16 ;定义代码段ASSUME CS:CODE,DS:DATABEG: MOV AX,DATAMOV DS,AXLAST: MOV AH,9MOV DX,OFFSET MESGINT 21HMOV AH,4CH INT 21H ;返回DOSCODE ENDSEND BEGEXEEXE文件的内存映象文件的内存映象磁盘上的EXE文件包括两部分:装入模块和重定位信息 DOS装载EXE文件时,根据重定位信息完成装入模块的重定位。同时,重定位信息被丢弃。 DOS在同一内存块的用

3、户程序上方(低地址处)偏移地址为00HFFH的单元处自动生成一个 256字节的数据块,称为程序段前缀(PSP)。 DOS自动使DS=ES=存放PSP的段基址,使CS:IP指向用户程序的启动地址INT 20H数据段代码段堆栈段DS,ESCS:IPSSSP注:DOS把EXE文件调入 内存后,自动给SS、SP 赋初值, 程序中给SS、 SP赋初值的指令可省略 。PSP( 256字节 )用户程 序COM文件的编程格式汇编语言要求此格式必须符合以下规定汇编语言要求此格式必须符合以下规定: : 源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段; 程序使用的数据,可以集中设置在代码段的开始或未尾; 在

4、代码段偏移地址(有效地址)为100H的单元,必须是程序的启动指令; 代码段目标块小于64K。COM文件的编程格式适合于编写中小型程序。.486CODE SEGMENT USE16ASSUME CS:CODEORG 100HBEG: JMP STARTMESG DB HELLO,0DH,0AH,$ ;用户程序数据区START: MOV CX,10 ;设置循环次数LAST: MOV AH,9MOV DX,OFFSET MESGINT 21H ;显示一行HELLOLOOP LAST ;循环计数MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND BEG COM文件的内存映象磁盘上

5、的COM文件没有重定位信息,体积比EXE文件小。DOS装载COM文件时,在同一内存块的用户程序上方(低地址处)偏移地址为00HFFH的单元处自动生成一个 PSP;然后从偏移地址100H处开始存放用户程序;DOS自动使CS=DS=ES=SS=存放PSP的段基址,使IP=100H,SP=FFFEH。INT 20H代码段堆栈段CS,DS ES,SSIP(FFFEH) SPPSP( 256字节 )用户程序 (64K-256)返回DOS的其它方法EXE格式文件可以借用PSP首单元的 INT 20H 返回DOS 执行完用户程序后,使CS:IP指向PSP的首单元。 DOS在装载EXE文件时将DS指向该单元,

6、故可采取措施: 把执行程序放在一个远过程中; 用户程序在给SS、SP赋初值后,DS赋值前,用三条指令把 PSP的首单元的物理地址(DS:0000H)压入堆栈,即: PUSH DSMOV AX,0PUSH AX 返回DOS时,执行RET指令,栈顶四个字节弹出分别送CS和 IP,即可执行INT 20H指令。COM格式文件可直接执行INT 20H 指令.486 ;方式定义DATA SEGMENT USE16 ;定义数据段MESG DB HELLO,0DH,0AH,$DATA ENDSCODE SEGMENT USE16 ;定义代码段ASSUME CS:CODE,DS:DATA,SS:STACK ;说

7、明段约定 MAIN PROC FAR ;为什么定义成远过程?BEG: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLAST: MOV AH,9MOV DX,OFFSET MESGINT 21H ;显示显示一行HELLORET ;返回DOSMAIN ENDPCODE ENDSEND BEG ;汇编结束源程序清单:6.2 系统功能调用DOS的4个组成部分中IBMBIO.COM和IBMDOS.COM是DOS系统的核心模块IBMBIO.COM为基本I/O设备处理程序,与BIOS一起完成数据输入和数据输出的基本操作 IBMDOS.COM是磁盘文件管理程序;一片大容

8、量的EPROM或FLASH存储器这两个模块均有若干子功能可以被用户程序调用,称为 “DOS功能调用”和“BIOS功能调用”( (系统功能调用系统功能调用) )PC-DOS的模块结构DOSShellDOSKernelDOSBIOS1. 命令处理程序 命令解释,外部命令装入等。2. DOS 内核程序 MSDOS. SYS包括文件管理、磁盘管理、DOS功能调用等。该模块以系统功能调用的方式供用户使用, INT 21H 3. DOS基本输入输出程序模块 IO.SYS管理输入输出设备(显示器、键盘、打印机、串行通信设备等) 的驱动,并转换为ROMBIOS固件的设备控制程序的请求。DOSShellDOSK

9、ernelDOSBIOSDOS命令ROMBIOS显 示 器 卡盘 控 制 卡串 行 口 卡键 盘 接 口打 印 机 卡应用层DOS 服务层ROMBIOS服务层 硬件控制层应用程序INT 10HINT 10HINT 13HINT 13HINT 14HINT 14HINT 16HINT 16H INT 17HINT 17HINT 21HINT 21H高端中断向量表系统数据区IBMBIO.COMIBMDOS.CO MCOMMAND.COM低端实地 址模 式 1MB 空间键盘缓冲区 显示缓冲区等用户程序通过INT 21H软中断指令调用DOS系统功能,调用模式 如下:MOV AH,功能号设置入口参数IN

10、T 21H分析出口参数功能号: 代表一个不同功能的子程序DOS功能调用调用模式:MOV AH,功能号设置入口参数INT 21H分析出口参数DOS功能调用AH=?执行1#子程序执行2#子程序IRET21H型中断服务程序=1=2【功能号01H】 等待键入一个字符,有回显,响应Ctrl_C。入口参数:无。出口参数:AL按键的ASCII码。若AL0,表明按键是功能键 ,光标键,需再次调用本功能,才能返回按键的扩展码。 调用方式:MOVAH,1INT 21HDOS功能调用【功能号02H】 显示一个字符,响应Ctrl_C。入口参数:DL待显字符的ASCII码。出口参数:无。本功能在屏幕的当前位置显示一个字

11、符,光标 右移一格,如果是在一行末尾显示字符,则光标返回下一行的开始格。如果是在屏幕的右下角显示字符,光标返回时屏幕要上滚一行。注意:该功能要破坏AL寄存器的内容。DOS功能调用Eg:MOVDL , AMOVAH , 2INT21H屏幕上显示一个字符A【功能号07H】 等待键入一个字符,无回显,不响应Ctrl_C。入口参数:无。出口参数:AL按键的ASCII码,若AL0,需再次调用该项功 能才能在AL中得到按键的扩展码。【功能号08H】 等待键入一个字符,无回显,响应Ctrl_C。入口参数:无。出口参数:AL按键的ASCII码,若AL0,需再次调用该项功 能才能在AL中得到按键的扩展码。【功能

12、号09H】 显示字符串,响应Ctrl_C。入口参数:DS:DX字符串首地址,字符串必须以$(即ASCII 码24H)为结束标志出口参数:无。该项功能从屏幕当前位置开始,显示字符串,遇到结束标志$时 停止,$字符并不显示注意:9号功能破坏AL寄存器的内容DOS功能调用Eg:在屏幕上显示I AM A STUDENT!分析:将I AM A STUDENT!定义在数据段,并在!后加一个字符$,利用9号DOS功能调用,即可完成显示I AM A STUDENT!DOS功能调用.486DATA SEGMENT USE16 ;定义数据段MESG DB I AM A STUDENT!,$DATA ENDSCOD

13、E SEGMENT USE16 ;定义代码段ASSUME CS:CODE,DS:DATABEG: MOV AX,DATAMOV DS,AXLAST: MOV AH,9MOV DX,OFFSET MESGINT 21HMOV AH,4CH INT 21H ;返回DOSCODE ENDSEND BEG源程序清单:【功能号0AH】 等待键入一串字符送用户程序数据缓冲区。入口参数:DS:DX指向放键入字符的缓冲区缓冲区定义形式规定为:缓冲区能容纳的字符个数实际接收的字符个数接收的字符1DOS功能调用程序员预置可容纳的字符个数(包括回车键)0AH功能写入实际接收的字符个数(不包括回车键)数据缓冲区 BU

14、F+0+1+2.+n键入字符串的 实际存储区域100EG: BUF DB 100DB ?DB 100 DUP(?)DOS功能调用出口参数:存放于缓冲区的字符串,以回车键结尾调用方式:MOV AH,0AH INT 21H注意:缓冲区定义的第二个字节由系统设置,其余由用户定义;若输入的字节数少于定义的字节数,缓冲区其余字节补零;若输入的字节数大于定义的字节数,后来输入的字符丢弃且响铃警告。DOS功能调用例: 人机会话程序 Li mei?(Y/N)What is your name? 1.会话内容及设计思路Li nei ;前者是程序给出的询问信息,后者是用户键入的回答N ;程序复制的姓名和回答提示 Li mei ;再次问答Li nei?(Y/N) What is your name? Y问题

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号