ho il seguente codice (dopo aver prodotto il file profilo, scritto per Intel 80x86):Il binario di codice operativo in assemblea
1 global _start
2
3 section .data
4 00000000 03000000 x: dd 3
5
6 ;section .text
7
8 _start:
9 00000004 8B0D[00000000] mov ecx, [x]
10 0000000A 000D[16000000] r: add byte [l+6], cl
11 00000010 C605[00000000]30 l: mov byte [x], 48
12 00000017 51 push ecx
13 00000018 B804000000 mov eax, 4 ; For "Write" system call
14 0000001D BB01000000 mov ebx, 1 ; to standard output
15 00000022 B9[00000000] mov ecx, x ; "buffer"
16 00000027 BA01000000 mov edx, 1 ; byte counter
17 0000002C CD80 int 0x80
18 0000002E 59 pop ecx
19 0000002F E2D9 loop r, ecx
20
21 00000031 BB00000000 mov ebx, 0
22 00000036 B801000000 mov eax, 1 ; For "exit" system call
23 0000003B CD80 int 0x80
mi sto concentrando ora in fila 19, e non del tutto a capire esso. Capisco che il codice binario dell'opcode 'loop' sia E2.
Ma da dove il byte D9? come è stato calcolato?
Non specificare il registro? Perché non cambiare il valore e vedere come cambia lo smontaggio? – sashoalm
Tratta D9 come una rappresentazione complementare di due ... –