danyel7002 0 Raportează post Postat Noiembrie 8, 2007 (editat) M-am tot gandit la metode pt a verifica in assembler daca un sir de caractere este palindrom(citit de la stanga sau de la dreapta e acelasi...ex radar, 1907091...). Am gasit 3 care cat de cat fac acelasi lucru: 1. se verifica prima litera cu ultima, a 2 a cu penultima samd 2. se inverseaza sirul de caractere si apoi se verifica prima litera a sirului inizial cu prima litera a sirului inversat, a doua cu a doua samd(ca in c++ strrev) 3. se taie sirul inizial in 2 bucati prima ramane asa iar a 2a se inverseaza, se verifica apoi ca la metoda 2 de mai sus As dori sa aflu alte algoritme pt a verifica daca un sir este palindrom...daca se poate adaptate si la assembler:d ms Editat Noiembrie 8, 2007 de danyel7002 Partajează acest post Link spre post Distribuie pe alte site-uri
soarce 1 Raportează post Postat Noiembrie 9, 2007 eu as alege prima metoda pentru simplu motiv ca nu necesita spatiu suplimentar de stocare pe cand celelalte doua da. pentru mai multi algoritmi in cod masina iti recomand cartile lui D. Knuth din seria "The art of computer programming" (3 volume) Partajează acest post Link spre post Distribuie pe alte site-uri
danyel7002 0 Raportează post Postat Noiembrie 11, 2007 un posibil algoritm ar fi recursivitatea...numai ca in assembler nush cum se face... Partajează acest post Link spre post Distribuie pe alte site-uri
argv 5 Raportează post Postat Noiembrie 27, 2007 (editat) un posibil algoritm ar fi recursivitatea...numai ca in assembler nush cum se face... Recursivitatea este algoritm? In cazul tau e mult mai rapid si probabil mai simplu sa-l faci iterativ. Daca tot lucrezi in asamblare ar trebui sa stii ca recursivitatea penalizeza viteza de executie pt ca la fiecare apel recursiv se salveaza parametrii in stack. Primul algoritm pe care l-ai listat pare cel mai eficace si mai simplu http://oopweb.com/Assembly/Documents/asm/Volume/asm.htm Editat Noiembrie 27, 2007 de Argv Partajează acest post Link spre post Distribuie pe alte site-uri
soarce 1 Raportează post Postat Noiembrie 28, 2007 da, recursivitatea nu este un algoritm ci o metoda. limbajul de asamblare nu are definit apelul recursiv si de aceea va trebui sa te ocupi de toata bucataria interna a apelului recursiv: salvari de date (registrii) in stiva. se gasesc pe internet exemple de implementare a apelului recusiv in limbaj masina, insa cred ca toata chestia ramane la nivel didactic. Partajează acest post Link spre post Distribuie pe alte site-uri
rox94ana 0 Raportează post Postat Ianuarie 13, 2014 buna. am o intrebare legata de aceasta problema. am incercat sa o fac comparand primul element din sir cu ultimul, al doilea cu penultimul si tot asa. Eu m-am gandit sa numar elementele din sir (asta am reusit), dar nu stiu cum pot folosi al n-lea element din sir. am scris asa: MOV SI, OFFSET SIR MOV AL, [sI] CMP AL, SIR[NR] (SIR[NR] m-am gandit sa fie al nr-lea element, dar nu functioneaza). ............. Imi puteti da o idee de rezolvare? Partajează acest post Link spre post Distribuie pe alte site-uri
rox94ana 0 Raportează post Postat Ianuarie 14, 2014 Acesta este codul, nu imi apar erori, dar dupa ce introduc sirul de caractere nu-mi afiseaza nimic. Ce este gresit? .MODEL SMALL .STACK 100H .DATA NR DB '00','$' SIR DB 50 DUP('$') INV DB 50 DUP('$') mesaj db 13,10,'Introduceti sirul: ','$' mesaj_nu db 13,10,'Numarul nu este palindrom!','$' mesaj_da db 13,10,'Numarul este palindrom!','$' .CODE MOV AX,@DATA MOV DS,AX MOV AH,9H MOV DX,OFFSET mesaj INT 21H MOV BX,0 MOV CX,50 MOV AH,3FH MOV DX,OFFSET SIR INT 21H MOV SI,OFFSET SIR E1: MOV AL,[sI] CMP AL,0DH JNE E2 E2: INC SI JMP E1 DEC SI MOV DI,SI MOV SI,OFFSET SIR E3: MOV AL,[sI] CMP AL,0DH JNE E4 E4: MOV BL,[sI] MOV AL,[DI] CMP AL,BL JNE E5 INC SI DEC DI JMP E3 E5: MOV AH,09H MOV DX, OFFSET mesaj_nu JMP sfarsit MOV AH,09H MOV DX,OFFSET mesaj_da INT 21H sfarsit:MOV AH,4CH INT 21H END Partajează acest post Link spre post Distribuie pe alte site-uri
rox94ana 0 Raportează post Postat Ianuarie 14, 2014 Buna. Cum pot salva elementul din mijlocul unui sir? Am incercat asa: mov bx,2 div bx mov si,ax ;catu este salvat in ax mov cl,[si] mov char,cl dar imi afiseaza dimensiunea sirului. Ma puteti ajuta? Partajează acest post Link spre post Distribuie pe alte site-uri