에서 오피 코드의 바이너리 나는 다음과 같은 코드가 (인텔 80X86 작성된 목록 파일 생성 후) :조립
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
내가 행 19에 지금 집중하고있어, 내가 완전히 이해하지를 그것. opcode 'loop'의 이진수가 E2라는 것을 알고 있습니다.
그러나 어디에서 D9 바이트? 어떻게 계산 되었습니까?
레지스터를 지정하지 않으시겠습니까? 값을 변경하지 않고 해체가 어떻게 변하는 지 확인하십시오. – sashoalm
D9를 2의 보수 표현으로 취급하십시오 ... –