使用中断组装定时器

时间:2017-03-31 15:04:32

标签: assembly timer interrupt x86-16 tasm

我正在尝试创建一个打印'0'等待4秒然后打印'1'的代码。 我不必考虑时间。 当秒数大于或等于56时,我需要代码才能工作。
这是我写的代码,但是我无法弄清楚问题是什么,所以当秒数大于或等于56时它会起作用。

IDEAL

MODEL small

STACK 100h

DATASEG

; -- -- -- -- -- -- -- -- -- -- -- -- --


; -- -- -- -- -- -- -- -- -- -- -- -- --

CODESEG

start:

mov ax, @data
mov ds, ax

; -- -- -- -- -- -- -- -- -- -- -- -- --
;print zero
mov dl,'0'
mov ah,2
int 21h
;reads the time
mov ah,2ch
int 21h
;checks if the seconds are bigger or equal to 56
cmp dh,56
jae l2 


;moves the seconds+4 to bl
 mov bl,dh
 add bl,4
 l3:
 ;check if the time is equal to bl
 l1:
 mov ah,2ch
 int 21h
 cmp dh,bl
 jl l1
 ;print one
 mov dl,'1'
 mov ah,2
 int 21h

 ; -- -- -- -- -- -- -- -- -- -- -- -- --

 exit:

 mov ax, 4c00h

 int 21h

 l2:
 add dh,4
 sub dh,60
 mov bl,dh
 jmp l3

 END start

感谢您的帮助!

0 个答案:

没有答案