实验7 中断程序设计.doc
文本预览下载声明
实验七 中断程序设计与I/O程序设计
计科1093班 伍林锋 200911621323
实验目的
1.?学习中断的原理和设置中断向量,加深对程序的理解.model small
.stack
.data
cnt dw 100 ;计数次数
mes db 5 dup(0),$ ;内存缓冲区
str db please enter:$ ;提示字符串
crlf db 0dh,0ah,$ ;回车换行
.code
start:
mov ax, @data
mov ds, ax
mov si,0 ;缓冲区指针
mov al, 1ch
mov ah, 35h
int 21h ;取原向量1ch
push es
push bx ;保存原向量
push ds
mov dx, offset input
mov ax, seg input
mov ds, ax
mov al, 1ch
mov ah, 25h
int 21h ;设置新向量1CH,对应中断处理程序input
pop ds
in al, 21h ;读中断屏蔽寄存器
push ax
and al,
out 21h, al ;增加定时器和键盘中断
in al, 20h ;读中断命令寄存器
push ax
mov al
out 20h,al ;使键盘中断的优先级高于定时器中断
sti ;开中断
rotate: cmp si,5
jl rotate
mov ah,2
mov bh,0
mov dh,10
mov dl,30
int 10h ;设置光标在屏幕中央
mov dx, offset mes
mov ah, 09
int 21h ;显示内存缓冲区的字符串
pop ax
out 20h,al ;恢复中断命令寄存器
pop ax
out 21h,al ;恢复中断屏蔽寄存器
pop dx
pop ds
mov al, 1ch
mov ah, 25h
int 21h
;恢复原向量
mov ax, 4c00h
int 21h
;-------------中断处理程序
input proc near
push ds
push ax
push cx
push dx ;保存寄存器
mov ax, @data
mov ds, ax
sti ;开中断,允许中断嵌套
dec cnt ;递减计数
jnz exit
mov ah,9
lea dx,str
int 21h ;显示提示字符串
mov ah,0
int 16h ;等待键盘输入
mov mes[si],al ;接收字符到缓冲区
inc si
mov ah,9
lea dx,crlf
int 21h ;显示回车换行
mov cnt,100 ;重新进行计数
exit: cli ;关中断
pop dx
pop cx
pop ax
pop ds
显示全部