Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .686
- .model flat
- public _przeciwna
- extern _MessageBoxA@16 : proc
- .data
- swieta dd 10101001010100010100110110000111b
- dni db 150 dup (?)
- dziesiec db 10
- tytul db 'kalendarz w dupe jebany',0
- .code
- dodajDzien proc
- ;dodaje do ciagu znakow w miejscu w rejestrze esi date, dzien/msc w al
- mov ah, 0
- cmp al, 9 ;sprawdzenie czy numer dnia/ msc jestr 2cyfrowy
- ja dwucyf
- add al, '0' ;jesli nie po prostu wrzucam te liczbe jako znak
- mov [esi], al
- inc esi
- powrot:
- ret
- dwucyf:
- mov ah, 0
- div byte ptr dziesiec ;podzielenie przez dziesiec zeby odzielic cyfry
- add ah, '0'
- add al, '0'
- mov [esi], al ;wynik dzielenia czyli liczba dziesiatek w al
- inc esi
- mov [esi], ah ;reszta czyli liczba jednosci w ah
- inc esi
- jmp powrot
- dodajDzien endp
- ;przeciwna to main, nie chce mi sie zmieniac szablonu z programowania mieszanego
- _przeciwna PROC
- mov cl, 1
- lea ebx, swieta
- mov al, 4
- mul cl ;kazdy miesiac zajmuje 4 bajty
- sub al, 4 ;miesiace sa nuerowane od 1 a nie 0
- movzx eax, al
- add eax, ebx ;poprawienie adresu w ebx na konkretny miesiac
- mov ebx, [ebx]
- lea esi, dni ;wrzucenie do esi adresu ypisywanego stringa na potrzeby procedury dodajDzien
- mov dl, 1 ;licznik petli, czyli dni miesiaca
- ptl:rcl ebx, 1 ;sprawdzenie czy swieto
- jnc dalej
- mov al, cl ;wrzucenie miesiaca
- call dodajDzien
- mov [esi],byte ptr '.'
- inc esi
- mov al, dl ;wrzucenie dnia miesiaca
- call dodajDzien
- mov [esi],byte ptr ' '
- inc esi
- dalej:inc dl
- cmp dl, 32
- jb ptl
- mov [esi], byte ptr 0
- push 0
- push OFFSET tytul
- push OFFSET dni
- push 0
- call _MessageBoxA@16
- or cl, cl ;breakpoint tu sobie daje xd
- ret
- _przeciwna ENDP
- END
- ; wczytywanie i wyświetlanie tekstu wielkimi literami
- ; (inne znaki się nie zmieniają)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement