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

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

电子钟综合性试验(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日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程