1855

Intrebare_2

mov ah,2h mov dl, add dl, int 21hDe ce variabila care dorim sa o afisam trebuie incarcata anume in registrul dl?
0
sl4v406 Декабря 2005, 14:03
S
sl4v406 Декабря 2005, 14:03

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/

0
  • 0
  • 0
v@dim06 Декабря 2005, 21:59
V
v@dim06 Декабря 2005, 21:59
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?

0
  • 0
  • 0
sl4v408 Декабря 2005, 11:00
S
sl4v408 Декабря 2005, 11:00

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)

0
  • 0
  • 0
v@dim08 Декабря 2005, 20:22
V
v@dim08 Декабря 2005, 20:22
sl4v4
...De obicei codul de iesire reprezinta - eroarea de terminare...

da uite la program ca jmp start cind se executa se sare peste declararea variabilea MSG...

0
  • 0
  • 0
sl4v412 Декабря 2005, 13:15
S
sl4v412 Декабря 2005, 13:15
v@dim
...da uite la program ca jmp start cind se executa se...

msg (numele variabilei) db (dimensiunea) "Hello World.$" (valoarea)

Aceste linii niciodata nu se executa (nici nu trebuie) ele de obicei se pun la sfirsitul programului chiar dupa "int 21h" de aceea se face jmp start;

Ar fi trebuit sa-scriu mai explicit codul :p .... sorry

v@dim
...da uite la program ca jmp start cind se executa se...

da .... inca ceva, la prima intrebare a ta, eu ti-am recomandat o carte destul de buna, multe exemple:
vezi: http://www.forum.md/Discuss.aspx?id=742555&page=1#repl10

0
  • 0
  • 0