永发信息网

用汇编编一个获取当地时间的程序

答案:2  悬赏:70  手机版
解决时间 2021-08-13 02:48

利用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为

时:分:秒:1/100秒

 

主要是不知道 INT 1CH怎么用 啥意思 书上没 也很难查到

最好都写出来 谢谢

最佳答案

我给你一个吧,完全符合你的要求的,也测试了


cursor  equ    45h
attrib  equ    2fh
code    segment
assume cs:code,ds:code
start:
jmp    go
oldcur  dw    ?
old1c   dw    2 dup(?)
newint1c:
pushf
call dword ptr cs:old1c
push    ax
push    bx
push    cx
push    dx
xor    bh,bh
mov    ah,3
int    10h
mov    cs:oldcur,dx
mov    ah,2
xor    bh,bh
mov    dx,cursor
int    10h
mov    ah,2ch
int    21h    ;读取系统时钟  
;-------------------------
;ch = hour
;cl = minute
;dh = second
;dl = 1/100 seconds
;------------------------
push    dx
push    cx


;show hour
pop    bx
push    bx
call    showhour
call    showcolon


;show minute
pop    bx
call    showmin
call    showcolon


;show second
pop    bx
push    bx
call    showsec
call    showcolon


;show 10 msec
pop    bx
call    showmin


mov    dx,cs:oldcur
mov    ah,2
xor    bh,bh
int    10h
pop    dx
pop    cx
pop    bx
pop    ax
iret


showhour proc near
push    bx
pop    ax
mov    cl,8
shr    ax,cl
mov    bl,10
div    bl
;-------------------------
;al = shang
;ah = yushu
;------------------------
add    al,30h
call    show
call    curmove
mov    cl,8
shr    ax,cl
add    al,30h
call    show
call    curmove
ret
showhour endp


showmin proc near
push    bx
pop    ax
mov    cl,8
shl    ax,cl
shr    ax,cl
mov    bl,10
div    bl
;-------------------------
;ax = shang
;dx = yushu
;------------------------
add    al,30h
call    show
call    curmove
mov    cl,8
shr    ax,cl
add    al,30h
call    show
call    curmove
ret
ret
showmin endp


showsec proc near
push    bx
pop    ax
mov    cl,8
shr    ax,cl
mov    bl,10
div    bl
;-------------------------
;ax = shang
;dx = yushu
;------------------------
add    al,30h
call    show
call    curmove
mov    cl,8
shr    ax,cl
add    al,30h
call    show
call    curmove
ret
ret
showsec endp


showcolon proc near
mov    al,':'
call    show
call    curmove
ret
showcolon endp


curmove proc near
push    ax
push    bx
push    cx
push    dx
mov    ah,3
mov    bh,0
int    10h
inc    dl
mov    ah,2
int    10h
pop    dx
pop    cx
pop    bx
pop    ax
ret
curmove endp


show    proc near
push    ax
push    bx
push    cx
mov    ah,09h
mov    bx,attrib
mov    cx,1
int    10h
pop    cx
pop    bx
pop    ax
ret
show    endp


go:
push    cs
pop    ds
mov    ax,351ch    ;取中断向量
int    21h
mov    old1c,bx    ;保存原中断向量
mov    bx,es
mov    old1c+2,bx
mov    dx,offset newint1c ;置新的中断向量
mov    ax,251ch
int    21h
mov    dx,offset go
sub    dx,offset start
mov    cl,4
shr    dx,cl
add    dx,11h
mov    ax,3100h    ;结束并驻留
int    21h
code ends
end start

全部回答
PUSH CS POP DS MOV AX,351CH ;取时钟中断 int 1c中断原入口 INT 21H MOV OLD1C,BX ;保存原中断向量 MOV BX,ES MOV OLD1C+2,BX MOV DX,OFFSET NEWINT1C ;设置新的时钟中断 int 1c 入口 MOV AX,251CH INT 21H MOV DX,OFFSET GO SUB DX,OFFSET START ;计算驻留内存字节数 MOV CL,4 SHR DX,CL ;驻留内存值转换为节 ADD DX,11H ;内存数加psp 11节 MOV AX,3100H ;结束并驻留 INT 21H
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我 爱 你 代 表 着 什 么 含 义 ?
KMTC有哪些优势航线?
Why are Saturdays ang Sundays so strong
我刚刚做任务得得星星火种怎么没了??
夏邑县商丘完美世界网络休闲会所在哪里啊,我
什么是生长激素,又怎样使用呢???…
根据化学式H2O、Cu(OH )2、NH4HCO3 进行下列
十七岁了还练得了瑜珈吗?
三星I908L
谁能给个梦幻西游测试区号?谢谢
玉髓和玛瑙哪个好,玉髓和玛瑙哪个好,值钱,
吃南瓜对颈椎炎有害吗
ESET用户名和密码更新最快的网站
每天要睡几小时才足够?
两江是哪两江
推荐资讯
QQ原表情搜索快捷键是什么?
有什么好的方法让我提高成绩吗?
世界上没有什么 最痛苦????
一个数的4倍比3/2多3/1,求这个数。
牙怕吃酸的怎么办?
如果通知书找不到了,怎么办?就不能上大学了
求盘龙有声小说
第二题用近义词接受词语
为啥旧版本微信打不开,微信电脑版点不开怎么
湖滨区三门峡三味奇(文化宫店)地址在什么地方
杞县开封杞县起名研究中心我想知道这个在什么
江汉区武汉银河幼儿园(银墩路)我想知道这个在
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?