Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare bec far VW Touran 1T3

Plata impozit PF

Ce parere aveti de viteza/ modul ...

Love Lies Bleeding - 2024
 Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila
 Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 

Limbaj de asamblare (TASM)

- - - - -
  • Please log in to reply
14 replies to this topic

#1
Cristina443

Cristina443

    New Member

  • Grup: Candidate Members
  • Posts: 12
  • Înscris: 25.10.2020
Buna ziua. Poate sa imi explice si mie cineva cum functioneaza programul acesta si ce face fiecare randulet scris. Va rog mult Posted Image . Este pentru un proicet si trebuie sa il explic si nu inteleg nimic Posted Image Posted Image. Multumesc anticipat Posted Image

DOSSEG
   .MODEL SMALL
   .STACK 100h
   .DATA
MAXIMUM_STRING_LENGTH  EQU  1000
StringToReverse  DB  MAXIMUM_STRING_LENGTH DUP(?)
ReverseString    DB  MAXIMUM_STRING_LENGTH DUP(?)
   .CODE
   mov  ax,@data
   mov  ds,ax   
   mov  ah,3fh
   mov  bx,0   
   mov  cx,MAXIMUM_STRING_LENGTH
   mov  dx,OFFSET StringToReverse
   int  21h
   and  ax,ax   
   jz   Done   
   mov  cx,ax   

   push cx
   mov  bx,OFFSET StringToReverse
   mov  si,OFFSET ReverseString
   add  si,cx
   dec  si   
ReverseLoop:
   mov  al,[bx]
   mov  [si],al
   inc  bx   
   dec  si
   loop ReverseLoop   
   pop  cx   
   mov  ah,40h
   mov  bx,1
   mov  dx,OFFSET ReverseString
   int  21h   
Done:
   mov  ah,4ch   
   int  21h
   END

#2
rex

rex

    Senior Member

  • Grup: Senior Members
  • Posts: 4,619
  • Înscris: 16.06.2004
pai tu vrei sa iti facem treaba ta? vii aici daca ai ceva nelamuriri, nu vii sa iti explicam tot programul ca nu suntem profesorii tai.

#3
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,268
  • Înscris: 06.01.2007
Cauta despre int 21H, practic programul tau pregateste registrii si datele pentru apelul int 21H.
Functie de datele prezente in AH, apelul int 21H face diverse chestii. Documentatia o gasesti si tu pe net, n-o stie nimeni pe de rost.

Cat despre explicarea  fiecarei liniute, sper ca glumesti.

#4
Cristina443

Cristina443

    New Member

  • Grup: Candidate Members
  • Posts: 12
  • Înscris: 25.10.2020

 rex, on 22 decembrie 2020 - 15:31, said:

pai tu vrei sa iti facem treaba ta? vii aici daca ai ceva nelamuriri, nu vii sa iti explicam tot programul ca nu suntem profesorii tai.

Nu mi-o lua în nume de rău dar profesoara nu a venit de la începutul anului la ore, și nu o înlocuiește nimeni, deaia am întrebat

#5
Cristina443

Cristina443

    New Member

  • Grup: Candidate Members
  • Posts: 12
  • Înscris: 25.10.2020

 maccip, on 22 decembrie 2020 - 16:39, said:

Cauta despre int 21H, practic programul tau pregateste registrii si datele pentru apelul int 21H.
Functie de datele prezente in AH, apelul int 21H face diverse chestii. Documentatia o gasesti si tu pe net, n-o stie nimeni pe de rost.

Cat despre explicarea  fiecarei liniute, sper ca glumesti.

Multumesc frumos am sa caut, profesoara nu a venit deloc la ore și nu ne-a explicat nimeni acest program, cred ca am exagerat cu fiecare liniuta :)) voiam în mare doar o explicație pe scurt. Mulțumesc

#6
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005
MAXIMUM_STRING_LENGTH  EQU  1000
StringToReverse  DB  MAXIMUM_STRING_LENGTH DUP(?)
ReverseString	DB  MAXIMUM_STRING_LENGTH DUP(?)
presupun ca programul ofera textul de la dreapta la stanga

#7
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Il executi pas-cu-pas prin debugger si urmaresti ce se intampla la fiecare linie. Se vor modifica valorile din registrii, memorie si se va citi/afisa in consola

