Advertisement
plyp

boli mnie brzuch

Jan 20th, 2020
993
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Program segment
  2.  
  3. assume  cs:Program,ds:dane,ss:stosik
  4.  
  5. Start:
  6.             mov ax,dane
  7.             mov ds,ax              
  8.             mov ax,stosik
  9.             mov ss,ax
  10.             mov sp,offset szczyt
  11.  
  12.             xor ax,ax                  
  13.             xor dx,dx           ;00H odczyt zegara systemowego
  14.             int 1ah             ;Read System-Timer Time Counter ;przerwanie zegarowe ;impusly co 55 milisekund zliczane od poczatku uruchomienia PC
  15.             mov losowa,dl                                                                                            
  16.             xor ax,ax              
  17.             xor dx,dx
  18.  
  19.                
  20. petlaProgramu:
  21.  
  22. losowanieLinii:
  23.             ;wybieranie linii która zostanie zamaskowana
  24.        
  25.             xor ax,ax
  26.             inc losowa              ;wylosowana linia zwiekszona o 1 (działanie pętli random)
  27.             mov al,losowa    
  28.             mov si,ax               ;16 bitowy rejestr adresacji , indeksowy źródła danych
  29.             mov dl,losowanie(si)    ;nr linii którą losuje
  30.             mov losowaLinia,dl
  31.            
  32.             xor ax,ax
  33.        
  34.             mov al,160
  35.             mul losowaLinia     ;mnozenie wylosowanej liczby razy 160, zeby być na poczatku linii- 80 znakow w lini,
  36.                                
  37.             mov bx,ax           ;wynik (początek linii)do bx
  38.  
  39. kopiujDoBufora:
  40.        
  41.             cld     ; Clear Direction warunek na dodawanie (chcemy oby di i si sie zwiekszały tzn flaga kierunku wyczyszczona umożliwia zwiększanie indeksów)
  42.             mov     cx,80       ; licznik kopiowania znaków linii (80 znaków w linii)
  43.             push    ds         
  44.             pop     es         
  45.             push    ds          ; odkładam na stos ponieważ do ds chcę załadować to co jest pod adresem 0b800h
  46.             mov     ax,0b800h   ; początek obrazu przenoszony na monitor
  47.             mov     ds,ax
  48.             mov     si,bx       ; numer lini w bx
  49.             mov     di,offset buffor
  50.             rep     movsw       ;kopiuje bajty z ds:si do es:di , dodaje +2 do si i di(aby poruszac sie po kolejnych znakach),
  51.                                 ;zmniejsza cx o 1 (liczbę pozostałych znaków)
  52.                                 ;Move Data from String to String
  53.             pop ds              ;przywracamy adres dla ds
  54.  
  55. zaslonLinie:
  56.         ;wyswielenie belki (STOSW przekopiowuje z AX do ES:DI)     
  57.        
  58.             mov ax,0b800h          
  59.             mov es,ax          
  60.             mov di,bx           ; di numer linii
  61.             mov ax,9020h        ;w ah kolor ASCII bajt znaku (spacja)
  62.             mov cx,80           ;licznik
  63.             rep stosw           ;wyswietlanie spacji w linii
  64.                                 ;stos words                                                            
  65.                                
  66. opoznienie:                    
  67.         ;opoznienie czasowe (CX i DX razem) dziala ale niczego nie może być w CX dlatego uzyto petli zeby kilka razy uzyc pewnego DX     
  68.            
  69.                 mov     ah,86h
  70.                 mov     cx,16   ;(opoznienie 1s)
  71.                 xor     dx,dx
  72.                 int     15h
  73.                                
  74.            
  75. przywrocZBufora:
  76.         ;odtworzenie zawartosci linii (DS:SI do ES:DI , DS wskazuje już dane razem z zapamiętanym łańcuchem (ten pop DS),
  77.         ;ES wskazuje już początek okienka (przypisano w wyswietlaniu belki)              
  78.            
  79.                 mov     cx,80
  80.                 mov     ax,0b800h
  81.                 mov     es,ax
  82.                 mov     si,offset buffor
  83.                 mov     di,bx
  84.                 rep     movsw           ;peniesienie z ds:si do es:di (przesuniecie ds o si)
  85.            
  86. opoznienie2:           
  87.         mov     ah,86h
  88.                 mov     cx,16
  89.                 xor     dx,dx
  90.                 int     15h
  91.  
  92. czyWcisnietyPrzycisk:          
  93.             ;sprawdzenie czy wcisnieto przycisk                
  94.            
  95.             mov ah,1h        ;Sprawdza, czy znak jest w buforze (jezeli tak flaga zera jest czyszczona)
  96.             int 16h
  97.             jz petlaProgramu
  98.  
  99. koniec:
  100.             mov ah,4Ch
  101.             mov al,0h
  102.             int 21h  
  103.  
  104. Program ends
  105.  
  106. dane    segment
  107.  
  108. losowa      db 0            ;wygenerowana liczba
  109. losowaLinia     db 0            ;losowa
  110. buffor      DB 160 dup(?)       ;zawartość belki
  111. losowanie   db 19, 10, 3, 2, 2, 12, 7, 21, 21, 8, 13, 10, 3, 2, 6, 2, 9, 1, 10, 0, 24, 13, 24, 10, 20, 19, 1, 1, 7, 20, 2, 20, 13, 14, 20, 14, 13, 13, 17, 5, 20, 19, 6, 13, 17, 24, 15, 15, 17, 7, 1, 14, 12, 12, 24, 6, 0, 15, 17, 4, 3, 10, 1, 2, 3, 11, 9, 7, 18, 23, 16, 9, 2, 13, 8, 0, 14, 22, 11, 2, 7, 20, 9, 5, 4, 11, 6, 24, 22, 17, 24, 5, 22, 12, 13, 23, 20, 23, 22, 13, 12, 20, 17, 8, 14, 8, 4, 1, 18, 10, 8, 21, 4, 17, 6, 19, 14, 2, 17, 2, 7, 7, 13, 24, 10, 23, 5, 22, 3, 1, 19, 14, 15, 11, 23, 17, 4, 17, 3, 8, 10, 13, 21, 10, 15, 23, 3, 1, 24, 22, 8, 9, 7, 18, 12, 12, 8, 6, 23, 11, 17, 3, 11, 2, 6, 7, 8, 11, 9, 12, 17, 19, 19, 3, 11, 9, 19, 15, 23, 13, 24, 6, 10, 0, 21, 17, 23, 10, 0, 12, 6, 13, 20, 15, 0, 3, 4, 16, 13, 4, 12, 24, 2, 16, 21, 20, 13, 18, 2, 13, 10, 13, 16, 13, 13, 6, 21, 20, 10, 21, 10, 11, 15, 2, 10, 11, 0, 3, 16, 0, 2, 7, 12, 2, 0, 16, 8, 15, 12, 14, 7, 7, 8, 9, 22, 10, 22, 21, 4, 12, 8, 17, 16, 18, 4, 11  ;256 liczb od 0 do 24 ponieważ mamy 25 wierszy
  112.  
  113. dane    ends
  114.  
  115. stosik  segment
  116.  
  117.         dw 100h dup(0)
  118.  
  119. szczyt  label word
  120.  
  121. stosik  ends
  122.  
  123. end     start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement