北京邮电大学实验报告实验三微机

发布 2019-06-04 06:15:17 阅读 6778

题目:微机原理软件实验三

班级: 2010211127

专业: 信息工程

姓名: 付莹

学号: 10210759

实验五:中断实验。

设计型实验:编程实现时钟的显示。

掌握计数器/定时器8253的工作原理和编程方法;

掌握中断控制器8259的工作原理;

掌握中断处理程序的编写。

硬件条件:pc机一台。

软件条件:dos操作系统;任意一种编辑程序,如edit;

宏汇编程序masm;连接程序link;调试程序debug。

可借用该程序中的中断服务程序以及8253的初始化程序段(口地址为40h、41h、42h、43h,控制字为36h=00110110b,时间常数tc=11932:1.1932mhz/11932=100hz,输出方波频率为100hz,其周期为1000/100=10ms)。

编一程序,在显示器上显示时、分、秒。借用计数器8253的timer0作为中断源,通过8259a向cpu发中断,每10ms产生一次中断。在中断服务程序中管理刷新时、分、秒。

current time is: xx:xx:xx (时分秒键盘输入)

回车后时、分、秒开始计时,时钟不停的刷新。

当键入ctrl+c时,停止计时,返回系统,且系统正常运行不死机。

1) 画出程序流程图。

2) 提交调试好的汇编语言源程序(.asm)。

data segment para public 'data'

count100 db 100

mesg1 db 'current time is:$'

mesg2 db 'the time is wrong, please input agian...

gettime db 9,'?

tenhour db 0

hour db 0,':

tenmin db 0

minute db 0 ,'

tensec db 0

second db 0

old_off dw 0

old_seg dw 0

data ends

stack segment para stack 'stack'

db 256 dup(0)

stack ends

code segment para public 'code'

assume cs:code

assume ds:data

start: mov ax,data

mov ds,ax

mov dx,offset mesg1 ;显示'current time is:'

mov al,09h

int 21h

mov dx,offset gettime ;接受屏幕输入时间。

mov ah,0ah

int 21h

mov hour+1时分秒之间的分隔符为':'

mov minute+1,':检测时间输入是否符合要求。

cmp second,'0'

jc erro

cmp second,'9'

jg erro

cmp tensec,'0'

jc erro

cmp tensec,'6'

jnc erro

cmp minute,'0'

jc erro

cmp minute,'9'

jg erro

cmp tenmin,'0'

jc erro

cmp tenmin,'6'

jnc erro

cmp hour,'0'

jc erro

cmp hour,'4'

jnc erro

cmp tenhour,'0'

jc erro

cmp tenhour,'3'

jnc erro

jmp next1

erro: mov dx,offset mesg2 ;输入有错,显示'the time is wrong, please input agian...

mov ah,09h

int 21h

jmp start

设置中断向量表。

next1: cli

mov al, 08h取08号中断向量的服务程序地址。

mov ah, 35h

int 21hes:bx = 入口地址。

mov old_off, bx ;保存原来的终端服务程序地址。

mov bx,es

mov old_seg, bx

mov al,08h设置08号中断向量的服务程序地址。

mov ah,25h

mov dx,seg timer

push ds

mov ds,dx

mov dx, offset timer

int 21h

pop ds

设置8253

mov al,36h

out 43h,al

mov bx,11932

mov al,bl

out 40h,al

mov al,bh

out 40h,al

设置8259a

mov dx,20hicw1地址。

mov al,11h写icw1,沿触发方式、级联,要icw4

out dx,al

add dx,1指向icw2、icw3、icw4地址。

mov al,8icw2,中断向量号为08h

out dx, al

mov al, 4icw3,ir2接有从片pic

out dx, al

mov al, 1icw4,正常屏蔽方式、全嵌套、正常eoi

out dx,al

mov dx, 0a0h从片icw1地址。

mov al, 11h写icw1,沿触发方式、级联,要icw4

out dx, al

add dx, 1指向icw2、icw3、icw4地址。

mov al, 70hicw2,中断向量号为70h

out dx, al

mov al, 2icw3,从片pic识别号=2

out dx, al

mov al, 1icw4,正常屏蔽方式、正常eoi

out dx,al

sti显示时间信息

forever: mov dx,offset mesg1 ;显示'current time is:'

mov ah,09h

int 21h

mov bx,offset tenhour

mov cx,8

disd: mov al,[bx显示具体时间。

call dispchar

inc bx

loop disd

mov al,0dh

call dispchar

mov al,second

next: cmp al,second检测时间是否改变。

je next

jmp forever

中断服务程序 timer

timer proc far

push ax

dec count100每100次中断为1秒。

jnz timerx

mov count100,100

inc second

cmp second,'9'

jle timerx

mov second,'0'

inc tensec

cmp tensec,'5'

jle timerx

mov tensec,'0'

inc minute

cmp minute,'9'

jle timerx

mov minute,'0'

inc tenmin

cmp tenmin,'5'

jle timerx

mov tenmin,'0'

inc hour

cmp hour,'9'

北京邮电大学电路与电子学基础实验报告

电路与电子学基础 实验报告。实验名称。班级。学号。姓名。一 实验目的。1.测量串联rl电路的阻抗和交流电压与电流之间的相位,并比较测量值与计算值。2.测量串联rc电路的阻抗和交流电压与电流之间的相位,并比较测量值与计算值。3.测量串联rlc电路的阻抗和交流电压与电流之间的相位,并比较测量值与计算值。...