- [cutebe] 相当牛,这个苦思冥想也值了。^_^ 11/30 00:00
- [parse] 如果忽略消息循环,那么操作系统加载的程序很快就执行完了,就像DOS程序一闪而过,所以CPU会空闲下来 06/30 09:04
- [游客] 楼主好厉害,挺一下! 01/19 08:43
- [游客] 很不错。 01/04 18:36
- [chinatree] 潜力贴留名,沙发。 11/08 12:58
- [youthangel] 恩,这次对了 10/30 18:56
- [fpamc] mov bx,18 在这条指令的上边是不是要加一条sub dx,dx? 10/30 10:03
- [fpamc] 对的 10/27 11:19
- [fpamc] 对的 10/27 09:00
- [fpamc] 哦,对不起,看错了。实验13也有一个7ch中断 10/27 08:52
- [游客] 现在急需一个汇编大作业。。。。。。可以么。。。。。如果今天之内看见留言 就加 1765496715 12/28 16:52
- [youthangel] 这算是对我学习的鼓励吗?谢谢!咱们这样交流就可以了 10/11 15:48
- [fpamc] 多日观察,你的学习积极性挺高的。可以来我们群了。群号:75916434 10/11 10:58
[2012-10-18 22:14] 实验十四
1、从cmos中取出一个
2、转换成十进制,放入临时存储段
3、循环6次
4、一次显示所有
;
可以动态显示时钟的
assume cs:code
code segment
start:
;设置源地址和目的地址
mov ax,cs
mov ds,ax
mov si,offset begin ;源地址
mov ax,0
mov es,ax
mov di,200h ;目的地址
mov cx,offset over-offset begin
cld
rep movsw
;修改中断向量表
mov ax,0
mov ds,ax
mov bx,1ch*4
mov ax,200h
mov [bx],ax
mov ax,0
mov [bx+2],ax
;退出
mov ax,4c00h
int 21h
begin:
push ax
push bx
push cx
push ds
push si
push es
push di
push bp ;保护现场
jmp ok
data segment
db 9,8,7,4,2,0 ;单元地址
temp: dw 8 dup(0)
data ends
ok:
mov ax,data
mov ds,ax
mov si,0
lea bx,temp
mov bp,0
mov cx,6
;从端口里取数据,转换后放入temp里
s:
mov al,[si]
out 70h,al
in al,71h
mov ah,al
and ah,00001111b
push cx
mov cl,4
shr al,cl
pop cx
mov [bx],ax
cmp bp,2
jb g ;/
ja d ;:
mov al,-10h
jmp c
g: mov al,'/'-30h
jmp c
d: mov al,':'-30h
jmp c
c:
mov [bx+2],al
inc si
inc bp
add bx,3
loop s
mov ax,'$' ;结束标志
mov [bx],ax
;从temp里取出数据显示,遇到$结束
lea bx,temp
mov ax,0b800h
mov es,ax
mov di,120
s0:
mov al,[bx]
cmp al,'$'
je return
add al,30h
mov es:[di],al
mov al,2
mov es:[di+1],al
inc bx
add di,2
loop s0
return:
mov al,20h
mov es:[di-2],al
pop bp
pop di ;恢复现场
pop es
pop si
pop ds
pop cx
pop bx
pop ax
iret
over: nop
code ends
end start
[ fpamc 发表于 2012-10-19 09:39 ]
mov al,-10h
请问这个干嘛用的?
。
还有下边两个分割符。后边你的注释没加分号。
[ fpamc 发表于 2012-10-19 10:06 ]
这道题不用做成中断安装程序的
[ youthangel 发表于 2012-10-19 14:37 ]
写成mov al,-10h,是因为下面还要 add al,30h
20h是空格的ASCII。分隔符?是分割年月日、时分秒的
如果不做成中断,很难实现动态显示的。至少cpu的使用率很难低于%80,你把程序拷下来,运行一下就知道了
[ fpamc 发表于 2012-10-19 22:21 ]
动态有很多方法的。你可以看看我的哈,
[ youthangel 发表于 2012-10-20 08:18 ]
我看你是毛病又犯了,天大地大,代码我的最优化!好吧,我先去看看
[ fpamc 发表于 2012-10-21 07:40 ]
我才看到。你把定时器中断的地址给占用了,所以会自动运行。但是你并没有回调原中断。这样会有错误的。你先慢慢学。如果你有兴趣,学完了可以看看我博客首页的七夕程序,里面有一个功能是通过定时中断实现延时。里面还有我收集的手册什么的哈。
[ youthangel 发表于 2012-10-21 08:51 ]
不会啊,因为我用的是1ch的中断入口。这个入口就是给程序人员用的。你可以参考一下bios\dos中断参考手册(随便百度一下就行)