Laborator 7 - Probleme propuse

Operatii pe siruri de bytes/words/doublewords/quadwords

Exerciții

Problemele din acest laborator trebuie rezolvate folosind instructiuni specifice lucrului cu siruri: LODSB, STOSB, MOVSB, SCASB, CMPSB, LODSW, STOSW, MOVSW, SCASW, CMPSW.
  1. Se dau doua siruri de caractere ordonate alfabetic s1 si s2. Sa se construiasca prin interclasare sirul ordonat s3 care sa contina toate elementele din s1 si s2.
  2. Se da un sir de dublucuvinte. Sa se ordoneze descrescator sirul cuvintelor inferioare ale acestor dublucuvinte. Cuvintele superioare raman neschimbate.

    Exemplu:

    dandu-se:
    sir DD 12345678h 1256ABCDh, 12AB4344h
    rezultatul va fi
    1234ABCDh, 12565678h, 12AB4344h.
  3. Se da un sir de dublucuvinte. Sa se ordoneze crescator sirul cuvintelor superioare ale acestor dublucuvinte. Cuvintele inferioare raman neschimbate.

    Exemplu:

    dandu-se:
    sir DD 12AB5678h, 1256ABCDh, 12344344h 
    rezultatul va fi
    12345678h, 1256ABCDh, 12AB4344h.
  4. Dandu-se doua siruri de octeti sa se calculeze toate pozitiile unde al doilea sir apare ca subsir in primul sir.
  5. Se da un sir de octeti reprezentand un text (succesiune de cuvinte separate de spatii). Sa se identifice cuvintele de tip palindrom (ale caror oglindiri sunt similare cu cele de plecare): "cojoc", "capac" etc.
  6. Dandu-se un sir de cuvinte sa se obtina sirul (de octeti) cifrelor in baza zece ale fiecarui cuvant din acest sir.

    Exemplu:

    daca avem sirul:
    sir DW 12345, 20778, 4596 
    obtinem rezultatul
    1, 2, 3, 4, 5, 2, 0, 7, 7, 8, 4, 5, 9, 6.
  7. Se da un sir de octeti 'input' si inca doua siruri de dimensiune N fiecare, 'src' si 'dst'. Sa se obtina un nou sir 'output' din sirul 'input' in care se vor inlocui toti octetii cu valoarea src[i] cu dst[i], unde i=1..N.
  8. Dandu-se un sir de octeti sa se obtina un sir de cuvinte care sa contina in octetii inferiori multimea caracterelor din sirul de octeti, iar octetul superior al unui cuvant sa contina numarul de aparitii al octetului inferior din acel cuvant in sirul de octeti dat.

    Exemplu:

    se da sirul
    sir DB 2, 4, 2, 5, 2, 2, 4, 4 
    se va obtine sirul
    rez DW 0402h, 0304h, 0105h.
  9. Dandu-se un sir de dublucuvinte, sa se obtina un alt sir de dublucuvinte in care se vor pastra doar dublucuvintele din primul sir care au un numar par de biti cu valoare 1.
  10. Se da un sir de octeti. Sa se obtina sirul oglindit al reprezentarii binare a acestui sir de octesi.

    Exemplu:

    Se da sirul de octeti:
    s DB 01011100b, 10001001b, 11100101b 
    Sa se obtina sirul
    d DB 10100111b, 10010001b, 00111010b.
  11. Se da un sir de dublucuvinte. Sa se obtina sirul format din octetii superiori ai cuvintelor inferioare din elementele sirului de dublucuvinte, care sunt multiplii de 10.

    Exemplu:

    Se da sirul de dublucuvinte:
    s DD 12345678h, 1A2B3C4Dh, FE98DC76h 
    Sa se obtina sirul
    d DB 3Ch, DCh.
  12. Dandu-se un sir de cuvinte, sa se calculeze cel mai lung subsir de cuvinte ordonate crescator din acest sir.
  13. Dandu-se un sir de octeti si un subsir al sau, sa se elimine din primul sir toate aparitiile subsirului.
  14. Se dau doua siruri de octeti. Sa se parcurga cel mai scurt sir dintre cele doua siruri si sa se construiasca un al treilea sir care va contine cel mai mare element de acelasi rang din cele doua siruri, iar pana la lungimea celui mai lung sir, sirul al treilea se va completa alternativ cu valoarea 1 respectiv 0.
  15. Se da un sir de cuvinte. Sa se construiasca doua siruri de octeti, s1 si s2, astfel: pentru fiecare cuvant,
    • daca numarul de biti 1 din octetul high al cuvantului este mai mare decat numarul de biti 1 din octetul low, atunci s1 va contine octetul high, iar s2 octetul low al cuvantului
    • daca numarul de biti 1 din cei doi octeti ai cuvantului sunt egali, atunci s1 va contine numarul de biti 1 din octet, iar s2 valoarea 0
    • altfel, s1 va contine octetul low, iar s2 octetul high al cuvantului.