微机系统与接口实验考试题目(2014级题目-02)

微机系统与接口实验考试题目(2014级题目-02)

题目要求:采用X86汇编语言实现如下功能:

八位二极管初始时0、2、4、6亮,8254计时2s变为剩下的亮,如此往复.


分析:实际操作中8254并不好使,所以采用了延时的方式替代8254计时;
代码:
A8254 EQU 0600H
B8254 EQU 0602H
C8254 EQU 0604H
CON8254 EQU 0606H
CODE SEGMENT
  ASSUME CS:CODE
START:
MOV AX, 0000H
MOV DS, AX ;手动指定用户程序区的起始位置,可以不指定,默认为 0000H

MOV DX, 0646H ;8255 控制端口地址,与选取的 IOY 端口有关,详见实验一
MOV AL, 80H ;8255 控制字,90H=10010000B,表示 A 口输入,B口输出。
OUT DX, AL ;将上述控制字写入控制端口
MOV DX, 0642H ;8255B口地址
MOV AL, 0ffH
OUT DX, AL ;输出 FFH=11111111B,将 D7-D0 点亮

MOV AX, OFFSET MIR6 ;取中断服务程序的偏移地址
MOV SI, 0038H ;中断号 6 的向量起始地址,见实验讲义 P48
MOV [SI], AX ;将服务程序地址填入中断向量(占两个字节)
MOV AX, CS ;取段地址
MOV SI, 003AH ;中断向量后移两个字节等待存入段地址
MOV [SI], AX ;将段地址存入中断向量(占两个字节)
;中断向量共四个字节大小,分别存服务程序入口地址和段地址
CLI ;屏蔽所有可屏蔽中断,准备写入命令字

MOV AL, 11H ;主片 8255 端口地址详见实验讲义 P44
OUT 20H, AL ;命令字 ICW1,11H=00010001B
MOV AL, 08H
OUT 21H, AL ;命令字 ICW2,08H=00001000B
MOV AL, 04H
OUT 21H, AL ;命令字 ICW3,04H=00000100B
MOV AL, 01H
OUT 21H, AL ;命令字 ICW4,01H=00000001B
MOV AL, 3FH
OUT 21H, AL ;命令字 OCW1,3FH=00111111B
STI ;控制字写入完成,允许中断,结束 CLI
;OCW1 命令字表示除 IR6,IR7 中断外其余中断均被屏蔽
;其余命令字含义请对照实验讲义 P45-P48


;8254 计数器 0 工作在方式 3,产生方波,相当于 CLK
MOV DX, CON8254
MOV AL, 76H ;8254 计数器 0 工作在方式 3,产生方波。
OUT DX, AL
MOV DX, B8254
MOV AL, 005H
OUT DX, AL
MOV AL, 00H ;写入计数初值 0E8H
OUT DX, AL

AA1:
MOV DX, 0642H
MOV AL,055H
OUT DX, AL
JMP AA1
;相当于主程序,表示循环点亮 D7-D0
MIR6:
;ROR AL, 1
;MOV DX, 0642H
;MOV AL,099H
;OUT DX, AL

 ROR AL, 1
 OUT DX,AL
MOV CX,0FFFFH  ;CX为计数寄存器,确定循环次数
L1:
    LOOP L1
    MOV CX,0FFFFH
L2:
    LOOP L2
    MOV CX,0FFFFH
L3:
    LOOP L3

    ;L1-L4为空循环,作用为延迟时间,改为多层循环或子程序更好
JMP MIR6

CODE ENDS
END START


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值