Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. .686
  2. .model flat
  3. public _przeciwna
  4. extern _MessageBoxA@16 : proc
  5. .data
  6. swieta dd 10101001010100010100110110000111b
  7. dni db 150 dup (?)
  8. dziesiec db 10
  9. tytul db 'kalendarz w dupe jebany',0
  10. .code
  11.  
  12. dodajDzien proc
  13. ;dodaje do ciagu znakow w miejscu w rejestrze esi date, dzien/msc w al
  14. mov ah, 0
  15. cmp al, 9 ;sprawdzenie czy numer dnia/ msc jestr 2cyfrowy
  16. ja dwucyf
  17. add al, '0' ;jesli nie po prostu wrzucam te liczbe jako znak
  18. mov [esi], al
  19. inc esi
  20. powrot:
  21. ret
  22.  
  23. dwucyf:
  24. mov ah, 0
  25. div byte ptr dziesiec ;podzielenie przez dziesiec zeby odzielic cyfry
  26. add ah, '0'
  27. add al, '0'
  28. mov [esi], al ;wynik dzielenia czyli liczba dziesiatek w al
  29. inc esi
  30. mov [esi], ah ;reszta czyli liczba jednosci w ah
  31. inc esi
  32. jmp powrot
  33. dodajDzien endp
  34.  
  35. ;przeciwna to main, nie chce mi sie zmieniac szablonu z programowania mieszanego
  36. _przeciwna PROC
  37.  
  38. mov cl, 1
  39. lea ebx, swieta
  40.  
  41. mov al, 4
  42. mul cl ;kazdy miesiac zajmuje 4 bajty
  43. sub al, 4 ;miesiace sa nuerowane od 1 a nie 0
  44. movzx eax, al
  45. add eax, ebx ;poprawienie adresu w ebx na konkretny miesiac
  46. mov ebx, [ebx]
  47. lea esi, dni ;wrzucenie do esi adresu ypisywanego stringa na potrzeby procedury dodajDzien
  48. mov dl, 1 ;licznik petli, czyli dni miesiaca
  49. ptl:rcl ebx, 1 ;sprawdzenie czy swieto
  50. jnc dalej
  51. mov al, cl ;wrzucenie miesiaca
  52. call dodajDzien
  53. mov [esi],byte ptr '.'
  54. inc esi
  55. mov al, dl ;wrzucenie dnia miesiaca
  56. call dodajDzien
  57. mov [esi],byte ptr ' '
  58. inc esi
  59. dalej:inc dl
  60. cmp dl, 32
  61. jb ptl
  62.  
  63. mov [esi], byte ptr 0
  64.  
  65. push 0
  66. push OFFSET tytul
  67. push OFFSET dni
  68. push 0
  69. call _MessageBoxA@16
  70.  
  71. or cl, cl ;breakpoint tu sobie daje xd
  72.  
  73. ret
  74. _przeciwna ENDP
  75. END
  76. ; wczytywanie i wyświetlanie tekstu wielkimi literami
  77. ; (inne znaki się nie zmieniają)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement