资源预览内容
第1页 / 共68页
第2页 / 共68页
第3页 / 共68页
第4页 / 共68页
第5页 / 共68页
第6页 / 共68页
第7页 / 共68页
第8页 / 共68页
第9页 / 共68页
第10页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
输入输入/ /输出和中断输出和中断本章结构本章结构7.2数据的传送方式7.1输入/输出的基本概念7.3中断7.4DOS中断和BIOS中断7.1输入输入/输出的基本概念输出的基本概念7.1.1I/O端口地址端口地址7.1.2I/O指令指令7.1输入输入/输出的基本概念输出的基本概念7.1.1I/O端口地址端口地址CPU和外设CPUMEMI/O设备设备总线总线I/O接口接口7.1输入输入/输出的基本概念输出的基本概念7.1.2I/O指令指令1)输入指令ININAL/AX,PortNo/DX2)输出指令OUTOUTPortNo/DX,AL/AXI/O指令7.2数据的传送方式数据的传送方式7.2.1程序方式程序方式7.2.2中断方式中断方式7.2.3DMA方式方式7.2数据的传送方式数据的传送方式7.2.1程序方式程序方式nI/O指令指令是主机与外设进行通信的最基是主机与外设进行通信的最基本途径。本途径。DOS功能调用和功能调用和BIOS例行程例行程序中的输入序中的输入/ /输出功能也是由输出功能也是由IN和和OUT指令完成的。指令完成的。7.2数据的传送方式数据的传送方式7.2.1程序方式程序方式例:循环测试某状态寄存器的第2位是否为1AGAIN:INAL,STATUS_PORTTESTAL,00000100BJZAGAINMOVAL,DATAOUTDATA_PORT,AL读读I/O状态状态准备好?准备好?传送数据传送数据NYLOGO123DEV1:INAL,STAT1TESTAL,STAT1_BITJZDEV2CALLFARPTRPROC17.2.1程序方式程序方式DEV2:INAL,STAT2TESTAL,STAT2_BITJZDEV3CALLFARPTRPROC2DEV3:INAL,STAT3TESTAL,STAT3_BITJZDEV1CALLFARPTRPROC3n优:程序安排或修改设备的优先次序缺:查询等待浪费CPU大量有效时间轮流查询几种轮流查询几种I/O设备:设备:7.2数据的传送方式数据的传送方式7.2.1程序方式程序方式例:例:Sound程序程序2.model tiny.code.startupcall speaker_onmov ah, 1int 21hcall speaker_off.exit 07.2数据的传送方式数据的传送方式7.2.1程序方式程序方式例:例:Sound程序程序2speaker_on proc push ax in al, 61h or al, 3 out 61h, al pop ax retspeaker_on endpspeaker_off proc push ax in al, 61h and al, 0fch out 61h, al pop ax retspeaker_off endpend7.2数据的传送方式数据的传送方式7.2.1程序方式程序方式print proc nearprint proc near push ax push ax push dx push dx mov dx, 378h mov dx, 378h ; ; 数据寄存器数据寄存器 out dx, al out dx, al mov dx, 379h mov dx, 379h ; ; 状态寄存器状态寄存器again: in al, dxagain: in al, dx test al, 80h ; test al, 80h ; (dx)7 7 = busy je again ; =0, je again ; =0,打印机忙打印机忙 mov dx, 37ah mov dx, 37ah ; ; 控制寄存器控制寄存器 mov al, 0dhmov al, 0dh out dx, al out dx, al ; 送选通信号送选通信号 jmp $+2jmp $+2 ; ; 展宽选通信号展宽选通信号 mov al, 0chmov al, 0ch out dx, al out dx, al pop dx pop dx pop ax pop ax ret retprint endpprint endp00001101选通位自动换行初始化选择位中断位37AH7.2数据的传送方式数据的传送方式7.2.3DMA方式方式完整DMA数据传送过程步骤123DMA控制器接受I/O接口的DMS请求,向CPU发出总线请求信号HOLD。当CPU发出总线回答信号HLDA将总线让出后,DMA接管对总线的控制,进入DMA方式。DMA控制器通知I/O接口开始DMA数据传送。CPU对DMA控制器初始化,对I/O接口发出操作命令,I/O接口提出DMA请求。4DMA控制器发出读写命令,直接控制内存与I/O进行批量数据的快递传递。如字计数器为0,则停止数据传送,向CPU发出中断请求,DMA控制器释放总线控制权,并向I/O接口发出结果信号,DMA数据传送过程结束。7.3中中断断7.3.2IBM-PC的中断源及其优先级的中断源及其优先级7.3.5外同步指令和空操作指令外同步指令和空操作指令7.3.3中断向量表中断向量表7.3.6中断和子程序的比较中断和子程序的比较7.3.4软中断及中断指令软中断及中断指令7.3.1中断的概念中断的概念7.3中中断断7.3.1中断的概念中断的概念外中断外中断(硬中断硬中断):外外设设的的 I/O 请请求求 可屏蔽中断可屏蔽中断电电源源掉掉电电/奇奇偶偶错错非屏蔽中断非屏蔽中断中断源:中断源:引起中断的事件引起中断的事件内中断内中断(软中断软中断):INT指指令令/CPU错错(除除法错、溢出)法错、溢出)/为调试程序设置的中断为调试程序设置的中断7.3中中断断7.3.2IBM-PC的中断源及其优先级的中断源及其优先级中断源分为两大类中断源分为两大类n外部中断n内部中断7.3中中断断7.3.2IBM-PC的中断源及其优先级的中断源及其优先级80x86中断源:中断源:非屏蔽中断请求非屏蔽中断请求中断逻辑中断逻辑INTnINTO除法错除法错单步单步n401CPU2NMI8259A可可编编程程中中断断控控制制器器(PIC)IR0系统定时器系统定时器IR1键盘键盘IR2彩色彩色/图形接口图形接口IR3保留保留IR4串行通讯口串行通讯口IR5保留保留IR6软盘软盘IR7打印机打印机INTR08090A0B0C0D0E0F7.3中中断断7.3.2IBM-PC的中断源及其优先级的中断源及其优先级中断的条件:中断的条件:设置设置CPU中断允许位:中断允许位:FLAGS中的中的IF位位=1允许中断允许中断(STI)=0禁止中断禁止中断(CLI)设置中断屏蔽位:设置中断屏蔽位: 中中断断屏屏蔽蔽寄寄存存器器的的中中断断屏屏蔽蔽位位=0允允许许I/O设设备备请请求中断求中断=1禁禁止止I/O设设备备请请求中断求中断7.3中中断断7.3.2IBM-PC的中断源及其优先级的中断源及其优先级76543210定定时时器器键键盘盘打打印印机机中断屏蔽寄存器中断屏蔽寄存器21H76543210中断命令寄存器中断命令寄存器20HEOIMOVAL,20HOUT20H,AL8259A7.3中中段段7.3.2IBM-PC的中断源及其优先级的中断源及其优先级123(2)保护现场:FLAGS、CS、IP入栈(1)取中断类型:CPU type N4CPU中断过程5(3)IF=0, TF=0(4)取中断向量:(4N)IP(4N2)CS(5)转中断处理程序7.3中中断断7.3.3中断向量表中断向量表中断向量表中断向量表类型类型0的的(IP)类型类型0的的(CS)类型类型1的的(IP)类型类型1的的(CS)类型类型N的的(IP)类型类型N的的(CS)类型类型255的的(IP)类型类型255的的(CS)00000000044*N003FC中断向量中断向量中断处理程序的入口中断处理程序的入口地址(段址)地址(段址):(偏址)(偏址)用户可利用保留的中断类型号用户可利用保留的中断类型号扩充自己需要的中断功能。扩充自己需要的中断功能。7.3中中断断7.3.4软中断及中断指令软中断及中断指令例例:为中断类型为中断类型N设置中断向量设置中断向量 MOV AX, 0 MOV AX, 0 MOV ES, AX MOV ES, AX MOV BX, N*4 MOV BX, N*4 MOV AX, OFFSET INTHAND MOV AX, OFFSET INTHAND MOV ES: WORD PTRBX, AX MOV ES: WORD PTRBX, AX ;偏移地址(N*4) MOV AX, SEG INTHAND MOV AX, SEG INTHAND MOV ES: WORD PTRBX+2,AX MOV ES: WORD PTRBX+2,AX ;段地址(N*4+2) INTHAND: INTHAND: ;中断处理程序 IRET IRET7.3中中断断7.3.5外同步指令和空操作指令外同步指令和空操作指令例例:编写一个中断处理程序,要求在主程序运行期间,编写一个中断处理程序,要求在主程序运行期间,每隔每隔10秒响铃一次,同时显示秒响铃一次,同时显示bell定时器定时器 中断中断18.218.2次次/SEC/SEC; INT_TIMER; INT_TIMERINT 1CHINT 1CH IRETIRETINT_1CH PROCINT_1CH PROC IRETIRET INT_ICH ENDPINT_ICH ENDPRING PROCRING PROC1.1.计数计数182(10182(10秒秒) )2.2.显示字符串显示字符串 IRETIRETRING ENDPRING ENDP7.3中中断断7.3.5外同步指令和空操作指令外同步指令和空操作指令.modelsmall.stack.datacntdw1mesdbbell,0ah,0dh,$.codemainprocfarstart:movax,datamovds,axmov al, 1chmov ah, 35hint 21hpush espush bxpush dsmov dx, offset ringringmov ax, seg ringringmov ds, axmov al, 1chmov ah, 25hint 21hpop dsin al, 21hand al, 11111110bout 21h, alsti7.3中中断断7.3.5外同步指令和空操作指令外同步指令和空操作指令movdi,30000dly:movsi,60000dly1:decsijnzdly1decdijnzdly;主程序popdxpopdsmoval,1chmovah,25hint21hmovax,4c00hint21hmainendp7.3中中断断7.3.5外同步指令和空操作指令外同步指令和空操作指令ringprocnear;保存寄存器保存寄存器movax,datamovds,axsti;开中断开中断deccntjnzexitmovdx,offsetmesmovah,09int21hcallsoundmovcnt,182exit:cli;关中断关中断;恢复寄存器恢复寄存器iretringendpendstart7.3中中断断7.3.6中断和子程序的比较中断和子程序的比较中断程序的编写步骤:中断程序的编写步骤:主程序:主程序:n设置中断向设置中断向量量n设置设置CPU的的中断允许位中断允许位IFn设置设备的设置设备的中断屏蔽位中断屏蔽位中断处理子程序:中断处理子程序:n保存寄存器内容保存寄存器内容n如允许中断嵌套,则开中断如允许中断嵌套,则开中断(STI)n中断处理功能中断处理功能n关中断关中断n送中断结束命令送中断结束命令(EOI)给中断命令寄存器给中断命令寄存器n恢复寄存器内容恢复寄存器内容nIRET中断返回中断返回7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能7.4.4打印输出的中断功能打印输出的中断功能7.4.6目录和文件的中断功能目录和文件的中断功能7.4.3屏幕显示的中断功能屏幕显示的中断功能7.4.7返回返回DOS操作系统操作系统7.4.5串行通信口的中断功能串行通信口的中断功能7.4.1概述概述7.4DOS中断和中断和BIOS中断中断7.4.1概概述述DOS功能调用(功能调用(21H)存取中断向量)存取中断向量取中断向量:取中断向量:AH=35HAL=中断类型号中断类型号INT21H返回时送返回时送ES:BX=中中断向量断向量设置中断向量:设置中断向量:AH=25HAL=中断类中断类型号型号DS:DX=中中断向量断向量INT21H7.4DOS中断和中断和BIOS中断中断7.4.1概概述述MOV AL, NMOV AL, NMOV AH, 35HMOV AH, 35HINT 21HINT 21H ; ; 取原中断取原中断向量向量 ; ; 保存原中断向量保存原中断向量PUSH DSPUSH DSMOV AX, SEG INTHANDMOV AX, SEG INTHANDMOV DS, AX MOV DS, AX MOV DX, OFFSET INTHANDMOV DX, OFFSET INTHANDMOV AL, NMOV AL, NMOV AH, 25HMOV AH, 25HINT 21HINT 21H ; ; 设置新的设置新的中断向量中断向量 POP DSPOP DSPOP DXPOP DXPOP DSPOP DSMOV AL, NMOV AL, NMOV AH, 25HMOV AH, 25HINT 21HINT 21H ; ; 恢复恢复原中断向量原中断向量INTHAND: ; INTHAND: ; 中断处中断处理程序理程序IRETIRETn用用DOS功能调用存取中断向功能调用存取中断向7.4DOS中断和中断和BIOS中断中断7.4.1概概述述 主程序主程序 CALL SUBP 子程序子程序 RETDOS/BIOS调用调用 源程序源程序 INT n DOS/BIOS 例行程序例行程序 IRET实现机制不同实现机制不同实现机制不同实现机制不同7.4DOS中断和中断和BIOS中断中断7.4.1概概述述调用方法:调用方法:n1、将、将调用参数调用参数装入装入指定的指定的寄存器中;寄存器中;n2、BIOS或或DOS功能号功能号装入装入AH;n3、如需、如需子功能号子功能号,把它装入,把它装入AL;n4、按中断号、按中断号调用调用DOS或或BIOS中断中断(INT);n5、检查或取得、检查或取得返回参数返回参数。BIOS和和DOS基本调用基本调用7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能 键盘模拟程序字符码字符码:采用ASCII码表示字母、数字、专用字符和一些非打印字符,键盘上的控制键和功能键的ASCII码为0,必须用扫描码来识别。扫描码:扫描码:键盘上的每个键都对应一个扫描码,扫描码是按键的位置来排列的。7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能data segment scatab db 0,0,1234567890-=,8,0 db qwertyuiop,0dh,0 db asdfghjkl;,0,0,0,0 db zxcvbnm,./,0,0,0 db ,0,0,0,0,0,0,0,0,0,0,0,0,0 db 789-456+1230,0data endsmain proc far lea bx, scatabkey_in: in al, 60h test al, 80h ;通码? jnz key_in push ax in al, 61h or al, 80h ;置应答位 out 61h, al and al, 7fh out 61h, al;复位应答位 pop ax cmp al, 01 jz exit ;按Esc退出 7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能 xlatbcmpal,0jzno_dispcalldisp_charno_disp:jmpkey_inexit:mainendp disp_char proc near mov ah, 2 mov dl, al int 21h retdisp_char endp76543210设备控制寄存器61H键盘7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能MAINBUFFER满CALLCALLIRETNKBD中断32次TYP中断17次KBINTIRETRETDISPRETINTIP例;从键盘接收字符,同时对例;从键盘接收字符,同时对32字节的输入缓冲区进行测试;如缓冲区字节的输入缓冲区进行测试;如缓冲区已满,将键盘挂起,由打印机输出一个提示信息已满,将键盘挂起,由打印机输出一个提示信息7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能程序包括以下几个部分:程序包括以下几个部分:main初始化部分初始化部分kbint键盘中断处理程序键盘中断处理程序intip初始化打印机初始化打印机prtint打印机中断处理程序打印机中断处理程序disp用十六进制显示用十六进制显示al中的内容中的内容7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能dseg segment addr dw ? ;缓冲区指针 count dw ? buffer db 20h dup ( ) prompt db please input:,0dh,0ah,$ message db buffer overflow,0dh,0ah save_ip9 dw ? save_cs9 dw ? save_ipf dw ? save_csf dw ?dseg endsmain proc farmovaddr,offsetbuffermovcount,07.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能mov al, 09 ;键盘mov ah, 35hint 21hmov save_ip9, bxmov save_cs9, es mov dx, offset kbintpush dsmov ax, seg kbintmov ds, axmov al, 09mov ah, 25hint 21h pop ds in al, 21hand al, 0fdhout 21h, al mov al, 0fh ;打印机mov ah, 35hint 21h mov save_ipf, bxmov save_csf, es mov dx, offset prtintpush dsmov ax, seg prtintmov ds, axmov al, 0fhmov ah, 25hint 21h pop ds mov ah, 9lea dx, promptint 21h7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能stimovdi,8000hdly:movsi,9000hdly1:decsijnzdly1decdijnzdlymovah,2movdl,$int21hclipushdsmovdx,save_ip9movax,save_cs9movds,axmoval,09movah,25hint21hpopds7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能pushdsmovdx,save_ipfmovax,save_csfmovds,axmoval,0fhmovah,25hint21hpopdsin al, 21hand al, 0fdhout 21h, al stimain endpmain endp 7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能kbint proc nearkbint proc near push ax push bx in al, 60h push ax in al, 61h mov ah, al or al, 80h out 61h, al ;送键盘应答信号 xchg ah, al out 61h, al ;复位键盘 pop ax test al, 80h jnz ret1 ;通码时处理通码:通码:(60h)7=0断码:断码:(60h)7=17.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能mov bx, addr mov bx, al call disp inc bx inc count mov addr, bxcheck: cmp count,32 jb ret1 ;判断是否溢出 in al, 21h or al, 02 ;屏蔽键盘中断 and al, 7fh out 21h,al ;允许打印机中断 call intipret1: cli mov al, 20h out 20h,al ;结束键盘中断 pop bx pop ax iretkbint endpkbint endp 7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能intip proc nearintip proc near push ax push bx push dx cli mov bx, offset message mov addr, bx mov dx, 378h mov al, 0dh out dx, al ;输出回车 mov dx, 37ah mov al, 1dhout dx, al ;送选通信号 jmp $+2 ;展宽选通信号 mov al, 1ch out dx, al pop dx pop bx pop ax retintip endpintip endp 7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能pushdsprtint proc nearprtint proc near push ax push bx push dx mov bx, addr mov al, bx mov dx, 378h out dx, al push ax mov dx, 37ah mov al, 1dh out dx, al jmp $+2 mov al, 1ch out dx, al pop ax7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能inc bx mov addr, bx cmp al, 0ah jnz ret2 in al, 21h or al, 80h out 21h, al ;屏蔽打印机中断ret2: mov al, 20h out 20h, al ;结束打印机中断 pop dx pop bx pop ax iretprtint endpprtint endp 7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能 disp proc neardisp proc near ;显示扫描码 push ax push cx push dx mov ch, 2 mov cl, 4nextb: rol al, cl push ax mov dl, al and dl, 0fh or dl, 30h cmp dl, 3ah jl dispit add dl, 7dispit: mov ah, 2 int 21h pop ax dec ch jnz nextbmov ah, 2 mov dl, , int 21h pop dx pop cx pop ax retdisp endpdisp endp7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能例:例:DOSDOS调用:键盘输入,显示输出调用:键盘输入,显示输出MOVMOV AHAH, 01, 01 ;DOS ;DOS功能号功能号: :键盘输入键盘输入 INTINT 21H 21H ;DOS ;DOS调用调用MOV CHAR, MOV CHAR, AL AL ; ;返回参数返回参数: : (AL)(AL)MOV MOV DLDL, , A A ; ;调用参数调用参数: : 输出字符输出字符MOVMOV AHAH, 02, 02 ; DOS ; DOS功能号功能号: : 显示输出显示输出INTINT 21H 21H ; DOS ; DOS调用调用7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能键盘键盘键盘键盘I/OI/OI/OI/O (1) BIOS (1) BIOS键盘中断键盘中断 ( INT 16HINT 16HINT 16HINT 16H)AH功能功能返回参数返回参数0从键盘读一字符从键盘读一字符AL=字符码,字符码,AH=扫描扫描码码1读键盘缓冲区的字符读键盘缓冲区的字符如如ZF=0,AL=字符码,字符码,AH=扫描码扫描码如如ZF=1,缓冲区空,缓冲区空2取键盘状态字节取键盘状态字节AL=键盘状态字节键盘状态字节7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能字符数字键字符数字键字符码为字符码为ASCII码码功能键、控制键功能键、控制键字符码为字符码为0对应一个扫描码对应一个扫描码(2)DOS键盘中断键盘中断(INT21HINT21H)7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能AHAH功功能能调用参数调用参数返回参数返回参数1 1从键盘输入一个字符并回显在屏幕上从键盘输入一个字符并回显在屏幕上AL=字符字符6 6读键盘字符,不回显读键盘字符,不回显DL=0FFH若有字符可取,若有字符可取,AL=字符,字符,ZF=0若无字符可取,若无字符可取,AL=0,ZF=17 7 从键盘输入一个字符,不回显从键盘输入一个字符,不回显AL=字符字符8 8从键盘输入一个字符,不回显,从键盘输入一个字符,不回显,AL=字符字符检测检测Ctrl-BreakA A输入字符到缓冲区输入字符到缓冲区DS:DX=缓冲区首址缓冲区首址 B B读键盘状态读键盘状态AL=0FFH有键入,有键入,AL=00无键入无键入C C清除键盘缓冲区,清除键盘缓冲区,AL=键盘功能号键盘功能号并调用一种键盘功能并调用一种键盘功能(1,6,7,8或或A)7.4DOS中断和中断和BIOS中断中断7.4.2键盘输入的中断功能键盘输入的中断功能例例: : 输入字符串到缓冲区输入字符串到缓冲区STRINGSTRINGDATASEGMENTDATASEGMENTMAXLENDB32MAXLENDB32,0,32DUP(?)ACTLENDB?MAXLENDB32,33DUP(?)STRINGDB32DUP(?)DATAENDSDATAENDSCODESEGMENTLEADX,MAXLENMOVAH,0AH0AHINT21HCODEENDSEND32568H61H70H70H79H0DHMAXLENACTLENSTRING7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能显示器显示器I/OI/O文本方式文本方式ASCII字符字符7654321076543210前景前景000=黑黑111=白白亮度亮度0=正常亮度正常亮度1=加强亮度加强亮度闪烁闪烁0=正常显示正常显示1=闪烁显示闪烁显示背景背景000=黑黑111=白白单色属性单色属性76543210前景前景闪烁闪烁背景背景BLRGBIRGB16色属性色属性7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能(1)BIOS显示中断显示中断INT10H功能号功能号AH=0,1,2,3,5,6,7,8,9,0AH,0EH13H(p.328)例:清除屏幕例:清除屏幕 movmovah, 6ah, 6; ; 屏幕初始化屏幕初始化movmoval, 0al, 0; ; 全屏空白全屏空白movmovbh, 7bh, 7; ; 卷入行属性卷入行属性movmovch, 0ch, 0; ; 左上角行号左上角行号movmovcl, 0cl, 0; ; 左上角列号左上角列号movmovdh, 24dh, 24; ; 右下角行号右下角行号movmovdl, 79dl, 79; ; 右下角列号右下角列号intint10h10h; BIOS; BIOS调用调用7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能例例:在品红背景下,显示在品红背景下,显示5个浅绿色闪烁的星号。个浅绿色闪烁的星号。MOVAH,09;光标位置下显示光标位置下显示MOVAL,*;显示字符显示字符MOVBH,0;显示页显示页0MOVBL,0DAH;11011010(表表9.7)MOVCX,05;显示次数显示次数INT 10H;BIOS调用调用7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能例例: :在屏幕上以在屏幕上以红底红底兰字兰字显示字符串:显示字符串:“WORLD SCENERYWORLD SCENERY” STRING STRING DB DB WORLD SCENERYWORLD SCENERY ; ;定义在定义在ESES段段 LEN_TRLEN_TR DW DW 13 13 MOVMOV AL AL,3 3;80;8025, 1625, 16色文本方式色文本方式MOVMOV AH AH,0 0INTINT 10H 10HMOVMOV BP BP,SEGSEG STRING STRINGMOVMOV ESES,BPBP ; ;串地址串地址ES:BPES:BPMOVMOV BPBP,OFFSET STRING OFFSET STRING MOVMOV CX CX,LEN_STR LEN_STR ; ;串长度串长度 MOVMOV DX DX,0 0 ; ;起始行列起始行列MOVMOV BX BX,0041H0041H;0;0100100 00010001(属性)(属性)MOVMOV AL AL,1 1; ;子功能子功能MOVMOV AH AH,13H13H; ;显示字符串显示字符串INTINT 10H 10H7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能(2)DOS显示功能调用中断显示功能调用中断INT21HINT21H AHAH 功功 能能 调调 用用 参参 数数 2 2 显示一个字符显示一个字符( (检验检验Ctrl-Break) DL = Ctrl-Break) DL = 字符字符 光标跟随字符移动光标跟随字符移动 6 6 显示一个字符显示一个字符( (不检验不检验Ctrl-Break) DL = Ctrl-Break) DL = 字符字符 光标跟随字符移动光标跟随字符移动 9 9 显示字符串显示字符串 DS:DX=DS:DX=串地址串地址 串必须以串必须以串必须以串必须以$ $ $ $结束结束结束结束, 光标跟随串移动光标跟随串移动7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能例:显示字符串例:显示字符串MESSAGE DB The sort operation isfinished.,13,10,$MOVMOVAHAH,9 9MOVDXMOVDX,SEGMESSAGESEGMESSAGEMOVMOVDSDS,DXDXMOVMOVDXDX,OFFSETMESSAGEOFFSETMESSAGEINT21HINT21H7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能例例: : 输入字符串到缓冲区输入字符串到缓冲区STRINGSTRINGDATASEGMENTDATASEGMENTMAXLENDB32MAXLENDB32,0,32DUP(?)ACTLENDB?MAXLENDB32,33DUP(?)STRINGDB32DUP(?)DATAENDSDATAENDSCODESEGMENTLEADX,MAXLENMOVAH,0AH0AHINT21HCODEENDSEND32568H61H70H70H79H0DHMAXLENACTLENSTRING7.4DOS中断和中断和BIOS中断中断7.4.4打印输出的中断功能打印输出的中断功能INTAH功功能能调用参数调用参数返回参数返回参数21H21H5 5打印一个字符打印一个字符DL=字符字符17H0打印一个字符打印一个字符AL=字符字符AH=状态字节状态字节并回送状态字节并回送状态字节DX=打印机号打印机号17H1初始化打印机初始化打印机DX=打印机号打印机号AH=状态字节状态字节回送状态字节回送状态字节17H2回送状态字节回送状态字节DX=打印机号打印机号AH=状态字节状态字节打打印印机机I/OI/O7.4DOS中断和中断和BIOS中断中断7.4.3屏幕显示的中断功能屏幕显示的中断功能例例:打印字符串打印字符串TEXT(DOS)TEXTDBHello,everybody!COUNTEQU$TEXT;COUNT=17MOVCX,COUNTMOVBX,0NEXT:MOVAH,5MOVAH,5 MOVDL,TEXTBXMOVDL,TEXTBX INT21HINT21HINCBXLOOPNEXT7.4DOS中断和中断和BIOS中断中断7.4.4打印输出的中断功能打印输出的中断功能例例: : 打印字符串打印字符串TEXTTEXT(BIOSBIOS)TEXT DB TEXT DB HelloHello,everybody!everybody!COUNT EQU $COUNT EQU $TEXTTEXT MOV CX, COUNT MOV CX, COUNT MOV BX, 0 MOV BX, 0NEXT: NEXT: MOV AH, 0MOV AH, 0MOV AH, 0MOV AH, 0 MOV AL,TEXTBXMOV AL,TEXTBXMOV AL,TEXTBXMOV AL,TEXTBX MOV DX,0MOV DX,0MOV DX,0MOV DX,0; ; ; ;打印机号打印机号打印机号打印机号 INT 17HINT 17HINT 17HINT 17H INC BX INC BX LOOP NEXT LOOP NEXT7.4DOS中断和中断和BIOS中断中断7.4.5串行通信口的中断功能串行通信口的中断功能串串行行通通信信口口I/O(1)DOS 串行通信口功能串行通信口功能 (INT 21H)AH功功能能调用参数调用参数返回参数返回参数3读字符读字符AL=读入的数据读入的数据4写字符写字符DL=写入的数据写入的数据7.4DOS中断和中断和BIOS中断中断7.4.5串行通信口的中断功能串行通信口的中断功能串串行行通通信信口口I/O(2 2)BIOS BIOS 串行通信口功能串行通信口功能 (INT 14H)(INT 14H)AH功功能能调用参数调用参数返回参数返回参数0初始化串行通信口初始化串行通信口AL=初始化参数初始化参数AH=通信口状态通信口状态DX=通信口号通信口号AL=modem状态状态1向向通信口写字符通信口写字符AL=所写字符所写字符成功:成功:AL=字符字符DX=通信口号通信口号失败:失败:AH=口状态口状态2从从通信口读字符通信口读字符DX=通信口号通信口号成功:成功:AL=字符字符COM1=0,COM2=1失败:失败:AH=口状态口状态3取取通信口状态通信口状态DX=通信口号通信口号AH=通信口状态通信口状态COM1=0,COM2=1AL=modem状态状态7.4DOS中断和中断和BIOS中断中断7.4.5串行通信口的中断功能串行通信口的中断功能例例.从串行口输入字符从串行口输入字符MOV AH, 3 ;读字符;读字符INT 21H ;DOS调用调用MOV CHAR, AL ;(AL)=读入字符读入字符 CHAR DB 07.4DOS中断和中断和BIOS中断中断7.4.5串行通信口的中断功能串行通信口的中断功能例例.初始化初始化COM1端口端口MOV AH, 0 ;读字符;读字符MOV DX, 0 ;COM1MOV AL, 0C3H ;4800,n,1,8INT 14H ;BIOS调用调用7.4DOS中断和中断和BIOS中断中断7.4.6目录和文件的中断功能目录和文件的中断功能123操作目录的常用功能用文件句柄操作文件的常用功能用FCB操作文件的常用功能 中断21H 常用功能4磁盘绝对读写中断7.4DOS中断和中断和BIOS中断中断7.4.7返回返回DOS操作系统操作系统功能号:4CH格式:MOVAH,4CHINT21H功能:终止当前程序的运行,并把控制权交给调用的程序,即返回DOS系统。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号