2014-04-21 2 views
0

나는 NASM과 매우 간단한 행 바이너리 코드 (.COM 파일)을 분해하고 싶지만 출력은 내가 메인 코드를 기대했던대로 무엇되지 않습니다 :분해 문제 : 잘못된 결과

mov ax,4 
push ax 
mov ax,7 
push 9 

하지만 출력 NASM은 다음과 같습니다 (그리고 나는 또한 IDA Pro를 사용하려고하고 동일)는 바이너리 코드가 맞다 볼 수

00000000 B80400 mov ax,0x4 
00000003 B80750 mov ax,5007 
00000006 006809 add [bx+si+0x9],ch 
00000009 0000  add [bx+si],al 

, 그냥 해석이 잘못 (내가 때문에 지난 3 추가 0 바이트의 생각 그게 내가 사용하고있는 다른 프로그램에 의해 야기 된 것입니다. 어쩌면 다른 것입니다!)

이진 코드에서 마지막으로 0을 생략 할 수 있습니까? 또는 nasm이 원하는대로 코드를 해석 할 수있는 방법은 무엇입니까?

감사합니다.

+0

왜 nasm이 바이너리를 읽는 데 3bytes를 사용하는지 궁금합니다. 2byte (16bit) 또는 4byte (32bit)가 아닌가요?! –

답변

0

B80750은 실제로 mov ax, 0x5007입니다. 거기에 아무 것도 없습니다.

어쨌든 주어진 코드는 이런 식으로 조립해야합니다

00000000 B80400   mov ax,0x4 
00000003 50    push ax 
00000004 B80700   mov ax,0x7 
00000007 6A09    push byte +0x9 

당신이 .COM 당신이 잘못을하고있는 파일을 직접 조립합니다.