inmadiu 2023-02-18 14:15 采纳率: 75%
浏览 53
已结题

电子钟综合性实验微机原理汇编语言

电子钟综合性试验(CLOCK)

1、实验目的与要求
进一步熟悉8253、8259、8279

2、实验设备
STAR系列实验仪一套、PC机一台

3、实验内容
1、使用8253定时功能,产生0.5S的定时中断给8259
2、在F4区的数码管上显示时间
3、允许设置时钟初值

proteus运行

有没有类似的实验代码和运行结果呢

  • 写回答

1条回答 默认 最新

  • qq_46161207 2023-02-18 17:54
    关注

    只是一个参考:

    ORG 100h   ;程序入口
    
    ;初始化
        MOV AL, 10110110B ;设置8253为工作方式3
        OUT 043h, AL
        MOV AL, 10100000B ;设置8253定时器0为1.19318MHz
        OUT 040h, AL
        MOV AL, AH
        OUT 040h, AL ;设定8253计数初值
        MOV AL, 20h ;设置8259中断控制器,开启时钟中断
        OUT 021h, AL
        IN AL, 020h ;开启CPU中断
        OR AL, 00100000B
        OUT 020h, AL
    
    ;主程序
    START:
        CALL SET_TIME ;获取时间
        CALL UPDATE_LED ;更新LED显示
        JMP START
    
    ;获取时间
    SET_TIME:
        PUSH AX
        PUSH BX
        PUSH CX
        PUSH DX
        MOV DX, 0040h ;获取系统计数器中的时间
        MOV BX, 006Ch
        MOV CX, [BX]
        MOV BX, 0070h
        MOV AX, [BX]
        CMP CX, [BX]
        JE END_SET_TIME
        MOV AX, CX
        INC CX
        CMP CX, 100h
        JNE UPDATE_TIME
        MOV CX, 0
        INC AX
    UPDATE_TIME:
        MOV [BX], CX
        MOV [BX+2], AX
    END_SET_TIME:
        POP DX
        POP CX
        POP BX
        POP AX
        RET
    
    ;更新LED显示
    UPDATE_LED:
        PUSH AX
        PUSH BX
        PUSH CX
        PUSH DX
        MOV AH, 0Bh ;显示时间
        MOV CX, 0Fh ;显示位置
        CALL SHOW_TIME
        MOV AH, 04h ;设置时钟初值
        MOV DX, 01h ;小时
        INT 21h
        MOV DX, 30h ;十位
        INT 21h
        MOV DX, 00h ;个位
        INT 21h
        POP DX
        POP CX
        POP BX
        POP AX
        RET
    
    ;显示时间
    SHOW_TIME:
        PUSH AX
        PUSH BX
        PUSH CX
        PUSH DX
        MOV BX, 0B800h ;显存地址
        MOV CX, 0003h ;黑底白字
        MOV DX, 0Fh ;显示位置
        MOV AX, DS
        MOV ES, AX ;ES=DS
        ADD BX, DX ;移动指针
        MOV DX, WORD PTR [DS:006Ch] ;小时
        AND DX, 0FFh
        DIV 10
        ADD DL, 30h ;转换为ASCII码
        MOV BH, 0 ;页码
        MOV BYTE PTR [ES:BX], DL ;显示十位
        ADD BX, 2 ;移动指针
        MOV DL, CL ;保存原始属性值
        MOV CL, CH ;取出高位
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 2月18日

悬赏问题

  • ¥20 materialstudio计算氢键脚本问题
  • ¥15 配置FPT报错,该如何处理
  • ¥15 请大家看一下这个代码咋写,一点思路都没有,最好能做一下,不要伪代码,有偿
  • ¥15 有偿请人帮写个安卓系统下禁止装软件及禁止拷入文件的程序
  • ¥100 用 H.265 对音视频硬编码 (CUDA)
  • ¥20 mpich安装完成后出问题
  • ¥15 stm32循迹小车代码问题
  • ¥15 输入一堆单词,使其去重输出
  • ¥15 qc代码,修改和添加东西
  • ¥50 Unity的粒子系统使用shadergraph(内置管线)制作的一个顶点偏移shader,但是粒子模型移动时,顶点也会偏移