汇编实验课程设计1之设置时间半成品

;    感觉双休就想睡觉,这鬼天气,一直下雨。设置时间未完成,只是加了一个所谓的主界面
;  
display system time. press f1 to change the color displayed, press esc to return
main list. f3 exit
;    clear_screen 清空屏幕
assume
cs:codesg
stacksg segment
    dw 128 dup(0)
stacksg
ends

codesg segment    
    line db
12
    csip dw 0,0
    exitflag db
0    ; f3-2, esc-1. 只有在主界面才能退出,所以每次从时钟返回都会重置此值
  
 color    db 2
    list dw display,
setclock
    setclock db ‘2) set clock‘, 0
  
 display db ‘1) clock‘, 0
    start:
  
     mov ax, stacksg
      
 mov ss, ax
        mov sp, 128

        mov ax, cs
  
     mov ds, ax
      
 
        mov ax, 0
  
     mov es, ax
      
 push es:[9*4]
        pop
csip[0]
        push es:[9*4 +
2]
        pop csip[2]
  
     
      
 cli
        mov word ptr es:[9*4], offset
int9
        mov es:[9*4 + 2],
cs
        sti
  
     ;    主菜单
main_screen:
  
     call clear_screen
      
 mov cx, 2
        mov al,
1
    dis_main:
        mov
bx, cx
        dec bl
  
     add bx,bx
        mov
si,list[bx]
        call printf
  
     dec al
        loop
dis_main
        ;
获取输入
getinput:
    cmp exitflag, 2
    je
exit
    ; 1,2为有效输入,其它忽略(暂时只实现1)
    mov ah,
0
    int 16h
    cmp ah,
02h     ;  通码 1-9:02-0a
    je
main_print_clock
    cmp ah, 03h
    je
main_set_clock
    ;  
 其它情况,对比是否有功能键触发事件
    jmp getinput
  
 
main_print_clock:
    ; 显示时钟,若返回,则显示主界面

    mov ah, 0
    call
clock
    mov exitflag, 0
    mov color,
2
    jmp main_screen
main_set_clock:
  
 mov ah, 1
    call clock
    mov
exitflag, 0
    mov color, 2
    jmp
main_screen

exit:
        ;
恢复向量表
        push csip[0]
  
     pop es:[9*4]
      
 push csip[2]
        pop es:[9*4 +
2]

        mov ax, 4c00h
  
     int 21h
      
 ;    clock子函数,ah 传递功能号, 0- 显示时钟,1-
设置时钟
clock:
        jmp short
do_clock
        clocktable dw dis_clock,
set_clock
        clock_str  
 db ‘20yy/mm/dd hh:mm:ss‘,0
      
 row    db 9,8,7,4,2,0
      
 ;    秒: 0  分:2 时: 4 日 : 7 月:8 年:9

  
 do_clock:
        push bx
  
     push ax
        push
si
        push di
  
     push cx
        push
ds
        
      
 cmp ah, 1
        ja
clock_ret
        cmp ah, 0
  
     jb clock_ret
      
 mov bl, ah
        mov bh,
0
        add bx,bx
  
     jmp word ptr clocktable[bx]
  
     ;  
 每1s显示一次时钟
dis_clock:
        call
clear_screen
    s_second:
      
 mov di, 2
        mov si,
0
        mov cx, 6
  
     ; 设置时钟字符串
    s:  
 mov al, row[si]
        out 70h,
al
        in  al, 71h
  
     mov ah, al
      
 push cx
        mov cl, 4
  
     shr ah, cl
        pop
cx
        add ah, 30h
  
     and al, 00001111b
      
 add al, 30h
        mov clock_str[di],
ah
        mov clock_str[di + 1],
al
        add di, 3
  
     inc si
        loop
s

        mov si, offset
clock_str
        mov al, 1
  
     call printf
      
 call delay
        cmp exitflag,
1    ; only esc can return from clock screen
  
     je clock_ret
      
 jmp short s_second
set_clock:

  
 clock_ret:
        pop ds
  
     pop cx
        pop
di
        pop si
  
     pop ax
        pop
bx
        ret
delay:
  
     push ax
        push
dx
        mov dx, 0BFFh
  
     mov ax, 0
  
 s_delay:
        sub ax,
1
        sbb dx, 0
  
     cmp ax, 0
        jne
s_delay
        cmp dx, 0
  
     jne s_delay
      
 pop dx
        pop ax
  
 ret

clear_screen:
        blank db
‘                              
‘, 0
        push si
  
     push cx
        push
ax

        mov si, offset
blank
        mov cx, 4
  
     mov al, 0
  
 s_clear:
        call
printf
        inc al
  
     loop s_clear
      
 
        pop ax
  
     pop cx
        pop
si
        ret
printf:
  
     push ax
        push
es
        push si
  
     push di
        push
bx
        ;    显示函数,
行号在line变量中,从第8列开始。al-表示第X(X>=1)次调用。字符串地址-ds:[si],碰到0结束返回
  
     mov bl, al
        mov
ax, 0b800h
        mov es, ax
  
     mov bh, 160
      
 add bl, line[0]
        mov al,
bl
        mul bh
  
     mov di, ax
        add
di, 2*8
    s_print:
      
 mov bl, ds:[si]
        cmp
bl,0
        je s_print_out
  
     
        mov bh,
color
        ;  
 无论哪行,从第8列开始显示
        mov es:[di],
bx
        inc si
  
     add di, 2
        jmp
s_print
    s_print_out:
      
 pop bx
        pop di
  
     pop si
        pop
