永发信息网

用汇编编写INT 1CH(大约每秒中断18.2次)一个中断驻留程序,要求在屏幕的右上角显示1

答案:1  悬赏:50  手机版
解决时间 2021-05-20 18:00
  • 提问者网友:心牵心
  • 2021-05-20 02:39

MOV   AH,2

MOV   BL,31H

MOV   CL,32H

MOV   DL,BL

INT     21H

MOV   DL,CL

INT     21H

汇编   用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序(以上为中断使用的过程)  请编好 并且调试确实能运行 全源代码才发上来

 

 

最佳答案
  • 五星知识达人网友:蕴藏春秋
  • 2021-05-20 02:48

这个完全是按照题目要求写的


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    showother
call    showcolon


;show second
pop    bx
call    showother
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
shr    ax,8
mov    bl,10
div    bl
;-------------------------
;ax = shang
;dx = yushu
;------------------------
add    al,30h
call    show
call    curmove
mov    ax,dx
add    al,30h
call    show
call    curmove
ret
showhour endp


showother proc near
push    bx
pop    ax
shl    ax,8
shr    ax,8
mov    bl,10
div    bl
;-------------------------
;ax = shang
;dx = yushu
;------------------------
add    al,30h
call    show
call    curmove
mov    ax,dx
add    al,30h
call    show
call    curmove
ret
showother 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

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