Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Code Segment
- assume CS:Code, DS:Data, SS:Stack
- Start:
- ;Feladat_1:
- ;==========================================================================
- ;1. feledat:
- ; Parancssori paraméter feldolgozás
- ; Olvasson be parancssori paraméterként egy számot az alábbi formában:
- ; Használja ezt a formátumot: "zh.exe -19"
- ; A paraméter egyetlen szám 00 és 99 között! 0 és 9 között a számokat 00 és 09
- ; módon adjuk meg.
- ; A fölösleges szóközöket nem kell lekezelni!!!!! Csak egy szóköz jelzi, hogy paraméter.
- ; A megadott paraméter egy színkód lesz, ennek 1/10-ed része pedig a kezdősebesség!
- ;
- ; Ha nincs paraméter megadva, akkor a default értékadás fusson le! Ha nem '-' a
- ; szóköz utáni karakter, akkor vegyük úgy, hogy nincs paraméter megadva!
- ;
- ; SI regiszteren keresztül számként adja tovább a következő feladatnak a
- ; színkódot és a kezdősebességet!
- ;
- ;==========================================================================
- mov ax, 3
- int 10h
- mov di, 80h
- mov dl, [di]
- cmp dl, 4
- jnz Default
- add di, 2
- mov dl, [di]
- cmp dl, "-"
- jnz Default
- mov al, [di+1]
- cmp al, "0"
- jc Default
- cmp al, ":"
- jnc Default
- sub al, 48
- mov dl, 10
- mul dl
- mov dl, [di+2]
- cmp dl, "0"
- jc Default
- cmp dl, ":"
- jnc Default
- sub dl, 48
- add al, dl
- mov cl, al
- xor ah, ah
- xor dx, dx
- mov bx, 10
- div bx
- mov ch, al
- mov si, cx
- jmp Init
- Default:
- mov cl, 60 ; színkód
- mov ch, 6 ; kezdősebesség
- mov si,cx
- Init:
- mov ax, Code
- mov DS, AX
- mov ah,9
- mov dx, offset feladat1
- int 21h
- mov dx, si
- mov ah, 02h
- int 21h
- mov dl, dh
- mov ah, 02h
- int 21h
- xor ax, ax
- int 16h
- ;==========================================================================
- ;2. feledat:
- ; Ferdehajítás VGA (320x200px, 8bit) módban
- ; 0,0 koordinátáról indulva rajzolja ki t=0-tól kezdve t=20 ideig a golyó
- ; (egyetlen pixel) röppályáját! A pixel szine és V0 kezdősebesség az előző
- ; feladatban megadott érték legyen (SI-ben)!
- ; videómemória címének képzése: y*320+x
- ; Sy = (t^2)/2
- ; Sx = V0 * t
- ; Verem: idő (iteráció, egyesével növekszik, NEM KELL HOZZÁ BIOS ÓRA!)
- ; DI: labda pozíciója
- ;**************************************************************************
- ;VGA mód
- mov ax, 13h
- int 10h
- mov ax, 0a000h
- mov es, ax
- ;kezdő koordináták
- mov cl,0 ;sor
- mov ch,0 ;oszlop
- mov di,cx
- ;"idő" a veremben (t0)
- mov ax,0
- push ax
- RajzolasEleje:
- ;Pozíció számítása
- ;Sy
- pop ax
- push ax
- mul ax
- shr ax,1
- mov cl, al
- ;Sx
- pop ax
- push ax
- mov bx, si
- mov bl, bh
- xor bh, bh
- mul bx
- mov ch, al
- mov di, cx
- ;Pozíció átalakítása, hogy címezhető legyen vele a memória
- mov cx, di
- xor ah, ah
- mov al, cl
- mov bx, 320
- mul bx
- mov cl, ch
- xor ch, ch
- add ax, cx
- ;Pont kirajzolása
- mov cx, di
- mov di, ax
- mov ax, si
- xor ah, ah
- mov es:[di], al
- mov di, cx
- ;Idő növelése
- pop ax
- inc ax
- cmp ax, 21
- jz RajzolasVege
- push ax
- jmp RajzolasEleje
- RajzolasVege:
- Var:
- xor ax,ax
- int 16h
- Program_Vege:
- mov ax, 3
- int 10h
- pop ax
- mov ax, 4c00h
- int 21h
- feladat1 db "1. feladat, parancssori parameterek: $"
- Code Ends
- Data Segment
- Data Ends
- Stack Segment
- Stack Ends
- End Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement