inchipuie-ti ca int 21h este "ceva" ce apeleaza o functie. Dar functia apelata de aceasta comanda este anume "2h" (dar citirea unui caracter este efectuata de functia "8h"- adica mov ah,8h). INT 21H este o intrerupere care poate apela un sir intreg de functii, dar anume functia "2h" este cea care afiseaza pe ecran, si afiseaza anume ceea ce se afla in registrul DL - un caracter - te intrebi de ce un caracter? Deoarece in DL se poate incarca doar 8biti - adica codul Hexazecimal al unui caracter - daca doresti sa afisezi un sir intreg trebuie in DX (nu DL dar DX, unde DX = DH + DL)- deja sa introduci o adresa, din memorie, la care se afla un sir de caractere, o propozitie, DAR in loc de 2h incarci in ah functia 9h care afiseaza sirul de caractere aflat la adresa din registrul DX. Si deci
jmp start; Start program... ;===================== msg db "Hello World.$"; O variabila de tip string cu o valoare. ;===================== start: mov ah,09; subfunctia 9 afiseaza un sir mov dx,offset msg; DX indica la (detine adresa ) sir int 21h; afiseaza mesajult exit: mov ah,4ch;subfunctia 4C - iese din program mov al,00; codul de iesire 0 int 21h
--------------------- Exista o aplicatie destul de comoda pentru programare in Assembler http://www.flatassembler.net/
sl4v4...inchipuie-ti ca int 21h este "ceva" ce apeleaza o functie....
Clar, da iaca o aparut alte intrebari, asta pentru ca eu is incepator si stiu putin de tot... - mov al,00 ; codul de iesire 0 - ce este codul de iesire si pentru ce el se foloseste? - ce este START: si EXIT: si pentru ce se folosesc?
De obicei codul de iesire reprezinta - eroarea de terminare a programului daca a fost inchis din cauza unei erori sau nu (0 - iesire fara eroare; >1 iesire cu eroare), este bine sa setezi valoarea "al = 0" deoarece acest registru poate contine si alte valori setate cu totul de alt program.... astfel cind programul se termina conditioneaza si indica altor elemente din sistemul de operare ca programul s-a terminat din cauza unei erori
START, EXIT - reprezinta etichete - (In Pascal: Label) daca observi prima linie este JMP START - dupa cum stii, executia oricarui program are loc linie cu linie - deci..... la jmp START el face un salt la eticheta START: si continua mai departe executia comenzilor rind cu rind, trecind de eticheta EXIT: (aceasta eticheta este prezenta sub forma triviala (in exemplul de mai sus) si nu are insemnatate - numai pentru a delemita vizual partile codului)
inchipuie-ti ca int 21h este "ceva" ce apeleaza o functie. Dar functia apelata de aceasta comanda este anume "2h" (dar citirea unui caracter este efectuata de functia "8h"- adica mov ah,8h).
INT 21H este o intrerupere care poate apela un sir intreg de functii, dar anume functia "2h" este cea care afiseaza pe ecran, si afiseaza anume ceea ce se afla in registrul DL - un caracter - te intrebi de ce un caracter? Deoarece in DL se poate incarca doar 8biti - adica codul Hexazecimal al unui caracter - daca doresti sa afisezi un sir intreg trebuie in DX (nu DL dar DX, unde DX = DH + DL)- deja sa introduci o adresa, din memorie, la care se afla un sir de caractere, o propozitie, DAR in loc de 2h incarci in ah functia 9h care afiseaza sirul de caractere aflat la adresa din registrul DX. Si deci
jmp start; Start program...
;=====================
msg db "Hello World.$"; O variabila de tip string cu o valoare.
;=====================
start:
mov ah,09; subfunctia 9 afiseaza un sir
mov dx,offset msg; DX indica la (detine adresa ) sir
int 21h; afiseaza mesajult
exit:
mov ah,4ch;subfunctia 4C - iese din program
mov al,00; codul de iesire 0
int 21h
---------------------
Exista o aplicatie destul de comoda pentru programare in Assembler
http://www.flatassembler.net/
De obicei codul de iesire reprezinta - eroarea de terminare a programului daca a fost inchis din cauza unei erori sau nu (0 - iesire fara eroare; >1 iesire cu eroare), este bine sa setezi valoarea "al = 0" deoarece acest registru poate contine si alte valori setate cu totul de alt program.... astfel cind programul se termina conditioneaza si indica altor elemente din sistemul de operare ca programul s-a terminat din cauza unei erori
START, EXIT - reprezinta etichete - (In Pascal: Label)
daca observi prima linie este JMP START - dupa cum stii, executia oricarui program are loc linie cu linie - deci..... la jmp START el face un salt la eticheta START: si continua mai departe executia comenzilor rind cu rind, trecind de eticheta EXIT: (aceasta eticheta este prezenta sub forma triviala (in exemplul de mai sus) si nu are insemnatate - numai pentru a delemita vizual partile codului)