Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Jgheab clasic forma "U"- ...

Reparatie plafoniera LED

Defect ciudat Videorecorder Panas...

lege de reglementare a shrinkflat...
 Care este cota parte la succesiun...

Camera auto DVR PNI Voyager S2600...

Cartelul din Carpati - mafia PNL ...

Trecut: Europa versus S.U.A. la c...
 Garantie apartament dezvoltator

Aplicație GPS cu zoom automa...

Ipad Pro & Air 2024

Service si revizii reprezentanta
 Ati returnat produse pe aliexpres...

Certificate de nastere digitale

Fitbit sau huawei band ?

Tatuator handpoke
 

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,316
  • Î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,482
  • Î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,258
  • Î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,316
  • Î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

    Guru Member

  • Grup: Senior Members
  • Posts: 10,003
  • Î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,258
  • Înscris: 24.02.2007
https://docs.microso...e?view=msvc-160

#15
byteworks

byteworks

    Member

  • Grup: Members
  • Posts: 868
  • Î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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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