User Tools

Site Tools


laboratoare:laborator-03

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator-03 [2015/10/27 21:36]
vladimir.diaconescu [JMP și JMP-if-condition]
laboratoare:laborator-03 [2016/10/16 23:51] (current)
mihai.tiganus [[10p] BONUS: Lab 2, Reloaded (in Assembly)]
Line 29: Line 29:
  
 <code asm> <code asm>
-mov al, 12 <-> \xB0\x0C +mov al, 12 <​-> ​'\xB0\x0C' 
-xor dx, dx <-> \x66\x31\xD2 +xor dx, dx <​-> ​'\x66\x31\xD2' 
-jmp esp    <-> \xFF\xE4+jmp esp    <​-> ​'\xFF\xE4'
 </​code>​ </​code>​
  
Line 75: Line 75:
  
 Există cazuri în care se impun constrângeri asupra dimensiunii codului și/sau datelor, cum este cazul device-urilor specializate pentru un singur task, având puțină memorie. Din această categorie fac parte și driverele pentru dispozitive. Există cazuri în care se impun constrângeri asupra dimensiunii codului și/sau datelor, cum este cazul device-urilor specializate pentru un singur task, având puțină memorie. Din această categorie fac parte și driverele pentru dispozitive.
 +
 +=== Fun ===
 +
 +Pentru mai multe detalii, discutați asistentul vostru de laborator pentru a vă împărtăși experiența lui personală în materie de limbaj de asamblare și cazurile practice de utilizare folosite.
  
 ===== Familia x86 ===== ===== Familia x86 =====
Line 242: Line 246:
 </​code>​ </​code>​
  
-<note important>​Ce reprezintă $ în exemplul de mai sus? Dar valoarea 0x1c?</​note>​+<note important>​Ce reprezintă ​**$** în exemplul de mai sus? Dar valoarea ​**0x1c**?</​note>​
  
 Instrucțiunile de tipul **jump-if-condition** se aseamănă cu **if** din C. Aceste instrucțiuni folosesc drept condiții indicatorii de stare din registrul ''​%%EFLAGS%%''​. E foarte important de ținut minte faptul că acest registru indică contextul de execuție al instrucțiunii curente și se modifică după fiecare instrucțiune. Instrucțiunile de tipul **jump-if-condition** se aseamănă cu **if** din C. Aceste instrucțiuni folosesc drept condiții indicatorii de stare din registrul ''​%%EFLAGS%%''​. E foarte important de ținut minte faptul că acest registru indică contextul de execuție al instrucțiunii curente și se modifică după fiecare instrucțiune.
Line 324: Line 328:
   - [30p] Modificați-l astfel încât la rularea lui să se afișeze mesajul ''​%%Well done!%%''​. Urmăriți comentariile marcate cu ''​%%TODO%%''​   - [30p] Modificați-l astfel încât la rularea lui să se afișeze mesajul ''​%%Well done!%%''​. Urmăriți comentariile marcate cu ''​%%TODO%%''​
   - [10p] De ce, în continuare, se afișează și mesajul greșit? Ce lipsește?   - [10p] De ce, în continuare, se afișează și mesajul greșit? Ce lipsește?
 +==== [10p] BONUS: Fibonacci ====
 +Calculați al ''​eax''​-lea număr Fibonacci.
 ===== Resurse utile ===== ===== Resurse utile =====
 +* [[http://​savannah.nongnu.org/​projects/​pgubook/​|Programming from the Ground Up]]
 +* [[http://​beginners.re/​|Reverse Engineering for Beginners]]
 * [[http://​www.intel.com/​content/​dam/​www/​public/​us/​en/​documents/​manuals/​64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf|Intel 64 and IA-32 Architectures Software Developer Manual]] * [[http://​www.intel.com/​content/​dam/​www/​public/​us/​en/​documents/​manuals/​64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf|Intel 64 and IA-32 Architectures Software Developer Manual]]
 * [[http://​css.csail.mit.edu/​6.858/​2015/​readings/​i386.pdf|Intel 80386 Programmer'​s Reference Manual]] * [[http://​css.csail.mit.edu/​6.858/​2015/​readings/​i386.pdf|Intel 80386 Programmer'​s Reference Manual]]
 * [[http://​cs.stanford.edu/​people/​eroberts/​courses/​soco/​projects/​risc/​risccisc/​|RISC vs. CISC]] * [[http://​cs.stanford.edu/​people/​eroberts/​courses/​soco/​projects/​risc/​risccisc/​|RISC vs. CISC]]
 * [[http://​unixwiz.net/​techtips/​x86-jumps.html|Intel x86 JUMP Quick Reference]] * [[http://​unixwiz.net/​techtips/​x86-jumps.html|Intel x86 JUMP Quick Reference]]
laboratoare/laborator-03.1445974577.txt.gz · Last modified: 2015/10/27 21:36 by vladimir.diaconescu