第一范文网 - 专业文章范例文档资料分享平台

实验7 中断程序设计

来源:用户分享 时间:2020-06-17 本文由几番浓情 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验七 中断程序设计与I/O程序设计 计科1093班 伍林锋 200911621323

一、 实验目的

1. 学习中断的原理和设置中断向量,加深对中断处理程序的理解

2、掌握dos和bios中断调用编写I/O程序。

二、 实验内容

1、

编写程序1:要求每隔5.5s在屏幕上显示提示符‘please enter:’,然后从键盘读入一个字符并将这个字符的ASCII码送入内存输入缓冲区,共读入5个字符,然后将这5个字符在屏幕中央显示。

源码:

.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, 11111100b

out 21h, al ;增加定时器和键盘中断 in al, 20h ;读中断命令寄存器 push ax mov al,11100000b

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 ;恢复寄存器 iret input endp end start

答:使键盘中断的优先级高于定时器中断

mov al,11100000b

out 20h,al ;使键盘中断的优先级高于定时器中断 sti ;开中断

备注:所有的PC机都有一个计时芯片(8253/8254定时器),初始化后以每秒约18.2次发出脉冲。每次脉冲调用计时器中断(INT 08H)。计数器以计数频率18.2Hz进行计数,1小时对

应计数值为65520次,1分钟对应计数值为1092次,1秒对应计数值为18.2次(取18次)。即时间计数器每55ms自动加1,也即两个计数之间的时间间隔是55ms,则要计时5.5s(5500ms),需要计数到100。关于INT 08H的原理参见教材300页例8.5

2、编写程序2:实现时钟功能:要求循环调用dos中断读取系统时钟,并在屏幕

中央10行30列的位置显示时钟格式“yyyy-mm-dd hh:mm:ss“,按下esc键则退出程序

源码:

.model small .stack .data

yy dw ?

str1 db 5 dup(0)

str2 db '-','-',' ',':',':' .code

start:

mov ax, @data mov ds, ax mov si,0

mov di,0 ;初始化指针 mov ah,2ah

int 21h ;读系统日期 mov yy,cx ;保存年 mov str1,dh ;保存月 mov str1+1,dl ;保存日 mov ah,2ch

int 21h ;读系统时间 mov str1+2, ch ;时 mov str1+3, cl ;分 mov str1+4, dh ;秒

call state ;定位光标 mov bx,yy

call binidec ;显示年 mov bp,5 ;循环次数

s: call display ;显示格式符号

call time ;依次显示显示月、日、时、分、秒 dec bp jnz s

in al,60h ;读键盘输入

cmp al,01h ;与esc键的扫描码比较 jz exit ;按下esc键退出程序 jmp start ;循环读取 exit: mov ah,4ch int 21h

;------------定位光标 state proc near push ax push bx push dx mov dh,10 mov dl,30 mov bh,0 mov ah,2 int 10h pop dx pop bx pop ax ret

state endp

;------------显示日期、时间 time proc near push cx

mov bl,str1[si] mov cl, 10d call ddiv mov cl, 1d call ddiv inc si pop cx ret time endp

;--------------除法 ddiv proc near

mov al, bl mov ah, 0 div cl

mov bl, ah mov dl, al add dl, 30h mov ah, 2 int 21h ret ddiv endp

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新经管营销实验7 中断程序设计 全文阅读和word下载服务。

实验7 中断程序设计 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1081877.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top