Bun venit pe SkullBox!

Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
  Pagini: [1]
  Imprimă  
Citeste un string de la tastatura  (Vizualizari 970)
Shocker
*

Deconectat Deconectat

Mesaje: 410

WWW
Citeste un string de la tastatura, Iun 15, 2007, 22:31

Citat
L.E. Shock.spunemi si mie exista vreo "procedura" prin care se citeste o variabila de la tastatura ? ( ca read in pascal, daca intelegi )

Cum zicea si DarkByte, ceva procedura nu e, dar poti sa faci altcumva. O varianta ar fi urmatoarea:
[folositi TASM pentru compilare]

Cod:

DOSSEG
.MODEL SMALL
.STACK 30h
.DATA

buffer  db  "String-ul e:                                                   "
;spatiile din buffer [49] se vor umple cu caracterele introduse la tastatura, iar la sfarsitul bufferului [al 50-lea spatiu] caracterul $ care semnifica sfarsitul string-ului
.CODE

START:
mov bx,13    ;sa inceapa umplerea bufferului imediat dupa "String-ul e:"
mov ax,seg buffer
mov ds,ax

loopu:
mov ah,0h
int 16h      ;citeste caracter de la tasta

cmp al, 8    ;e backspace?
je rem       ;daca da, sari la "rem"

mov dl,al    
mov ah,2    
int 21h      ;tipareste si pe ecran caracterul introdus

mov [ds:buffer+bx], al  ;scrie caracterul citit de la tastatura in buffer [bx e pozitia caracterului citit]
inc bl       ;mareste pozitia cu 1
cmp bl, 63
jge gata     ;a ajuns bl la 63? adica 13+50 caractere? daca da atunci am umplut bufferul, sarim la tiparirea string-ului

cmp al, 0dh  ;a apasat enter?
jne loopu    ;daca nu, mergi inapoi la "loopu", reia totul de la citirea caracterului

gata:
mov ax,seg buffer
mov ds,ax
mov [ds:buffer+bx], '$'  ;adauga caracterul "$" la sfarsitul stringului, sa stie unde se termina stringul

mov dx,offset buffer
mov ah,9
int 21h      ;tipareste string-ul

mov ax,4c00h
int 21h      ;iesi din program

rem:         ;se ajunge aici doar cand e apasat backspace
mov [ds:buffer+bx], '$' ;inlocuieste ultimul caracter cu $, care semnifica ca inainte de ultimul caracter se termina string-ul
cmp bx,13
jbe loopu    ;bx <= 13? Daca da, atunci am ajuns la inceputul string-ului, sari la "loopu"
dec bx       ;daca nu, atunci scade BX cu 1, ca sa se evidentieze ca a fost sters ultimul caracter

;sa mutam si cursorul cu un spatiu mai inapoi
mov dh,0     ;randul 0
mov dl,bl    ;coloana dl
sub dl,12    ;scadem din dl pe 12 [lungimea string-ului "String-ul e:"]
mov ah,02h   ;functia de mutare a cursorului
xor bh,bh    ;in bh se specifica "video page", noi il facem 0
int 10h      ;apeleaza functia de mutare a cursorului a INTterrupt-ului 10h [functia 02h, din AH]

mov dl,' '
mov ah,2
int 21h      ;tipareste un spatiu acolo unde e cursorul ca sa se stearga ultimul caracter de pe ecran

;acum cursorul iar este unde a fost inainte, ca am tiparit spatiul, deci il mutam inca o data inapoi
mov dh,0    
mov dl,bl
sub dl,12
mov ah,02h
xor bh,bh
int 10h

mov [ds:buffer+bx], '$'  ;in buffer scriem $ la offsetul buffer+bx, adica in locul ultimului caracter [il stergem]

jmp loopu    ;sari la "loopu"

END START

Download EXE
Nelamuriri?
Memorat


Just wake me up when everything's less overwhelming..., btw ShockingSoft is back !
Freakz only
Comics of the day
LeOCruX
*

Deconectat Deconectat

Mesaje: 95

Citeste un string de la tastatura, Iun 16, 2007, 07:25

ai putea sa imi dai codurile ascii pt taste ? ( de ex. cum ai pus u cmp al,8. Banuiesc ca 8 e codul ascii pt backspace ).
L.E. atunci cand apesi back space nu se sterge ultimul caracter ( defapt el se sterge dar, de ex cand u scrii blablabla si apesi de 2 ori backspace stringul ramane tot blablabla, dar dupa ce apesi enter, scrie " strringul e : blablab " )
Memorat
3Nigma
*

Deconectat Deconectat

Mesaje: 981

WWW
Citeste un string de la tastatura, Iun 16, 2007, 07:34

Pentru coduri ASCII trage un ochi aici.
Memorat



Search for knowledge in the darkest places and in the blackest hours! You might get lucky and find more than you are looking for...

"Ambition is a lame excuse for the ones that are not brave enough to be lazy..."
Shocker
*

Deconectat Deconectat

Mesaje: 410

WWW
Citeste un string de la tastatura, Iun 16, 2007, 12:39

Citat
ai putea sa imi dai codurile ascii pt taste ? ( de ex. cum ai pus u cmp al,8. Banuiesc ca 8 e codul ascii pt backspace ).

Poti sa faci si ceva de genul:
Cod:

mov dl, 'X'

Dar desigur, la backspace, enter, si celelalte neprintabile trebuie neaparat codul ASCII

Citat

L.E. atunci cand apesi back space nu se sterge ultimul caracter ( defapt el se sterge dar, de ex cand u scrii blablabla si apesi de 2 ori backspace stringul ramane tot blablabla, dar dupa ce apesi enter, scrie " strringul e : blablab " )

Totul trebuie facut manual. Am facut pana la urma si ce ai vrut tu, vezi ca am mai adaugat la partea "rem", unde se sare cand e apasat Backspace:

Cod:

;sa mutam si cursorul cu un spatiu mai inapoi
mov dh,0     ;randul 0
mov dl,bl    ;coloana bl
sub dl,12    ;scadem din dl pe 12 [lungimea string-ului "String-ul e:"]
mov ah,02h   ;functia de mutare a cursorului
xor bh,bh    ;in bh se specifica "video page", noi il facem 0
int 10h      ;apeleaza functia de mutare a cursorului a INTterrupt-ului 10h [functia 02h, din AH]

mov dl,' '
mov ah,2
int 21h      ;tipareste un spatiu acolo unde e cursorul ca sa se stearga ultimul caracter de pe ecran

;acum cursorul iar este unde a fost inainte, ca am tiparit spatiul, deci il mutam inca o data inapoi
mov dh,0    
mov dl,bl
sub dl,12
mov ah,02h
xor bh,bh
int 10h

mov [ds:buffer+bx], '$'  ;in buffer scriem $ la offsetul buffer+bx, adica in locul ultimului caracter [il stergem]
Memorat


Just wake me up when everything's less overwhelming..., btw ShockingSoft is back !
Freakz only
Comics of the day
LeOCruX
*

Deconectat Deconectat

Mesaje: 95

Citeste un string de la tastatura, Iun 16, 2007, 13:17

mersi mult shocker
Memorat
SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Ethical hacking and programming community
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro