21,459
社区成员
发帖
与我相关
我的任务
分享
;***运用时钟中断以秒为单位进行延迟_习例(初步)***
;每秒输出一个字符,16次输出后结束程序
;第一次输出的延迟可能不准确,没有再进行校正,如校正,将使程序复杂化,故称之初步习例.
;欢迎交流,互相学习.CSDN_汇编_nanlingcg
;-------------------------------------------------------
DATAS SEGMENT
LAST DB 0
COUNT DB 0FH
TABLE DB "0123456789ABCDEF"
DATAS ENDS
STACKS SEGMENT
DB 16 DUP (?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
MOV SP,16
LOOPS:
MOV AH,2CH
INT 21H
CMP DH,LAST
JZ LOOPS
MOV LAST,DH
MOV BL,COUNT
INC BL
AND BL,0FH
MOV COUNT,BL
XOR BH,BH
MOV DL,TABLE[BX]
MOV AH,2
INT 21H
CMP BL,0FH
JZ OVER
JMP LOOPS
OVER:
MOV AH,4CH
INT 21H
CODES ENDS
END START
;-----------------------------------------------
mov dx,10h
mov ax,0
s: sub ax,1
sbb dx,0
cmp ax,0
jne s
cmp dx,0
jne s