Prosze o pomoc :], mam progs do zrobienia/przerobienia, aby w miejsce gdzie wyswietla znak wyswietlal aktualna godzine. Wiem jak zaladowac godzine do rejestrow ch, cl, dh, dl, ale nie potrafie wyswietlic jej na ekranie :(. Jak w takim programie wyswietlic godzinke w miejscu klikniecia mysza:
.model small
.286 ; dla rozkazu shl/shr xxx, 3
.stack 512
.code
assume ds:@data
poczatek:
mov ax, @data ; ustawienie wlasciwej wartosci
mov ds, ax ; rejestru segmentowego
mov ax, 0B800h ; zakładamy, że pracujemy w trybie 3
mov es, ax
mov ax, 0
int 33h ; czy jest zainstalowany sterownik?
or ax, ax
jz koniec ; brak sterownika
mov ax, 0001h
int 33h ; pokaz kursor
petla:
mov ax, 0003h
int 33h ; odczytaj pozycje
shr cx, 3 ; dzielimy przez 8 (bo sterownik podaje
shr dx, 3 ; wspolrzedne ekranu graficznego)
mov ax, bx
test ax, 1 ; czy wcisniety lewy klawisz?
jz nie_lewy
mov bx, dx ; y*80
shl bx, 2 ; y*4
add bx, dx ; BX=y*5
shl bx, 4 ; BX=y*80
add bx, cx
shl bx, 1 ; przemieszczenie w BX (kazdy
; znak jest przechowywany jako para
; kod ASCII-atrybuty)
mov AL,'0'
mov AH,2Ch
int 21h
mov byte ptr es:[bx], 'r'
nie_lewy:
test ax, 2 ; czy wcisniety prawy klawisz?
jz petla ; jesli nie, to skok
mov ax, 0002h
int 33h ; ukryj kursor
koniec:
mov ax, 4C00h ; zakonczenie programu
int 21h
end poczatek
Do programu dodalem:
mov AL,'0'
mov AH,2Ch
int 21h
Ale nie wiem jak w tym miejscu:
mov byte ptr es:[bx], 'r'
wkleic ta godzinke, zamiast godziny wyskakuja mi znaczki ASCII, jak wpakowac tu cos wiecej niz 1 znak...?
BTW, tak wyglada tresc zadanka:
Zmodyfikowac program tak, by w miejsce '*' pojawial sie aktualny czas
(pobrany np funkcja 2Ch DOSu). Uwzglednic krytyczne polozenie kursora
myszy (przy brzegu ekranu) oraz usuwanie poprzedniego wskazania.</asm>