南邮微机原理课件第6章.ppt
《南邮微机原理课件第6章.ppt》由会员分享,可在线阅读,更多相关《南邮微机原理课件第6章.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6.1 6.1 汇编源程序的编程格式汇编源程序的编程格式6.2 6.2 系统功能调用系统功能调用6.3 6.3 程序设计举例程序设计举例6.4 Windows 6.4 Windows 汇编语言编程初步汇编语言编程初步第第6 6章章 汇编语言程序设计汇编语言程序设计汇编源程序有两种编程格式汇编源程序有两种编程格式:EXEEXEEXEEXE文件的编程格式:文件的编程格式:文件的编程格式:文件的编程格式:只能生成扩展为只能生成扩展为EXEEXE 的可执行文件;的可执行文件;COMCOMCOMCOM文件的编程格式:文件的编程格式:文件的编程格式:文件的编程格式:可以生成扩展为可以生成扩展为COMCOM
2、 的可执行文件。的可执行文件。COMCOM文件的执行级别高于文件的执行级别高于EXEEXE文件文件,同名的同名的BAT(BAT(批处理批处理)文件文件执行级别最低。执行级别最低。6.1源程序的编程格式源程序的编程格式EXEEXE文件的编程格式文件的编程格式 此格式允许源程序使用多个逻辑段(包括据段、堆栈段、此格式允许源程序使用多个逻辑段(包括据段、堆栈段、代码段及其它逻辑段);代码段及其它逻辑段);在实模式下在实模式下,每个逻辑段的目标块不超过每个逻辑段的目标块不超过64K64K;适合编写大型程序。适合编写大型程序。.486.486 DATA SEGMENT USE16 DATA SEGMEN
3、T USE16 ;定义数据段;定义数据段 MESG DB MESG DB I AM A STUDENT!I AM A STUDENT!,$DATA ENDS DATA ENDS CODE SEGMENT USE16 CODE SEGMENT USE16 ;定义代码段定义代码段 ASSUME CS:CODE,DS:DATAASSUME CS:CODE,DS:DATA BEG:MOV AX,DATABEG:MOV AX,DATA MOV DS,AX MOV DS,AX LAST:MOV AH,9 LAST:MOV AH,9 MOV DX,OFFSET MESG MOV DX,OFFSET MESG
4、 INT 21H INT 21H MOV MOV AH,4CH AH,4CH INT INT 21H 21H ;返回返回DOSDOS CODE ENDSCODE ENDS END END BEG BEGEXEEXE文件的内存映象文件的内存映象文件的内存映象文件的内存映象磁盘上的磁盘上的EXE文件包括两部分:文件包括两部分:装入模块和重定位信息装入模块和重定位信息DOS装载装载EXE文件时,根据重定位信息完成装入模块的重定文件时,根据重定位信息完成装入模块的重定位。同时,重定位信息被丢弃。位。同时,重定位信息被丢弃。DOS在同一内存块的用户程序上方(低地址处)偏移地址为在同一内存块的用户程序上方
5、(低地址处)偏移地址为00HFFH的单元处自动生成一个的单元处自动生成一个256字节的数据块,称为程字节的数据块,称为程序段前缀(序段前缀(PSP)。)。DOS自动使自动使DS=ES=存放存放PSP的段基址,使的段基址,使CS:IP指向用户程指向用户程序的启动地址序的启动地址INT 20H数据段数据段代码段代码段堆栈段堆栈段DS,ESCS:IPSSSP注注:DOSDOS把把EXEEXE文件调入文件调入内存后内存后,自动给自动给SSSS、SPSP赋初值赋初值,程序中给程序中给SSSS、SPSP赋初值的指令可省略。赋初值的指令可省略。PSP(256字节)字节)用户程用户程序序COMCOM文件的编程
6、格式文件的编程格式 汇编语言要求此格式必须符合以下规定汇编语言要求此格式必须符合以下规定汇编语言要求此格式必须符合以下规定汇编语言要求此格式必须符合以下规定:源程序只允许使用一个逻辑段源程序只允许使用一个逻辑段,即代码段即代码段,不允许设置堆栈不允许设置堆栈段段;程序使用的数据程序使用的数据,可以集中设置在代码段的开始或未尾可以集中设置在代码段的开始或未尾;在代码段偏移地址在代码段偏移地址(有效地址有效地址)为为100H100H的单元的单元,必须是程序必须是程序的启动指令的启动指令;代码段目标块小于代码段目标块小于64K64K。COMCOM文件的编程格式适合于编写中小型程序。文件的编程格式适合
7、于编写中小型程序。.486.486 CODE CODE SEGMENTSEGMENT USE16 USE16 ASSUMEASSUME CS:CODE CS:CODE ORGORG 100H 100H BEG:BEG:JMPJMP STARTSTART MESG DB MESG DB HELLOHELLO,0DH,0AH,0DH,0AH,$;用户程序数据区用户程序数据区 START:START:MOV CX,10 ;MOV CX,10 ;设置循环次数设置循环次数 LAST:MOV AH,9LAST:MOV AH,9 MOV DX,OFFSET MESG MOV DX,OFFSET MESG I
8、NT 21H ;INT 21H ;显示一行显示一行HELLOHELLO LOOP LAST ;LOOP LAST ;循环计数循环计数 MOV AH,4CHMOV AH,4CH INT 21H ;INT 21H ;返回返回DOSDOS CODE ENDSCODE ENDS END BEG END BEG COM文件的内存映象文件的内存映象 磁盘上的磁盘上的COM文件没有重定位信息,体积比文件没有重定位信息,体积比EXE文件小。文件小。DOS装载装载COM文件时,在同一内存块的用户程序上方(低地址文件时,在同一内存块的用户程序上方(低地址处)偏移地址为处)偏移地址为00HFFH的单元处自动生成一个
9、的单元处自动生成一个PSP;然后从偏移地址然后从偏移地址100H处开始存放用户程序;处开始存放用户程序;DOS自动使自动使CS=DS=ES=SS=存放存放PSP的段基址,使的段基址,使IP=100H,SP=FFFEH。INT20H代码段代码段堆栈段堆栈段CS,DSES,SSIP(FFFEH)SPPSP(256字节)字节)用户程序用户程序(64K-256)返回返回DOS的其它方法的其它方法EXE格式文件可以借用格式文件可以借用PSP首单元的首单元的INT20H返回返回DOS执行完用户程序后,使执行完用户程序后,使CS:IP指向指向PSP的首单元。的首单元。DOS在装载在装载EXE文件时将文件时将
10、DS指向该单元,故可采取措施:指向该单元,故可采取措施:把执行程序放在一个远过程中;把执行程序放在一个远过程中;用户程序在给用户程序在给SS、SP赋初值后,赋初值后,DS赋值前,用三条指令把赋值前,用三条指令把PSP的首单元的物理地址(的首单元的物理地址(DS:0000H)压入堆栈,即:压入堆栈,即:PUSHDSMOVAX,0PUSHAX返回返回DOS时,执行时,执行RET指令,栈顶四个字节弹出分别送指令,栈顶四个字节弹出分别送CS和和IP,即可执行即可执行INT20H指令。指令。COM格式文件可直接执行格式文件可直接执行INT20H指令指令 .486 .486 ;方式定义;方式定义 DATA
11、 SEGMENT USE16 DATA SEGMENT USE16 ;定义数据段定义数据段 MESG DB MESG DB HELLOHELLO,0DH,0AH,0DH,0AH,$DATA ENDS DATA ENDS CODE SEGMENT USE16 CODE SEGMENT USE16 ;定义代码段定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK ASSUME CS:CODE,DS:DATA,SS:STACK;说明段约定说明段约定 MAIN PROCMAIN PROC FAR FAR ;为什么定义成远过程?为什么定义成远过程?BEG:BEG:PUSHPUSH
12、DS DS MOV MOV AX AX,0 0 PUSH PUSH AX AX MOV AX,DATA MOV AX,DATA MOV DS,AX MOV DS,AX LAST:MOV AH,9 LAST:MOV AH,9 MOV DX,OFFSET MESG MOV DX,OFFSET MESG INT 21H INT 21H ;显示显示一行显示显示一行HELLOHELLO RET RET ;返回返回DOSDOS MAIN ENDPMAIN ENDP CODE ENDSCODE ENDS END END BEG BEG ;汇编结束汇编结束源程序清单:源程序清单:6.2系统功能调用系统功能调用
13、 DOSDOS的的4 4个组成部分中个组成部分中IBMBIO.COMIBMBIO.COM和和IBMDOS.COMIBMDOS.COM是是DOSDOS系统系统的核心模块的核心模块 IBMBIO.COMIBMBIO.COM为基本为基本I/OI/O设备处理程序设备处理程序,与与BIOSBIOS一起完成数据一起完成数据输入和数据输出的基本操作输入和数据输出的基本操作 IBMDOS.COMIBMDOS.COM是磁盘文件管理程序;是磁盘文件管理程序;一片大容量的一片大容量的EPROM或或FLASH存储器存储器这两个模块均有若干子功能可以被用户程序调用,称为这两个模块均有若干子功能可以被用户程序调用,称为“
14、DOS功能调用功能调用”和和“BIOS功能调用功能调用”(系统功能调用系统功能调用系统功能调用系统功能调用)PC-DOS的模块结构的模块结构DOSShellDOSKernelDOSBIOS1.命令处理程序命令处理程序命令解释,外部命令装入等。命令解释,外部命令装入等。2.DOS内核程序内核程序MSDOS.SYS包括文件管理、磁盘管理、包括文件管理、磁盘管理、DOS功能调用等。功能调用等。该模块以系统功能调用的方式供用户使用,该模块以系统功能调用的方式供用户使用,INT21H3.DOS基本输入输出程序模块基本输入输出程序模块IO.SYS管理输入输出设备管理输入输出设备(显示器、键盘、打印机、串行
15、通信设备等)(显示器、键盘、打印机、串行通信设备等)的驱动,并转换为的驱动,并转换为ROMBIOS固件的设备固件的设备控制程序的请求。控制程序的请求。DOSShellDOSKernelDOSBIOSDOS命令命令ROMBIOS显显示示器器卡卡盘盘控控制制卡卡串串行行口口卡卡键键盘盘接接口口打打印印机机卡卡应用层应用层DOS服务层服务层ROMBIOS服务层服务层硬件控制层硬件控制层应用程序应用程序INT10HINT10HINT13HINT13HINT14HINT14HINT16HINT16HINT17HINT17HINT21HINT21H高端高端中断向量表中断向量表系统数据区系统数据区IBMBI
16、O.COMIBMDOS.COMCOMMAND.COM低端低端实地实地址模址模式式1MB空间空间键盘缓冲区键盘缓冲区显示缓冲区等显示缓冲区等 用户程序通过用户程序通过INT 21HINT 21H软中断指令调用软中断指令调用DOSDOS系统功能系统功能,调用模式调用模式如下如下:MOV MOV AH,AH,功能号功能号 设置入口参数设置入口参数 INTINT 21H 21H 分析出口参数分析出口参数 功能号:功能号:代表一个不同功能的子程序代表一个不同功能的子程序DOSDOS功能调用功能调用调用模式:调用模式:MOVAH,功能号功能号 设置入口参数设置入口参数 INT21H 分析出口参数分析出口参
17、数DOSDOS功能调用功能调用AH=?执行执行1#子程序子程序执行执行2#子程序子程序IRET21H型中断服务程序型中断服务程序=1=2【功能号功能号01H01H】等待键入一个字符等待键入一个字符,有回显有回显,响应响应Ctrl_CCtrl_C。入口参数入口参数:无。无。出口参数出口参数:ALAL按键的按键的ASCIIASCII码。若码。若ALAL0,0,表明按键是功能键表明按键是功能键,光标键光标键,需再次调用本功能需再次调用本功能,才能返回按键的扩展码。才能返回按键的扩展码。调用方式:调用方式:MOVAH,1INT 21HDOSDOS功能调用功能调用【功能号功能号02H02H】显示一个字符
18、显示一个字符,响应响应Ctrl_CCtrl_C。入口参数入口参数:DLDL待显字符的待显字符的ASCIIASCII码。码。出口参数出口参数:无。无。本功能在屏幕的当前位置显示一个字符本功能在屏幕的当前位置显示一个字符,光标光标 右移一格右移一格,如果是在一行末尾显示字符如果是在一行末尾显示字符,则光标则光标 返回下一行的开始格。如果是在屏幕的右下角返回下一行的开始格。如果是在屏幕的右下角 显示字符显示字符,光标返回时屏幕要上滚一行。光标返回时屏幕要上滚一行。注意:注意:该功能要破坏该功能要破坏ALAL寄存器的内容寄存器的内容。DOSDOS功能调用功能调用 Eg:MOVDL,AMOVAH,2IN
19、T21H屏幕上显示一个字符屏幕上显示一个字符A【功能号功能号07H07H】等待键入一个字符等待键入一个字符,无回显无回显,不响应不响应Ctrl_CCtrl_C。入口参数入口参数:无。无。出口参数出口参数:ALAL按键的按键的ASCIIASCII码码,若若ALAL0,0,需再次调用该项功需再次调用该项功能才能在能才能在ALAL中得到按键的扩展码。中得到按键的扩展码。【功能号功能号08H08H】等待键入一个字符等待键入一个字符,无回显无回显,响应响应Ctrl_CCtrl_C。入口参数入口参数:无。无。出口参数出口参数:ALAL按键的按键的ASCIIASCII码码,若若ALAL0,0,需再次调用该项
20、功需再次调用该项功能才能在能才能在ALAL中得到按键的扩展码。中得到按键的扩展码。【功能号功能号09H】显示字符串显示字符串,响应响应Ctrl_C。入口参数入口参数:DS:DX字符串首地址字符串首地址,字符串必须以字符串必须以$(即即ASCII码码24H)为结束标志为结束标志出口参数出口参数:无。无。该项功能从屏幕当前位置开始该项功能从屏幕当前位置开始,显示字符串显示字符串,遇到结束标志遇到结束标志$时停止时停止,$字符并不显示字符并不显示注意:注意:9号功能破坏号功能破坏AL寄存器的内容寄存器的内容DOSDOS功能调用功能调用Eg:在屏幕上显示在屏幕上显示IAMASTUDENT!分析:分析:
21、将将IAMASTUDENT!定义在数据段,并在定义在数据段,并在!后加一个字符后加一个字符$,利用,利用9号号DOS功能调用,即可完成显功能调用,即可完成显示示IAMASTUDENT!DOSDOS功能调用功能调用 .486.486 DATA SEGMENT USE16 DATA SEGMENT USE16 ;定义数据段;定义数据段 MESG DB MESG DB I AM A STUDENT!I AM A STUDENT!,$DATA ENDS DATA ENDS CODE SEGMENT USE16 CODE SEGMENT USE16 ;定义代码段定义代码段 ASSUME CS:CODE,
22、DS:DATAASSUME CS:CODE,DS:DATA BEG:MOV AX,DATABEG:MOV AX,DATA MOV DS,AX MOV DS,AX LAST:MOV AH,9 LAST:MOV AH,9 MOV DX,OFFSET MESG MOV DX,OFFSET MESG INT 21H INT 21H MOV MOV AH,4CH AH,4CH INT INT 21H 21H ;返回返回DOSDOS CODE ENDSCODE ENDS END END BEG BEG源程序清单:源程序清单:【功能号功能号0AH0AH】等待键入一串字符送用户程序数据缓冲区。等待键入一串字符
23、送用户程序数据缓冲区。入口参数:入口参数:DS:DXDS:DX指向放键入字符的缓冲区指向放键入字符的缓冲区 缓冲区定义形式规定为:缓冲区定义形式规定为:缓冲区能容纳的字符个数缓冲区能容纳的字符个数实际接收的字符个数实际接收的字符个数接收的字符接收的字符1DOSDOS功能调用功能调用程序员预置可容纳的字符个数程序员预置可容纳的字符个数(包括回车键包括回车键)0AH功能写入功能写入实际接收实际接收的字符个数的字符个数(不包括回车键不包括回车键)数数据据缓缓冲冲区区BUF+0+1+2.+n键入字符串的键入字符串的实际存储区域实际存储区域100EG:BUF DB100 DB?DB100DUP(?)DO
24、SDOS功能调用功能调用 出口参数:出口参数:存放于缓冲区的字符串,以回车键结尾存放于缓冲区的字符串,以回车键结尾调用方式调用方式:MOVAH,0AHINT21H注意:注意:缓冲区定义的第二个字节由系统设置,其余缓冲区定义的第二个字节由系统设置,其余由用户定义;由用户定义;若输入的字节数少于定义的字节数,缓冲区若输入的字节数少于定义的字节数,缓冲区其余字节补零;其余字节补零;若输入的字节数大于定义的字节数,后来输入若输入的字节数大于定义的字节数,后来输入的字符丢弃且响铃警告。的字符丢弃且响铃警告。DOSDOS功能调用功能调用 例例:人机会话程序人机会话程序Limei?(Y/N)Whatisyo
25、urname?1.会话内容及设计思路会话内容及设计思路Linei;前者是程序给出的询问信息前者是程序给出的询问信息,后者是用户键入的回答后者是用户键入的回答N;程序复制的姓名和回答提示程序复制的姓名和回答提示Limei;再次问答再次问答Linei?(Y/N)Whatisyourname?Y问题提出问题提出:如何设置程序运行所需的数据?方法如下:如何设置程序运行所需的数据?方法如下:数据设置在程序的数据段数据设置在程序的数据段程序运行时通过人机会话临时键入程序运行时通过人机会话临时键入程序装入时通过命令行参数给出程序装入时通过命令行参数给出 本例学习前两种方法本例学习前两种方法,并以此学习并以此
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课件
限制150内