hallo,
ich hab in meinem system (written in ASM) eine variable "millisecs", die speichert, wie viele millisekunden das system schon an ist. die is dazu gut, dass ich zeitfunktionen (delay) einbauen kann. allerdings hab ich ein altes problem: es geht nicht. wundert mich, muss was ganz banales sein:
irq0x00:
;timer-irq
push ds
push eax
mov eax,dssys-GDT
mov ds,eax
mov eax,[millisecs]
add eax,0x05
mov [millisecs],eax
mov esi,init_ok
mov ebx,0x00FF0000
call PrintString ;dies hier ist temporär zum testen, ob
call UpdateScreen ;das int aufgerufen wird!
mov al,0x20
out 0x20,al
out 0xA0,al
pop eax
pop ds
iret
ich habs auch schon so versucht:
irq0x00:
;timer-irq
push ds
push eax
mov eax,dssys-GDT
mov ds,eax
add dword [millisecs],0x05
mov esi,init_ok
mov ebx,0x00FF0000
call PrintString ;dies hier ist temporär zum testen, ob
call UpdateScreen ;das int aufgerufen wird!
mov al,0x20
out 0x20,al
out 0xA0,al
pop eax
pop ds
iret
geht aber auch nicht... dann hab ich geschaut, ob der fehler vll. bei meinem delay is, was ich einfach getestet hab, indem ich in die hauptschleife öfters mal ne phrase "mov eax,[millisecs]" reingemacht hab, die dann mit bochs angesteuert und die werte ausgelesen. der wert ist immer 0x0F, was auch komisch is, weil die var mit 0x00 initialisiert wird... würde mich freuen, wenn jemand den fehler findet. danke,
J!N