Advertisement
piotranon

Untitled

Jun 3rd, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. %include "io64.inc"
  2. section .text
  3. global CMAIN
  4. ;ZROBIONE UNIWERSALNYM WZOREM ZELLERA
  5. ; k + [(13 * m - 1 )/5] + D + D/4 + C/4 - 2*C
  6. ; GDZIE:
  7. ; k = DAY
  8. ; m = MONTH
  9. ; C = PIERWSZE DWIE CYFRY ROKU
  10. ; D = OSTATNIE DWIE CYFRY ROKU
  11.  
  12. CMAIN:
  13. PRINT_STRING info
  14. NEWLINE
  15. mov eax,3
  16. mov ebx,0
  17. mov ecx, buffer
  18. mov edx,10
  19. int 0x080
  20.  
  21. CALL allocate_data
  22. call obliczanie
  23. call dzien_tygodnia
  24.  
  25.  
  26. end:
  27. xor rax, rax
  28. ret
  29.  
  30.  
  31. obliczanie:
  32. mov al,[day]
  33. add [wynik],al
  34. mov al,[year_last]
  35. add [wynik],al
  36. xor dx,dx
  37. mov al,[year_last]
  38. mov ah,0
  39. mov cx,4
  40. div cx
  41. add [wynik],ax
  42. xor dx,dx
  43. mov al,[year_first]
  44. mov ah,0
  45. mov cx,4
  46. div cx
  47. add [wynik],ax
  48. xor dx,dx
  49. mov al,[year_first]
  50. mov ah,0
  51. mov cx,2
  52. mul cx
  53. sub [wynik],ax
  54. mov al,[month]
  55. mov ah,0
  56. mov cx,13
  57. mul cx
  58. sub ax,1
  59. xor dx,dx
  60. mov cx,5
  61. div cx
  62. add [wynik],ax
  63. ret
  64.  
  65. dzien_tygodnia:
  66. xor dx,dx
  67. mov ax,[wynik]
  68. mov cx,7
  69. div cx
  70. mov bl,dl
  71.  
  72. mov bh,0
  73. cmp bl,bh
  74.  
  75. je sunday
  76. mov bh,1
  77. cmp bl,bh
  78.  
  79. je monday
  80. mov bh,2
  81. cmp bl,bh
  82. je tuesday
  83. mov bh,3
  84. cmp bl,bh
  85. je wednesday
  86. mov bh,4
  87. cmp bl,bh
  88. je thursday
  89. mov bh,5
  90. cmp bl,bh
  91. je friday
  92. mov bh,6
  93. cmp bl,bh
  94. je saturday
  95. jmp end
  96. sunday:
  97. PRINT_STRING sun
  98. jmp end
  99. monday:
  100. PRINT_STRING mon
  101. jmp end
  102. tuesday:
  103. PRINT_STRING tue
  104. jmp end
  105. wednesday:
  106. PRINT_STRING wed
  107. jmp end
  108. thursday:
  109. PRINT_STRING thu
  110. jmp end
  111. friday:
  112. PRINT_STRING fri
  113. jmp end
  114. saturday:
  115. PRINT_STRING sat
  116. jmp end
  117.  
  118. ret
  119.  
  120.  
  121.  
  122. allocate_data:
  123. mov al,[buffer]
  124. sub al,'0'
  125. mov ah,10
  126. mul ah
  127. add [day],al
  128. mov al,[buffer+1]
  129. sub al,'0'
  130. add [day],al
  131.  
  132. mov al,[buffer+3]
  133. sub al,'0'
  134. mov ah,10
  135. mul ah
  136. add [month],al
  137. mov al,[buffer+4]
  138. sub al,'0'
  139. add [month],al
  140.  
  141. mov ah,0
  142. mov al,[buffer+6]
  143. sub al,'0'
  144. mov cx,10
  145. mul cx
  146. add [year_first],ax
  147. mov ah,0
  148. mov al,[buffer+7]
  149. sub al,'0'
  150. add [year_first],ax
  151. mov ah,0
  152. mov al,[buffer+8]
  153. sub al,'0'
  154. mov cx,10
  155. mul cx
  156. add [year_last],ax
  157. mov al,[buffer+9]
  158. sub al,'0'
  159. add [year_last],al
  160. ret
  161.  
  162. section .data
  163. info db 'Podaj date w formacie DD-MM-YYYY',0
  164. day db 0
  165. month db 0
  166. year_first db 0
  167. year_last db 0
  168. wynik dw 0
  169. sun db 'Niedziela',0
  170. mon db 'Poniedziałek',0
  171. tue db 'Wtorek',0
  172. wed db 'Środa',0
  173. thu db 'Czwartek',0
  174. fri db 'Piątek',0
  175. sat db 'Sobota',0
  176.  
  177. section .bss
  178. buffer: resb 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement