[高等教育]第9章输入输出程序设计.pptVIP

  • 3
  • 0
  • 约1.69万字
  • 约 88页
  • 2018-02-15 发布于浙江
  • 举报
[高等教育]第9章输入输出程序设计

计数器清0 读状态端口 Ready ? 送数据到数据端口 送先高后低的STB信号 打印完? 计数器加1,取下一数据 N Y Y N 结束 图9.3 查询方式控制打印机 【例9.3】控制打印机以查询方式工作,打印26个英文字母,共打印30行。 【解】 sta SEGMENT STACK DB 1024 DUP(0) sta ENDS data SEGMENT print DB abcdefghijklmnopqrstuvwxyz,0DH,0AH data ENDS code SEGMENT ASSUME CS:code,SS:sta,DS:data init PROC NEAR ;打印机初始化程序 MOV DX,37AH MOV AL,08H OUT DX,AL MOV CX,1000 init1: LOOP init1 ;延迟,维持初始化信号一段时间 MOV AL,0CH OUT DX,AL ;结束初始化,保持联机 RET init ENDP start: MOV AX,data MOV DS,AX MOV CX,30 ;30行 again: LEA BX,print ;待打印字符串首地址存放于BX中 next: MOV DX,379H wait: IN AL,DX TEST AL,80H JZ wait ;打印机忙,转去再读状态端口 DEC DX ;数据端口号 MOV AL,[BX] OUT DX,AL ;送数据到数据端口暂存 MOV DX,37AH MOV AL,0DH OUT DX,AL ;置STB信号为1 DEC AL OUT DX,AL ;置STB信号为0 CMP BYTE PTR [BX],0AH JZ newline INC BX JMP next newline: LOOP again MOV AX,4C00H INT 21H code ENDS END start 9.3 中断方式输入输出 把例9.3的程序拿到计算机上去执行,可以发现从键盘上发出程序执行命令后,光标会停在命令的下一行闪烁,并且打印机开始工作,直到打印机打印完所有内容后才会出现系统提示符。也就是说,在打印期间,系统是不能做其它事情的。 分析一下例9.3的程序可以发现,它是让高速的CPU去适应低速的打印机,让CPU反复不停地查问打印机的状态,直到打印机准备好。由于两者的速度差很大,很可能会出现CPU查问成千上万次以后才能等到打印机准备好的信号,送出1个字节的数据。显然,这种数据传递方式的效率是极低的。 设想让CPU把反复查问的时间利用起来去做别的事情,而让打印机在准备好接收一个数据时就向CPU发出一个信号。当CPU接到这个信号时,暂

文档评论(0)

1亿VIP精品文档

相关文档