A már pascalból jól ismert gotoxy és writeto eljárásokat tartalmazza a program. Egy stringet lehet kiírni vele a DOS képernyőn bárhova pozicionálva. A program masm 6.11 -el lett fordítva, és notepad++ -ban szerkesztve. Valószínű nem ez lesz az utolsó assembly program, amit közzé teszek. De egyelőre meg kell elégednetek ennyivel :)
-
.model small
-
.stack
-
.data ;adatszegmens hasznalata
-
;konstansok felvetele
-
cr = 13 ;carrige return (kocsi vissza)
-
lf = 10 ;line feed (új sor)
-
bckspc = 8 ;backspace karakter
-
;valtozok felvetele (dollar a lezaro karakter)
-
msgstr db 'Hello haver $'
-
msgstr2 db 'Mizu? $'
-
-
msgstr3 db 'Konkret pozicioba $'
-
-
dcrlf db cr,lf,'$' ;soremeles
-
.code
-
-
-
exit macro ;Program megszakitasa. Ez mindig kell a program vegen
-
mov ah, 04ch ;hexa 4C az AH regiszterben utasit a kilepesre
-
int 21h ;Megszakitas. dos funkciok hivasa
-
endm
-
-
clrscr macro ;DOS kepernyo torlese
-
push ax ;ax mentese
-
mov ax, 3 ;3-as bekerul ah-ba. Utasitas kepernyo torlesere
-
int 10h ;hexa 10-es megszakitas. Kepernyo driver hivasara
-
pop ax
-
endm
-
-
write macro string ;szoveg kiirasa kepernyore
-
push ax ;regiszterek mentese
-
push dx
-
-
mov ax, @data ;adatszegmens kezdozime ax-be
-
mov ds, ax ;ezt betoltjuk az adatszegmens regiszterbe
-
-
mov dx, offset string ;a string offset cimenek betoltese dx-be
-
-
mov ah, 9 ;ah-ban 9 jelenti, hogy stringet kell kiirni
-
int 21h ;dos megszakitas
-
-
pop dx ;regiszterek visszatoltese
-
pop ax
-
endm
-
-
writeln macro string ;szoveg kiiras es soremeles
-
write string
-
write dcrlf
-
endm
-
-
-
gotoxy macro x, y ;kurzor pozicionalasa x, y pozicioba (x=oszlop, y=sor)
-
push dx ;hasznalt regiszterek mentese
-
push ax
-
push bx
-
-
mov dh, x ;dh-ba kell kerulnie az oszlopszamnak
-
mov dl, y ;es dl-be kell kerulni a sorszamnak
-
mov ah, 2 ;A kettes kod a kurzor pozicionalasa
-
-
xor bh, bh ;Hasznalt kepernyo lap szama 0
-
int 10h ;képernyő driver hivasa
-
-
pop bx ;regiszterek visszatoltese
-
pop ax
-
pop dx
-
endm
-
-
writeto macro string, x, y ;szoveg kiirasa x, y pozicioba
-
gotoxy x, y ;eloszor pozicionalas
-
write string ;majd kiiras
-
endm
-
-
write_char macro chr ;egy karakter kiirasa
-
push ax ;regiszterek mentese
-
push dx
-
-
mov dl, chr ;dl-be keruljon a karakter
-
mov ah, 2 ;2-es bekerul ah-ba. Utasitas karakter kiirasara
-
int 21h ;megszakitas hivas. DOS funkciok eleresere
-
-
pop dx ;regiszterek visszatoltese
-
pop ax
-
endm
-
-
main proc ;foprogram
-
clrscr ;kepernyo torlese
-
writeln msgstr ;ket szoveg kiirasa kulon sorban
-
writeln msgstr2
-
-
writeto msgstr3, 4, 3 ;szoveg kiirasa 3 sor 4 oszlopatol
-
exit ;kilepes a programbol;
-
main endp
-
-
-
end main ;A teljes program vege. Meg kell adni, hogy melyik
-
;eljaras lesz a foprogram
Kategóriák:

Új hozzászólás