题目:微机原理软件实验三
班级: 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电路的阻抗和交流电压与电流之间的相位,并比较测量值与计算值。...