微机实验8255方式1

来源:互联网 发布:linux如何退出终端 编辑:程序博客网 时间:2024/05/16 13:50

题目要求:
每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H、……80H使得L0~L7依次发光,中断8次结束。
输出电路:
这里写图片描述
代码:

data segmentcount db 0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axcli;关中断push ds;设置新的中断向量mov dx,offset intrmov ax,seg intrmov ds,axmov ax,250bh;设外部终端intr类型号为08hint 21h;将外部中断服务程序intr入口地址填入中断向量表pop ds;恢复ds;设置中断掩码in al,21h;读取旧的中断屏蔽字push ax;保存在堆栈中and al,0f7h;允许IR3out 21h,al;初始化设置8255mov dx,28bhmov al,0a0hout dx,al;A口方式1输出mov al,0dhout dx,al;将pc6置位mov bl,1sti;开中断again:cmp count,8jb again;中断8次后退出cli;关中断pop ax;弹出旧的中断屏蔽字out 21h,al;回复旧的中断屏蔽字stimov ax,4c00hint 21hintr proc    ;cli    push ax    ;push bx    push ds    push si    mov al,bl    mov dx,288h    out dx,al    mov al,20h    out 20h,al;EOI    shl bl,1    inc count    pop si    pop ds    ;pop bx    pop ax    ;sti    iretintr endpcode ends    end start  

这个代码写的复杂了一些,很多没有用上。以后要力求简单!
如果遇见同班的同学,大家千万别照抄,看看就好,因为这个作业两个老师都看过了,因为写成这样,所以印象应该很深。拜托(^人^)

原创粉丝点击