2013-07-26 3 views
1

MOV AL,4의 8086 명령에 대한 인코딩은 c604일까요? 내가 어떤 도움을 MOV AX, DS:5678h인텔 8086, 몇 가지 작은 것들

SUB BX,[Di+6] 감사를 인코딩 할 방법 또한

.

+0

이것은 16 비트 어셈블리입니다. 맞습니까? –

+0

@BlueIce Correct – user77708

+0

좋아, 잘하고있어. –

답변

2

MOV AL,4B004으로 인코딩됩니다.

MOV AX, DS:5678hinvalid combination of opcode and operands입니다. 이것은 컴파일되지 않습니다.

SUB BX, [DI+6]2B5D06로 인코딩된다.


관심있는 사람들은 컴파일 된 16 비트 어셈블러를 디코딩하는 방법입니다.

... 좋은 위키 일 수 있습니다.

첫 번째 :이 작업은 Mac OS X에서 수행되었지만 모든 Linux 배포에서는 설명 된 도구를 사용할 수 있습니다. 86 년

(8086) 어셈블러 언어뿐만 아니라 다른 많은 어셈블리 언어, 어셈블러 컴파일 된 바이트 코드에 (거의) 사람이 읽을 수있는 니모닉. 각 니모닉은 특정 바이트 코드로 변환됩니다. 예를 들어 :

XOR AX, AX31C0로 인코딩합니다.

기계 언어를 해독하기 위해, 당신은 당신이 좋아하는 텍스트 편집기, NASM (Netwide 어셈블러), 및 16 진수 편집기가 필요합니다.

1 단계 : 디코딩 할 니모 닉을 텍스트 편집기에 입력하고 [BITS 16] 명령을 먼저 사용하십시오. 구하다.

step1

단계 2 : 명령 nasm <your file> -f bin -o <output file>

step2

3 단계로 컴파일 헥스 편집기 출력 파일을 연다.

step3

4 단계 : 복호 니모닉 것 도시 바이트. 여기


은 NASM 구문 니모닉에 바이트 코드를 컴파일하는 방법이다. 이는 위에 설명 된 단계의 역순입니다.

NASM에는 도구 ndisasm 또는 Netwide 디스어셈블러가 함께 제공됩니다. 이 프로그램은 바이트 코드를 원래 지침으로 다시 분해합니다.

NASM 세트 도구가 필요하며 원하는 경우 16 진수 편집기가 필요합니다.

1 단계 : 바이트 코드 파일을 가져옵니다. 컴파일 된 어셈블러 언어 여야합니다. C/C++ 코드 또는 다른 기계 언어 파일은 실제 기계 코드 앞에 헤더를 포함 할 수 있습니다.

원하는 경우 16 진수 편집기로 바이트 코드 파일을 검사/편집 할 수 있습니다.

step4

2 단계 : ndisasm -b 16 <bytecode file> :이 명령을 실행하십시오. 터미널 오른쪽에 표시된 줄은 바이트 코드의 니모닉입니다.

step1-2

바이트 코드가 유효하지 않은 경우, 때때로 ndisasm 특정 바이트 db mnemonics- 이러한 수단 define byte이라는 것을 말할 것이다. 즉, 이것은 필러 바이트이며 ndisasm은 올바른 니모닉을 찾을 수 없습니다.

step2-2

또한 ndisasm를 사용하는 경우, 마음에 유지하고, 다른 디 컴파일러 또는 디스어셈블러는 디 컴파일러/디스어셈블러는 의견이나 빈 공간을 검색하지 않습니다.

+0

사진이 추가됩니다. –

+0

많은 분들께 감사 드리며, 그 반대의 빠른 방법을 알고 있습니까? 따라서 B004를 복용하고 그것이 무엇인지 알아내는 것입니까? – user77708

+0

mov ax, ds : 5678h는 특정 어셈블리 구문에 따라 A1 78 56 (mov ax, FASM 구문의 [ds : 5678h])으로 인코딩 될 수 있습니다. – johnfound

관련 문제