es
        pop ax
  
     ret
int9:
    push ax  
 
    in al, 60h
    
  
 pushf
    call dword ptr csip
  
 ;    check if equal esc:01, f1:3b, f1 change color. esc
exit function
    cmp al, 01h  
 ;esc
    je sesc
    cmp al,
3bh
    je f1
    cmp al, 3dh  
         ;      
 F3 退出
    je f3
    mov exitflag,
0
    jmp int9ret
f1:    inc
color
    jmp int9ret
f3:
    mov
exitflag, 2
    jmp int9ret
sesc:
    mov
exitflag, 1

int9ret:
        pop
ax
        iret
codesg ends
end
start

汇编实验课程设计1之设置时间半成品,布布扣,bubuko.com

时间: 2024-08-07 08:25:38

汇编实验课程设计1之设置时间半成品的相关文章

Java实验-课程设计报告一:个人银行账户管理系统SavingAccountManageSystem-具体文档+源码

课程设计报告一:个人银行账户管理系统 此文档及源码仅供参考 不得直接复制使用 author: [xxxxxxxxx xx xxxx] date: "2019-04-12" 作 者:31415926535x 出 处:https://www.cnblogs.com/31415926535x/p/10697659.html 版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. 不建议直接复制文档.源码,没意义,这东西还是自己手敲一下才能涨经验 项目所有的内容都已上

操作系统存储管理实验课程设计报告

操作系统报告 存储管理 姓名: 郑兆涵                                     专业: 计算机科学与技术(嵌入式方向) 一.设计目的.意义 本次实验针对:(1)存储管理实验,(2)主存储器空间的分配和回收实验,两个实验进行学习. (1)存储管理实验:本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法. (2)主存储器空间的分配和回收实验:本实验的目的是理解在不同的存储管理方式下应怎样实现主存空间

操作系统进程实验课程设计

题目:操作系统--进程实验 姓名:郑兆涵                          学校:烟台大学                       专业:计算机科学与技术(嵌入式方向) 班级:计146-2                        学号:201458506230              目录: 一.设计目的.意义 二.设计分析 三.方案分析 四.功能模块实现 1 进程创建 2 进程的控制 3 软中断通信 4 进程的管道通信 5 消息的创建,发送和接收 6 共享存储区的创

单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》

引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准.具有走时精确,功耗低,显示直观,调整简单方便等优点. 功能描述 基本显示: 第一行为日期,依次为:年-月-日-星期 第二行为时间,依次为:时:分:秒 说明: 每月的天数,闰年的天数可自动调整 蓝牙校准日期: 命令d+年月日星期+#,如设置2016年12月8日星期四,手机发送命令:d16120804

数据结构_课程设计——最小生成树:室内布线

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这道课程设计,费不少时间,太麻烦了= =.(明明是能力不够) ~~~~最小生成树:室内布线~~~~ 题目要求: 装修新房子是一项颇为复杂的工程,现在需要写个程序帮助房主设计室内电线的布局. 首先,墙壁上插座的位置是固定的.插座间需要有电线相连,而且要布置的整齐美

14-9-11 C/C++课程设计--图书馆管理系---<time.h>中时间数据类型的学习记录

小学期C++课程设计需要做一个图书馆管理系统,需要获取当前时间和进行时间运算,在网上找了些资料自学了一下,总结如下: 1.获取日历时间: C++中时间原型为日历时间(Calender Time),表示当前时间和某一固定时间相差的秒数. 定义如下:             #typedef long time_t; 也就是说,日历时间实际上是一个长整形的数据.使用time()函数获取当前的日历时间,              time_t time(NUL); 其返回值就是当前的日历时间. 2.将

2019春第3次课程设计实验安排

2019春第3次课程设计实验安排 一.实时钟表 二.实验功能描述: 由秒针的转动,带动分针的转动,以及再带着时针的转动.同时我们的钟表是可以与我们准确的时间相联系,也就是说这是一个比较准确的时间点,以及是非常简便的,当然秒针转一圈,分针动一下,以及分针转一圈,时针动一下,采用的是用角度来进行计算的,以及结束一圈的结束点以及起始点,都是采用的角度的结算. 三.项目介绍 1.绘制静态秒针 秒针的转动 根据实际时间转动 4.添加时针和分针 5.添加表盘刻度 四.实现界面展示 五.代码托管链接 http

2019第四次课程设计实验报告

2019第四次课程设计实验报告 一. 实验项目名称: 快乐小鸟 二. 实验项目功能描述: 该游戏设置音乐循环播放,设置了小鸟,挡板障碍,按一下空格小鸟向上一格,若通过挡板则加一分,若没有通过则游戏结束,随着分数的增多小鸟的速度增快,得分高的记录下最高分. 三.项目模块介绍: 四.界面展示 五.代码托管链接: https://gitee.com/hxy2017826779/huang_hahas_warehouse/blob/master/%E5%BF%AB%E4%B9%90%E5%B0%8F%E

第二次课程设计实验

2019春第二次课程设计实验报告 一. 实验项目名称 贪吃蛇游戏 二. 实验项目功能描述 一个能由用户手动输入实现的用户操控一串字符数组移动达成相应条件改变字符数组的贪吃蛇游戏 三. 项目模块结构介绍 四. 实现界面展示 五. 代码托管链接 https://gitee.com/llf1202/flappy-1/blob/master/tcs.cpp 六. 实验总结 问题:游戏运行时,出现sleep(2000)函数没有定义 解决:开始我是怀疑我的代码打错了,某个函数打错了,反复对照书上的代码还是没