Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "io64.inc"
- section .text
- global CMAIN
- ;ZROBIONE UNIWERSALNYM WZOREM ZELLERA
- ; k + [(13 * m - 1 )/5] + D + D/4 + C/4 - 2*C
- ; GDZIE:
- ; k = DAY
- ; m = MONTH
- ; C = PIERWSZE DWIE CYFRY ROKU
- ; D = OSTATNIE DWIE CYFRY ROKU
- CMAIN:
- PRINT_STRING info
- NEWLINE
- mov eax,3
- mov ebx,0
- mov ecx, buffer
- mov edx,10
- int 0x080
- CALL allocate_data
- call obliczanie
- call dzien_tygodnia
- end:
- xor rax, rax
- ret
- obliczanie:
- mov al,[day]
- add [wynik],al
- mov al,[year_last]
- add [wynik],al
- xor dx,dx
- mov al,[year_last]
- mov ah,0
- mov cx,4
- div cx
- add [wynik],ax
- xor dx,dx
- mov al,[year_first]
- mov ah,0
- mov cx,4
- div cx
- add [wynik],ax
- xor dx,dx
- mov al,[year_first]
- mov ah,0
- mov cx,2
- mul cx
- sub [wynik],ax
- mov al,[month]
- mov ah,0
- mov cx,13
- mul cx
- sub ax,1
- xor dx,dx
- mov cx,5
- div cx
- add [wynik],ax
- ret
- dzien_tygodnia:
- xor dx,dx
- mov ax,[wynik]
- mov cx,7
- div cx
- mov bl,dl
- mov bh,0
- cmp bl,bh
- je sunday
- mov bh,1
- cmp bl,bh
- je monday
- mov bh,2
- cmp bl,bh
- je tuesday
- mov bh,3
- cmp bl,bh
- je wednesday
- mov bh,4
- cmp bl,bh
- je thursday
- mov bh,5
- cmp bl,bh
- je friday
- mov bh,6
- cmp bl,bh
- je saturday
- jmp end
- sunday:
- PRINT_STRING sun
- jmp end
- monday:
- PRINT_STRING mon
- jmp end
- tuesday:
- PRINT_STRING tue
- jmp end
- wednesday:
- PRINT_STRING wed
- jmp end
- thursday:
- PRINT_STRING thu
- jmp end
- friday:
- PRINT_STRING fri
- jmp end
- saturday:
- PRINT_STRING sat
- jmp end
- ret
- allocate_data:
- mov al,[buffer]
- sub al,'0'
- mov ah,10
- mul ah
- add [day],al
- mov al,[buffer+1]
- sub al,'0'
- add [day],al
- mov al,[buffer+3]
- sub al,'0'
- mov ah,10
- mul ah
- add [month],al
- mov al,[buffer+4]
- sub al,'0'
- add [month],al
- mov ah,0
- mov al,[buffer+6]
- sub al,'0'
- mov cx,10
- mul cx
- add [year_first],ax
- mov ah,0
- mov al,[buffer+7]
- sub al,'0'
- add [year_first],ax
- mov ah,0
- mov al,[buffer+8]
- sub al,'0'
- mov cx,10
- mul cx
- add [year_last],ax
- mov al,[buffer+9]
- sub al,'0'
- add [year_last],al
- ret
- section .data
- info db 'Podaj date w formacie DD-MM-YYYY',0
- day db 0
- month db 0
- year_first db 0
- year_last db 0
- wynik dw 0
- sun db 'Niedziela',0
- mon db 'Poniedziałek',0
- tue db 'Wtorek',0
- wed db 'Środa',0
- thu db 'Czwartek',0
- fri db 'Piątek',0
- sat db 'Sobota',0
- section .bss
- buffer: resb 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement