Készítsen VIZSGA3.COM programot, amely a képernyő bal felső sarkában megjeleníti az egérgombok pillanatnyi állapotát. Azaz a "bal", "jobb", "mindkettő", "egyik sem" szövegeket írja ki, attól függően, hogy éppen melyik gomb van lenyomva. Kilépés: ha az egérkurzort a bal felső sarokba visszük! start: mov ax,3 mov ax,1 int 33h mov si,5 mov ax,3 int 33h and cx,-8 and dx,-8 add cx,dx cmp cx,0 jz kilep cmp bx,si jz ciklus ; ha nem valtozott akkor vissza az elejere mov si,bx cmp bx,1 mov dx,offset bal jz kiir cmp bx,2 mov dx,offset jobb jz kiir cmp bx,3 mov dx,offset mind2 jz kiir mov dx,offset egyikse kiir: mov ax,2 int 33h mov ax,1 int 33h jmp ciklus kilep: bal db 'bal ',8,8,8,8,8,8,8,8,8,'$' jobb db 'jobb ',8,8,8,8,8,8,8,8,8,'$' mind2 db 'mind2 ',8,8,8,8,8,8,8,8,8,'$' egyikse db 'egyik sem',8,8,8,8,8,8,8,8,8,'$
Készítsen "ELDONT.COM" Assembly programot, amely 1. letörli a képernyőt, 2. kiírja: "Üssön le maximum 10 betűt vagy számot, Esc, Q, q - vége!", 3. és a leütött billentyűket megvizsgálja, betű, vagy szám és kiírja a képernyőre. A program a 10. leütött billentyűre, Esc-re, "q"-ra vagy "Q"-ra érjen véget (amelyik előbb bekövetkezik). mov dx,offset msg mov cx,10 mov ah,8 cmp al,27 jz kilep cmp al,'q' jz kilep cmp al,'q' jz kilep mov dl,al or al,32 ; kisbetusse convertal cmp al,'z' ja semmi cmp al,'a' mov dx,offset betu jae kiir cmp al,'9' ja semmi cmp al,'0' jb semmi mov dx,offset szam kiir: semmi: loop ciklus kilep: msg db 'Usson le max 10 betut vagy szamot, Esc,Q,q - vege',13,10,'$' betu db '-betu',13,10,'$' szam db '-szam',13,10,'$' code ends end start
Készítsen VIZSGA3.COM programot, amely képernyőtörlés után elszámol 99-től l-ig (visszafelé). A számokat egyesével írja ki, egymás alá, várjon egy billentyű leütésére és Esc-re azonnal érjen véget. start: mov ax,3 mov cx,99 mov bl,10 mov ax,cx div bl cmp al,0 jz kicsi add al,'0' mov dl,al push ax pop ax kicsi: add ah,'0' mov dl,ah mov mov int dx,offset crlf ah,9 21h loop ciklus mov ah,8 crlf db 13,10,'$'
Készítsen "SZIA.COM" Assembly programot, amely 1. letörli a képernyőt, 2. megkérdezi "Hogy hívnak?" és bekér egy nevet, amely: mov dx,offset whoru mov cx,10 mov di,offset nev mov ah,8 cmp al,13 jz vege mov [di],al inc di mov dl,al loop ciklus vege: cmp cx,10 jz hiba mov dx,offset szia mov dx,offset nev jmp kilep hiba: mov dx,offset hibas kilep: whoru db 'Hogy hivnak? $' nev db '$$$$$$$$$$$' szia db 13,10,'Szia, $' hibas db 13,10,'Nem irtal be semmit!$' code ends end start
Készítsen "KERET.COM" Assembly programot, amely letörli a képernyőt és egy "O" betűkből álló keretet rajzol a képernyőre, majd kilép DOS-ba. A rajzolást ciklusokkal oldja meg, ne egy az egyben történő, O betűket és szóközöket tartalmazó string kiíratásával! mov ax,0b800h mov es,ax xor di,di mov cx,30 mov bx,20*80*2 vizszintes: mov byte ptr es:[di],'o' add di,bx mov byte ptr es:[di],'o' sub di,bx inc di inc di loop vizszintes xor di,di mov cx,21 mov bx,30*2 fuggoleges: mov byte ptr es:[di],'o' add di,bx mov byte ptr es:[di],'o' sub di,bx add di,160 loop fuggoleges code mov int ends end ah,4ch 21h start
Készítsen "NEHANY.COM" Assembly programot, amely 1. letörli a képernyőt, 2. udvariasan bekér egy egyjegyű számot és egy karaktert, és a karaktert annyiszor kiírja a képernyőre mov mov int mov int cmp jz xor mov sub ah,9 dx,offset msg1 21h ah,1 21h al,13 hiba cx,cx cl,al cl,'0' mov dx,offset msg2 mov ah,1 cmp al,13 jz hiba mov bl,al mov dl,13 mov dl,10 mov dl,bl loop ciklus jmp kilep hiba: mov dx,offset hibas kilep: msg1 db 'Kerek egy szamot: $' msg2 db 13,10,'Kerek egy karaktert: $' hibas db 'Nem irtal be semmit!$'
Készítsen "KIIR3.COM" Assembly programot, amely letörli a képernyőt és kiírja az "Assembly" szót a következőképpen: A As Ass xor bx,bx inc bx mov cx,bx mov si,offset msg kiir: lodsb ; = mov al,[si++] mov dl,al loop kiir mov dx,offset crlf cmp bx,8 jnz ciklus kilep: msg db 'Assembly' crlf db 13,10,'$'
Készítsen VIZSGA3.COM programot. A felhasználó gondol egy 0 és 9 közé eső számot és a gép megpróbálja kitalálni, a "kisebb mint...?", "nagyobb mint...?" kérdésekkel. A felhasználó az I betűt üti le, ha a feltett kérdés igaz, H-t, ha hamis. Az elején egy rövid üzenetben tájékoztassa a felhasználót a teendőkről! mov dx,offset msg mov bl,0 mov cl,9 cmp bl,cl jae megvan mov dx,offset km mov dl,cl add dl,bl inc dl shr dl,1 add dl,'0' sub dl,'0' mov ah,1 or al,32 cmp al,'i' jz igen mov bl,dl jmp ciklus igen: mov cl,dl dec cl jmp ciklus megvan: mov dx,offset r mov dl,bl add dl,'0' msg db 'Gondolj 1 szamra 0..9 kozott es en kitalalom',13,10,'$' km db 13,10,'Kisebb mint (I/N) $' r db 13,10,'A szamod: $'
Készítsen "UGRIK.COM" Assembly programot, amely letörli a képernyőt, és kiírja az angol ABC betűit a-tól z-ig úgy, hogy minden betű kiírása után vár egy billentyű lenyomására, és - Esc, "q", "Q" esetén azonnal véget ér a program, - a szóközre (space) 5 betűt ugrik előre, - a Backspace-re 5-öt hátra, mov dx,offset help mov dl,'a' mov ah,8 cmp al,27 jz kilep cmp al,'q' jz kilep cmp al,'q' jz kilep cmp al,32 jz space cmp al,8 jz backspace inc dl vege: cmp dl,'z' jbe ciklus jmp kilep space: add dl,5 jmp vege backspace: sub dl,5 jmp vege kilep: help db 'kilepes=esc/q/q Space=+5 Backspace=-5 ugras',13,10,'$'
Készítsen "KISNAGY.COM" Assembly programot, amely letörli a képernyőt, bekér betűket, amelyeket úgy ír ki, hogy kisbetű helyett nagybetűt és nagy helyett kicsit! A program a 10. leütött billentyűre, Esc-re, "q"-ra vagy "Q"-ra érjen véget (amelyik előbb bekövetkezik). mov ah,8 ; bill bekeres cmp al,27 ; meglesi hogy ESC-e jz kilep xor al,32 ; ellenkezojere allitja azt a bitet ami nagy/kisbetukert felel mov dl,al ; dl-be atrakja a modositott betut or al,32 ; al-ban levo betut kisbetusse konvertalja igy csak 'q'-ra kell vizsgalni cmp al,'q' jz kilep ; kiirja a betut jmp ciklus kilep: code ends end start
Készítsen "KIIR2.COM" Assembly programot, amely letörli a képernyőt és kiírja az "Assembly" szót a következőképpen: Assembly ssembly embly stb. mov cx,8 xor bx,bx mov dx,offset msg add dx,bx ; eltolas merteke inc bx mov add int dx,offset bck ; kurzort jo helyre viszi dx,bx ; eltolas merteke 21h loop ciklus msg db 'Assembly',10,'$' bck db 8,8,8,8,8,8,8,8,'$'
Készítsen "FERDE1.COM" Assembly programot, amely letörli a képernyőt, udvariasan bekér egy szöveget (befejezés Enterre), amelyet az ábrán látható módon ferdén kiír a képernyőre. mov dx,offset welcome mov di,offset s xor cx,cx mov ah,8 cmp al,13 jz kiir stosb ; = mov [di],al ; inc di mov dl,al inc cx jmp ciklus kiir: mov si,offset s cmp cx,0 jz hiba mov ax,0b800h ; kepernyo memoria cime mov es,ax mov di,320 ; 3. sor 1. karater pozicioja ciklus2: movsb ; mov al,[si++] ; mov es:[di++],al add di,161 loop ciklus2 jmp vege hiba: mov dx,offset hibas vege: s db '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$' welcome db 'Irj be 1 szoveget: $' hibas db 'Nem irtal be semmit!$'
Készítsen VIZSGA3.COM programot, amely letörli a képernyőt és megjeleníti a leütött billentyűket a képernyőn egészen addig, míg az ABC szó betűit nem írjuk be (bármilyen sorrendben), ekkor véget ér. Az elején egy rövid üzenetben tájékoztassa a felhasználót a teendőkről! xor bh,bh ; utolso 3 bit tarolja a b c leutottseget mov ah,1 or al,32 ; kisbetusse konvertal sub al,'a' ; betuket 0..26 tartomanyra kepezi mov cl,al shl ah,cl ; ha al='a' akkor ah=1, al='b'-> ah=2, al='c'->ah=4 or bh,ah ; ha a/b/c-t utott akkor bh-ban beallitja utolso 3bitet amelyiket leutotte and bh,7 ; elso 5bitet 0-ra allitja cmp bh,7 ; ha bh=00000111 akkor kilep jnz ciklus vege: code ends end start
Készítsen VIZSGA3.COM programot, amely képernyőtörlés után beolvas egy szöveget (max. 10 karakter, befejezés Enterre) és kiírja úgy, hogy a magánhangzók után a "-va", "-ve" stb. betűket is kiírja. Példa: beírjuk: balaton, a program kiírja: bavalavatovon mov dx,offset welcome mov di,offset msg ; itt tarolom a bekert szoveget add di,2 ; 13,10-et nem akarom felulirni xor dh,dh ; leutott karakterek szama mov ah,1 cmp al,13 jz kiir inc dh stosb ; [di]:=al mov dl,al ; elmentjuk a karaktert dl-be mov cx,5 mov si,offset mgh ismgh: lodsb ; al<-[si++] cmp al,dl jz mghyes loop ismgh jmp ciklus ; ha idaig jut akkor ez msgh mghyes: mov al,'v' stosb ; v-t tarolja el mov al,dl stosb ; most a mgh-t tarolja el jmp ciklus kiir: ; kiirashoz keszul cmp dh,0 jz hiba mov dx,offset msg jmp kilep hiba: mov dx,offset hibas kilep: ; kiirja vmelyik szoveget amire dx mutat msg db 13,10,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$' mgh db 'aeiou' welcome db 'Irj be 1 szoveget: $' hibas db 'Nem irtal be semmit!$'
Készítsen "KETSHIFT.COM" Assembly programot, amely 1. letörli a képernyőt, 2. ezután kiírja a "Nyomja meg egyszerre mindkét SHIFT-et!" üzenetet, 3. és addig vár, amíg mindkét SHIFT nincs lenyomva, ekkor visszatér DOS-ba. mov dx,offset welcome ; valto bill allapot int 16h and al,3 ; 0-ra allitja az elso 6bitet cmp al,3 ; ha utolso 2bit=1 akkor zeroflag=0 lesz jnz ciklus welcome db 'Nyomd meg egyszerre mind2 SHIFT-et!$'
Készítsen VIZSGA3.COM programot, amely képernyőtörlés után elszámol 98-tól 2-ig (visszafelé) kettesével. A számokat egyesével írja ki, egymás alá, várjon egy billentyű leütésére és Esc-re azonnal érjen véget. mov cx,10 mov ax,cx mov bl,10 div bl cmp al,0 ; ha 2 jegyu a szam akkor 0<al mov bx,ax ; bx-be elmentem mert ax el fog romlani jz rovid mov dl,bl add dl,'0' rovid: mov dl,bh add dl,'0' mov dl,13 ; CRLF mov dl,10 dec cx loop ciklus var: mov ah,8 cmp al,27 jnz var kilep:
Készítsen "NEHANY.COM" Assembly programot, amely 1. letörli a képernyőt, 2. udvariasan bekér egy betűt és egy egyjegyű számot, 3. és kiírja az angol ABC betűit a megadott karaktertől, a megadott számút (lásd az ábrát). mov dx,offset kezdo mov ah,1 mov dl,al ; dl-be mentjuk a kezdo karaktert push dx mov dx,offset darab mov ah,1 xor cx,cx mov cl,al ; cl-be mentjuk a kezdo karaktert sub cl,'0' mov dl,13 mov dl,10 pop dx kiir: inc dl loop kiir kezdo db 'Add meg a kezdo betut:$' darab db 13,10,'Hany darabot:$'
Készítsen "KIIR1.COM" Assembly programot, amely letörli a írja az "Assembly" szót a következőképpen: mov cx,10 mov si,offset msg push cx kiir: lodsb ; al-ba beolvassa akt karaktert si poziciorol mov dl,al loop kiir pop cx loop ciklus msg db 13,10,'Assembly$'
Készítsen "FORDIT.COM" Assembly programot, amely letörli a képernyőt és egy megadott stringet fordítva kiír a következő sorba: - hármasért: a szöveget egy udvarias felszólításra kell begépelni, max. 10 karakterből állhat, befejezés Enterre mov dx,offset welcome mov di,offset msg xor cx,cx ; szoveg hossza beker: mov ah,1 cmp al,13 jz fordit stosb inc cx jmp beker fordit: mov dl,13 mov dl,10 dec di mov al,[di] mov dl,al dec di loop ciklus mov int ah,4ch 21h welcome db 'Irj be 1 szoveget:$' msg db '$$$$$$$$$$$$$$$$$$$$$'