Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Progr segment
- assume cs:Progr, ds:dane, ss:stosik
- start: mov ax,dane
- mov ds,ax
- mov ax,stosik
- mov ss,ax
- mov sp,offset szczyt
- mov ax,0b800h ;0b800h to adres poczatku pamieci obrazu
- mov es,ax ;przeniesienie do rejestru segmentowego
- mov cx,1920 ;licznik wykonania petli. Dekrementuje sie z kazdym jej wykonaniem
- mov di,0 ;zaczynamy od pierwszego znaku na ekranie, czyli lewego gornego rogu ekranu. Jest to nasz offset uzywany nizej
- mov al, 32 ;wstawienie znaku o kodzie 32 do rejestru al (32 to spacja)
- Czyszczenie:
- mov es:[di],al ;wstawienie znaku z rejestru al do miejsca w pamieci okreslanego przes rejestr es + offset
- add di,2 ;Trzeba zwiekszyc offset o dwa
- loop Czyszczenie ;petla wykona sie tyle razy, ile wynosi cx, czyli 1920
- mov di,240 ;srodek drugiego wiersza, bo konsola po wykonaniu programu przesuwa sie o jeden wiersz w dol
- mov bx,160 ; wiersz +1
- mov al, 65 ;znak 'A'
- mov cx,23 ;ilosc pieter piramidy
- mov dh,1 ;ilosc pozostalych do wypisania liter. Bedzie zwiekszana po kazdym wierszu
- mov dl,3 ;rejestr pomocniczy, ktorym bedziemy wyznaczac ilosc znakow w kolejnym wierszu
- Piramida:
- mov es:[di],al ;wpisanie zawartosci AL do pamieci obrazu
- add di,2 ;przesuniecie "kursora" o jedno miejsce w prawo na ekranie
- dec dh ;dekrementacja pozostalych znakow
- cmp dh,0 ;sprawdzenie, czy wszystkie znaki zostaly wypisane
- jnz Piramida ;jesli nie, to skaczemy do Piramida
- mov dh,dl ;ustawiamy ilosc pozostalych znakow na zawartosc rejestru pomocniczego, ktory jest o 2 wiekszy
- add dl,2 ;zwiekszamy rejestr pomocniczy o 2
- sub bx,4 ;odejmujemy 2 pozycje od bx, zeby w nastpenej linijce kursor nie byl w tej samej kolumnie
- add di,bx ;przechodzimy do nastpnego wiersza
- inc al ;nastepny znak w alfabecie
- loop Piramida ;petla wykona sie tyle razy ile jest w rejestrze cx, czyli 23
- ;konczenie programu
- koniec:
- mov ah,4ch
- mov al,0
- int 21h
- Progr ends
- dane segment
- dane ends
- stosik segment
- dw 100h dup(0)
- szczyt Label word
- stosik ends
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement