高人来啊,int 1ch和int 08h到底怎么整呢?

chuliqiang 2009-05-29 09:22:26
老师让写个数字时钟程序,我把显示数字时钟的程序放在了0:200内存空间。老师说是这段内存不释放。
这个时钟程序师要刷新的,所以我的思路是疯狂的调用0:200这的程序就好了。后来老师又说int 1ch这个一秒调用18.1秒什么的。
我就想那让int 1ch的中断向量表指向0:200不就行了。可发现不刷新。很是郁闷。后来网上狂查资料。说什么调用和int 08h有关。
两个int 1ch和int 08h是有关系的。可我查了办天也查不到相关的资料。高人们啊谁指点一下啊,不要说让我去看什么原来解答的例子。
我们只学过8086 16位的cpu的汇编啊。就是王爽那本书。请最好在我给的汇编基础上修改就好了。谢谢了。

assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb

mov ax,0
mov es,ax
mov word ptr es:[1ch*4],200h
mov word ptr es:[1ch*4+2],0

int 1ch
mov ax,4c00h
int 21h
do0:push bx
push es
push ax
push cx
mov bx,0b800h
mov es,bx

mov al,9
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2],ah
mov byte ptr es:[160*12+40*2+2],al
mov byte ptr es:[160*12+40*2+4],47

mov al,8
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+6],ah
mov byte ptr es:[160*12+40*2+8],al
mov byte ptr es:[160*12+40*2+10],47

mov al,7
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+12],ah
mov byte ptr es:[160*12+40*2+14],al

mov al,4
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+18],ah
mov byte ptr es:[160*12+40*2+20],al
mov byte ptr es:[160*12+40*2+22],58

mov al,2
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+24],ah
mov byte ptr es:[160*12+40*2+26],al
mov byte ptr es:[160*12+40*2+28],58

mov al,0
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+30],ah
mov byte ptr es:[160*12+40*2+32],al

pop cx
pop ax
pop es
pop bx
mov ax,4c00h
int 21h

do0end:nop
code ends
end start
...全文
1180 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
BAYNPU 2009-05-29
  • 打赏
  • 举报
回复 2
在系统加电初始化期间,把系统定时器初为每隔约55毫秒发出一次中断请求,CPU在响应定时器中断请求后转入8H号中断处理程序,BIOS提供的8H号中断处理程序中有一条中断指令INT 1CH,所以每秒要调用到约18.2次1CH号中断处理程序,而BIOS的1CH号中断处理程序实际上并没有做任何工作,只有一条中断返回指令.
friendly_ 2009-05-29
  • 打赏
  • 举报
回复


assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb

mov ax,0
mov es,ax
mov word ptr es:[1ch*4],200h
mov word ptr es:[1ch*4+2],0

;int 1ch
mov ax,4c00h
int 21h
do0:push bx
push es
push ax
push cx
mov bx,0b800h
mov es,bx

mov al,9
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2],ah
mov byte ptr es:[160*12+40*2+2],al
mov byte ptr es:[160*12+40*2+4],47

mov al,8
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+6],ah
mov byte ptr es:[160*12+40*2+8],al
mov byte ptr es:[160*12+40*2+10],47

mov al,7
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+12],ah
mov byte ptr es:[160*12+40*2+14],al

mov al,4
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+18],ah
mov byte ptr es:[160*12+40*2+20],al
mov byte ptr es:[160*12+40*2+22],58

mov al,2
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+24],ah
mov byte ptr es:[160*12+40*2+26],al
mov byte ptr es:[160*12+40*2+28],58

mov al,0
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[160*12+40*2+30],ah
mov byte ptr es:[160*12+40*2+32],al

pop cx
pop ax
pop es
pop bx

;mov ax,4c00h ;修改此处
;int 21h
iret
do0end:nop
code ends
end start

效果可以在dos下看到。或者windows,cmd下运行后接着运行debug进行查看。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