请教一下大神关于8253延时的程序

mortimer7866 2016-06-28 03:31:57

STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS

CODE SEGMENT
ASSURE CS:CODE
START:PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ0
MOV SI,0020H
MOV [SI],AX
MOV AX,0000H
MOV SI,0022H
MOV [SI],AX
POP DS
MOV AL,0FCH
OUT 21H,AL
MOV AL,15H
OUT 43H,AL
MOV AL,0FFH
OUT 40H,AL
MOV DL,30H
A1:STI
JMP A1
IRQ0:MOV AH,01H
MOV AL,DL
CMP AL,3AH
JNZ A2
MOV AL,0DH
INT 10H
MOV AL,30H
A2:INT 10H
INC AX
MOV DL,AL
MOV AX,0120H
INT 10H
CALL DALLY
MOV AL,20H
OUT 20H,AL
IRET
DALLY:PUSH AX
MOV CX,0100H
A3:MOV AX,0560H
A4:DEC AX
JNZ A4
LOOP A3

POP AX
RET
CODE ENDS
END START


这段程序是利用8235的0#通道定时中断(IRQ0),循环显示0-9十个数
但是他的延时好像还是用的软件延时呀,dally函数,8253在这个程序起什么作用呢
...全文
1126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
完全替换int8也可以,但他这样现场都没保护,必死无疑。我记得多年以前有一个DOS下播放MP3的软件,就修改了8253计数器0的中断频率,达到1ms中断,然后完全替换了int8,就是兼容性很差。
baidu_29183065 2016-06-30
  • 打赏
  • 举报
回复
置入0022H的应该是cs不是0 这样果断的掳走整个int8中断,不给原来int8半点活路..真是
  • 打赏
  • 举报
回复
这个程序应该运行不了吧,错误太多。 1. ASSURE -> ASSUME 2. INT8中断向量设置错了 3. 8253的设置也是错的 4. ISR没保存现场 ...

21,459

社区成员

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

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