http://spike.scu.edu...interrupts.html

#8
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,268
  • Înscris: 06.01.2007
Primul apel int 21h citeste niste caractere dintr-un fisier.
Al doliea apel int 21h scrie cate un caracter, in bucla, in ordine inversata in prealabil  de catre codul de dinainte.
Ultimul apel int 21h iese din program.

Deapănă-l si tu sa vezi cum lucreaza.

#9
rickysyv

rickysyv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,620
  • Înscris: 08.03.2008

 MarianG, on 22 decembrie 2020 - 16:51, said:

MAXIMUM_STRING_LENGTH EQU 1000
StringToReverse DB MAXIMUM_STRING_LENGTH DUP(?)
ReverseString DB MAXIMUM_STRING_LENGTH DUP(?)
presupun ca programul ofera textul de la dreapta la stanga

You have a firm grasp of the obvious!

#10
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,957
  • Înscris: 24.04.2013
  • Programelul incepe cu initalizarea registrului care indica unde este segmentul de date.
  • Primul int 21h citeste o linie de la standard input (implicit de la tastatura, daca nu l-ai redirectat cu < in linia de comanda le executia programelului). Daca nu a primit nimic (0 bytes cititi) se termina.
  • Apoi urmeaza pregatirea registrilor pentru ciclu si ciclul propriu-zis care copiaza caracterele in ordine inversa din bufferul unde a citit intr-un alt buffer.
  • Urmeaza un int 21h care scrie sirul inversat la standard output (= implicit ecranul, daca nu l-ai redirectat cu >).
  • Ultimul int 21h termina programelul.
Cred, dar nu sunt foarte sigur, ca e si un oarece bug pe-acolo. Cand citeste de la stdin, se opreste la sfarsit de linie dar cred ca acesta nu e inclus in sirul citit. La scriere, scrie continutul inversat dar uita sa scrie si un terminator de linie. Executat o singura data intr-o consola bug-ul nu prea e vizibil, ca dupa ce se termina programelul oricum este afisat prompt-ul sistem precedat de un sfarsit de linie asa ca acesta nu se ‘lipeste’ de textul deja scris. Daca programelul ar fi modificat sa citeasca si inverseze mai multe linii la rand, acestea ar aparea una ‘lipite’ una in continuarea celeilalte.

Edited by sags, 22 December 2020 - 18:55.


#11
Cristina443

Cristina443

    New Member

  • Grup: Candidate Members
  • Posts: 12
  • Înscris: 25.10.2020
Va mulțumesc tuturor pentru răspunsuri ❤️ am sa mai caut despre acest  program, sa citesc pentru cultura mea generala

#12
marco71

marco71

    Active Member

  • Grup: Members
  • Posts: 1,487
  • Înscris: 23.11.2004
cauta pe net documentatie despre functii D.O.S. (int 21h); vei recunoaste usor ce functie e folosita in program daca vezi valoarea cu care se incarca registrul ah chiar inainte de apelul int 21h (ex. functia D.O.S. 4c hexa de terminare a unui program, de la sfarsitul programelului postat de tine, incarca in registrul ah valoarea 4c la sectiunea Done)
... cel putin asa imi aduc aminte, ca ultima data cand am programat ASM a fost acum 25 de ani :)

Edited by marco71, 24 December 2020 - 13:16.


#13
rickysyv

rickysyv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,620
  • Înscris: 08.03.2008
După compilarea programului cred că rezultă un executabil pe 16 biți care nu rulează sub Windows. Ai nevoie de ceva emulator gen DosBox pentru testare. Există oare și compilator ASM pentru Windows 10?

#14
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
https://docs.microso...e?view=msvc-160

#15
byteworks

byteworks

    Member

  • Grup: Members
  • Posts: 865
  • Înscris: 04.04.2003

 rickysyv, on 25 decembrie 2020 - 06:20, said:

După compilarea programului cred că rezultă un executabil pe 16 biți care nu rulează sub Windows. Ai nevoie de ceva emulator gen DosBox pentru testare. Există oare și compilator ASM pentru Windows 10?

Cum altfel? Este ultimul pas necesar pentru a traduce codul scris in orice altceva in instructiuni pe care procesorul le poate rula direct (set nativ de instructiuni, cod masina). Wikipedia

Edited by byteworks, 25 December 2020 - 12:35.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate