操作系统资源利用.ppt_第1页
操作系统资源利用.ppt_第2页
操作系统资源利用.ppt_第3页
操作系统资源利用.ppt_第4页
操作系统资源利用.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本课内容,1.软中断指令及中断返回指令 2.常用系统调用 3.键盘与显示输出控制 4.流程图画法,作业讲评,1.堆栈操作P113.2 2.查表P113.5,1.堆栈操作P113.2,1.两次进栈后的堆栈状态,FFA0:00AC FFA0:00AB FFA0:00AE FFA0:00AF FFA0:00B0,79,0F,57,80,SP,1.堆栈操作P113.2,2.一次出栈后的堆栈状态,FFA0:00AC FFA0:00AB FFA0:00AE FFA0:00AF FFA0:00B0,79,0F,57,80,SP,出栈后堆栈内容并未变化,2.查表P113.5,用查表的方法可以将复杂的运算化成快速的查表操作。完整的程序如下: data segment table db 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 data ends code segment assume cs:code,ds:data mov ax,data mov ds,ax mov cl,6 mov al,cl mov bx,offset table xlat mov ah,4ch int 21h code ends end,事先设计好表格供后面查表使用,用到bx,al,结果存放在al中。bx+al-al,2.查表P113.5,用查表的方法也会受到一些限制,如上述程序中的表格为字节表,每个表格数据最大不能超过255。用乘法可以完成同样的功能,但执行时间会长,如果多次做乘法的话,费时更长。用乘法的完整的程序如下: code segment assume cs:code mov ax,data mov ds,ax mov cl,6 mov al,cl mov bl,al mul bl mov ah,4ch int 21h code ends end,用到bl,al,结果存放在ax中。最大可达到255*255,4.5 系统功能调用,4.5.1软中断指令及中断返回指令 P.130,中断:CPU执行程序过程中,外电路随机地向CPU发出中断请求,CPU暂停当前程序,而转去执行为该中断服务的子程序,处理完后,返回被暂停的程序处继续执行,这个过程称为中断。 软中断:8086/8088 CPU在程序中允许安排一条中断指令来引起一个中断过程,实现某种服务功能,软中断服务完毕返回原中断指令处继续执行程序,这种中断叫软中断或叫内部中断。,软中断指令及中断返回指令,软中断指令:INT n ;执行类型 n 的中断服务程序 n为类型码(0255) 如: INT 20 ;结束程序执行,返回DOS 溢出中断指令:INTO ;执行溢出中断的中断服务程序 只有当OF=1时才执行溢出中断服务程序 中断返回指令:IRET ;从中断服务子程序返回,4.5.2 操作系统资源的使用,(1) DOS系统功能调用 (2) ROM BIOS中断调用 操作系统DOS中已经将一些常用功能编写为中断子程序,只要知道相关参数,用户可当做库函数来使用。,4.5.2 DOS系统功能调用 (87种) P.131,调用 :(1) 入口参数初始化 (按入口参数要求) (2) DOS功能调用子程序编号送入AH(0 57H ) (3) INT 21H (软中断类型号为21H),常用DOS功能调用(INT 21H),ROM BIOS 中断调用 (INT 08H INT 1FH),ROM BIOS 中断的调用 方法: (1) 入口参数初始化(按入口参数要求) (2) 有的要将功能号送入AH (3) INT n (n=8 1FH ),详见有关参考书.,常用DOS功能调用,INT 21H指令是系统功能调用,包含有I/O操作、设备管理、文件管理、目录管理等几类。 为方便调用,每个子程序对应有一个调用功能号。 系统功能调用中的几十个子程序已成为汇编语言程序员的重要工具,程序员不必了解所使用设备的物理特性、接口方式和内存分配,不必编写复杂的控制程序,调用它们时采用统一的格式,只需要做到: 所需的入口参数送指定单元(通常是指定的寄存器); 将子程序功能号送入AH寄存器中; 执行INT 21H指令,实现DOS功能调用。 DOS根据功能号携带入口参数转入相应的子程序执行,运行的结果由出口参数带出,一般也在某些寄存器中。 (1) 字符输入功能调用(1#) 它没有入口参数,执行1号系统功能调用时,系统等待键盘输入,当按下任何一个键时,系统先检查是否为CTRL-BREAK键,如果是则退出运行的程序,否则将键入字符的ASCII码送入AL寄存器中,并在屏幕上显示该字符,程序继续向下执行。1号系统功能调用的格式如下: MOV AH,1 INT 21H,常用DOS功能调用(续),(2) 字符输出功能调用(2#) 2号调用的功能是将DL寄存器中的字符送屏幕上输出显示。 2号调用时要求将显示字符的ASCII码(入口参数)送入DL中。 (3) 字符串输入功能调用(10#) 10号系统功能调用是将键盘上输入的字符串写到内存缓冲区中。 要求事先在内存储器中定义一个输入缓冲区,缓冲区的第一个字节单元给出该缓冲器能容纳的字符个数,第二字节单元留给系统填入实际键入的字符个数,从第三字节单元开始用来存放键入的字符串。调用时,必须使DS:DX指向该缓冲区。 执行10号功能调用时,系统等待从键盘上键入字符,键入回车表示字符串输入结束。如果实际键入的字符数不足以填满缓冲区,则剩余的字节存储单元填“0”, 如果实际键入的字符数超过定义的缓冲区容量,则超出的字符被丢弃,并且响铃告警。 (4) 字符串输出功能调用(9#) 9号系统功能调用是将指定的内存缓冲区中字符串输出到屏幕上显示或到打印机上打印。 9号功能调用要求,缓冲区首地址必须由DS:DX给出,同时字符串必须以字符“$”结束。,字符串输入与输出,下面是一个简单的人机对话程序。 DATA SEGMENT PARS DB 20 ; 定义缓冲区字节 DB ? DB 20 DUP(?) ; 10号调用的输入字符串存储缓冲区 MESG DB What is your name? ; 要显示的提问信息 DB $ DATA ENDS STACK SEGMENT PARA STACK STACK DB 100 DUP (?) TOP LABEL WORD STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START PROC FAR BEGIN: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX,字符串输入与输出(续),MOV AX,STACK MOV SS,AX MOV SP,TOP DIAP: MOV DX,OFFSET MESG MOV AH,09 ; 9号调用显示提问信息 INT 21H KEYBOD: MOV DX,OFFSET PARS MOV AH,10 INT 21H ; 等待从键盘上输入应答信息 RET ; 返回DOS操作系统 START ENDP CODE ENDS END BEGIN 执行10号系统调用时,如果从键盘输入 I am zhang 则数据段中PARS中的内容为 PARS db 20 db 10 db “I am zhang”,0dh,0,其它常用DOS功能调用(续),(5) 从异步通讯口输入单个字符(3#)调用 3号系统功能调用从异步通讯口输入一个字符并送入AL中, 无入口参数。 (6) 向异步通讯口输出单个字符(4#)调用 4号系统功能调用将DL中的字符向异步串行通信口输出。 如: MOV DL,A MOV AH,04H INT 21H (7) 返回DOS(4CH号)调用 4CH号功能调用使用的格式如下: MOV AH,4CH INT 21H 4CH号功能调用结束当前正在执行的程序,返回DOS系统。无入口参数。 (8) 日期设置(2BH号)调用 2BH号功能调用用来设置系统有效日期。调用时寄存器CX中必须有一个有效年份(19802099),DH存放月份(0112),DL中存放日期(131)。 例如需要设置的日期为2004年9月18日, 则设置日期程序段如下: MOV CX,2004H MOV DX,0918H MOV AH,2BH INT 21H,常用DOS功能调用(续),(9) 读取日期(2AH号)调用 2AH号系统功能调用用于将系统当前日期读取到CX和DX寄存器中,是2BH号调用的逆过程,无入口参数。其使用格式如下: MOV AH,2AH INT 21H 执行结果是将年号送入CX寄存器中, 月份和日期送入DX寄存器中。 (10) 时间设置 (2DH号)调用 2DH号系统功能调用设置系统时间。 入口参数:有效时间送入CX和DX寄存器,其中CH存放时(023),CL存放分(059),DH存放秒(059),DL存放百分秒(099)。 如要设置当前系统时间为16点28分39.58秒, 则其使用格式如下: MOV CX,1628H ;CX16:28 MOV DX,3958H ;DX39”58 MOV AH,2DH INT 21H 如果设置成功,则将AL寄存器清为0,否则把FFH(-1)送入AL寄存器。 (11) 读取时间(2CH号)调用 2CH系统功能调用将当前的系统时间读入CX和DX寄存器中, 是2DH调用的逆过程。无入口参数。使用格式如下: MOV AH,2CH INT 21H 执行结果是将当前时间读入CX和DX寄存器中,存放格式与设置时间格式相同。,示例:从键盘输入数字29,输出显示值与个数递减的图案 如输入5,显示: 55555 4444 333 22 1,显示控制系统调用例,NAME XS91 TITLE 键盘输入91,输出显示每行值与个数递减的图案 CODE SEGMENT ;代码段 ASSUME CS:CODE BEGIN: MOV AH,01H ;用1号DOS系统调用 INT 21H ;键入一位数字送AL且显示 CMP AL,45H ; JZ L2 ;如键入的是“E“ 则转退出本程序 CMP AL,65H ; JZ L2 ;如键入的是“e“ 则转退出本程序 CMP AL,31H ; JC BEGIN ;如键入的是“1“ 之前的字符不处理 CMP AL,3AH ; JNC BEGIN ;如键入的是“9“ 之后的字符不处理 AND AL,0FH ;是“1“到“9“间:屏蔽高四位,保留低四位 MOV BL,AL ;以输入数字值为外循环次数(行数) OR AL,30H ;高四位恢复为0011 MOV CL,AL ;输入数字的ASCII码送CL MOV AH,2 ;设2号DOS中断调用,L0: MOV DL,0DH ;输出回车 INT 21H MOV DL,0AH ;输出换行 INT 21H MOV DL,CL ;当前数字作为输出字符 MOV BH,BL ;内循环次数(每行显示个数) L1: INT 21H ;调用2号DOS中断输出一个 DEC BH JNZ L1 ;内循环未完继续 DEC CL ;数字的ASCII码减1 DEC BL ;数字值减1 JNZ L0 ;外循环未完继续 MOV DL,0DH ;输出回车 INT 21H MOV DL,0AH ;输出换行 INT 21H INT 21H ;再换一行 JMP BEGIN ;重新开始一轮的输入 L2: MOV AH,4CH ;返回DOS INT 21H CODE ENDS END BEGIN ;汇编到此结束,开始,AL=“E”或AL=“e”,AL-键盘输入单字符,结束,1,2,Y,N,程序流程图,1=AL=9,BL-AL, CL-ASCII(AL),1,Y,N,2,另起一行,3,4,BL=0?,DL-CL, BH-BL,3,Y,N,显示DL字符BH次,5,4,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论