【汇编】要求利用PC系统机上的8254的0号定时计数器引发的日时钟中断,设计程序

snakemax1 2019-05-10 03:14:44
每间隔2s在PC终端屏幕上显示一行字符串'hello',并在后面显示秒数,显示10行后结束.我能弄出字符串,但是秒数怎么弄?
自身程序:
.486
DATA SEGMENT USE16
MESG DB 'hello',0DH,0AH,'$'
OLD1C DD ?
ICOUNT DB 36
COUNT DB 10
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
CLI
CALL READ1C
CALL WRITE1C
STI
SCAN: CMP COUNT,0
JNZ SCAN
CALL RESET
MOV AH,4CH
INT 21H
SERVICE PROC
PUSHA
PUSH DS
MOV AX,DATA
MOV DS,AX
DEC ICOUNT
JNZ EXIT
MOV ICOUNT,36
DEC COUNT
MOV AH,9
LEA DX,MESG
INT 21H
EXIT: POP DS
POPA
IRET
SERVICE ENDP
READ1C PROC
MOV AX,351CH
INT 21H
MOV WORD PTR OLD1C,BX
MOV WORD PTR OLD1C+2,ES
RET
READ1C ENDP
WRITE1C PROC
PUSH DS
MOV AX,CODE
MOV DS,AX
MOV DX,OFFSET SERVICE
MOV AX,251CH
INT 21H
POP DS
RET
WRITE1C ENDP
RESET PROC
MOV DX,WORD PTR OLD1C
MOV DS,WORD PTR OLD1C+2
MOV AX,251CH
INT 21H
RET
RESET ENDP
CODE ENDS
END BEG

在哪里可以加时间子程序呢?
...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
snakemax1 2019-05-10
  • 打赏
  • 举报
回复
引用 1 楼 zara的回复:
显示秒数,是实际的秒,还是只是计数?可以直接在字符串里留两个字符空出来,显示时先把显示的秒转换为显示的字符填进去,然后再调用显示功能。在 bios 中断里,一般不建议使用 dos 中断,防止 dos中断重入(这个是不支持的)。
就是在显示的字符串后显示2.4.6.8秒,表示2秒输出一次字符串这样子,可以实现的吗
snakemax1 2019-05-10
  • 打赏
  • 举报
回复
引用 1 楼 zara的回复:
显示秒数,是实际的秒,还是只是计数?可以直接在字符串里留两个字符空出来,显示时先把显示的秒转换为显示的字符填进去,然后再调用显示功能。在 bios 中断里,一般不建议使用 dos 中断,防止 dos中断重入(这个是不支持的)。
就是在显示的字符串后显示2.4.6.8秒,表示2秒输出一次字符串这样子
snakemax1 2019-05-10
  • 打赏
  • 举报
回复
引用 1 楼 zara的回复:
显示秒数,是实际的秒,还是只是计数?可以直接在字符串里留两个字符空出来,显示时先把显示的秒转换为显示的字符填进去,然后再调用显示功能。在 bios 中断里,一般不建议使用 dos 中断,防止 dos中断重入(这个是不支持的)。
就是在显示的字符串后显示2.4.6.8秒,表示2秒输出一次字符串这样子
zara 2019-05-10
  • 打赏
  • 举报
回复
显示秒数,是实际的秒,还是只是计数?可以直接在字符串里留两个字符空出来,显示时先把显示的秒转换为显示的字符填进去,然后再调用显示功能。在 bios 中断里,一般不建议使用 dos 中断,防止 dos中断重入(这个是不支持的)。

21,458

社区成员

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

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