MOV AL,4
의 8086 명령에 대한 인코딩은 c604
일까요? 내가 어떤 도움을 MOV AX, DS:5678h
및인텔 8086, 몇 가지 작은 것들
SUB BX,[Di+6]
감사를 인코딩 할 방법 또한
MOV AL,4
의 8086 명령에 대한 인코딩은 c604
일까요? 내가 어떤 도움을 MOV AX, DS:5678h
및인텔 8086, 몇 가지 작은 것들
SUB BX,[Di+6]
감사를 인코딩 할 방법 또한
MOV AL,4
은 B004
으로 인코딩됩니다.
MOV AX, DS:5678h
는 invalid combination of opcode and operands
입니다. 이것은 컴파일되지 않습니다.
SUB BX, [DI+6]
는 2B5D06
로 인코딩된다.
관심있는 사람들은 컴파일 된 16 비트 어셈블러를 디코딩하는 방법입니다.
... 좋은 위키 일 수 있습니다.
첫 번째 :이 작업은 Mac OS X에서 수행되었지만 모든 Linux 배포에서는 설명 된 도구를 사용할 수 있습니다. 86 년
(8086) 어셈블러 언어뿐만 아니라 다른 많은 어셈블리 언어, 어셈블러 컴파일 된 바이트 코드에 (거의) 사람이 읽을 수있는 니모닉. 각 니모닉은 특정 바이트 코드로 변환됩니다. 예를 들어 :
XOR AX, AX
는 31C0
로 인코딩합니다.
1 단계 : 디코딩 할 니모 닉을 텍스트 편집기에 입력하고 [BITS 16] 명령을 먼저 사용하십시오. 구하다.
단계 2 : 명령 nasm <your file> -f bin -o <output file>
3 단계로 컴파일 헥스 편집기 출력 파일을 연다.
4 단계 : 복호 니모닉 것 도시 바이트. 여기
은 NASM 구문 니모닉에 바이트 코드를 컴파일하는 방법이다. 이는 위에 설명 된 단계의 역순입니다.
NASM에는 도구 ndisasm
또는 Netwide 디스어셈블러가 함께 제공됩니다. 이 프로그램은 바이트 코드를 원래 지침으로 다시 분해합니다.
NASM 세트 도구가 필요하며 원하는 경우 16 진수 편집기가 필요합니다.
1 단계 : 바이트 코드 파일을 가져옵니다. 컴파일 된 어셈블러 언어 여야합니다. C/C++ 코드 또는 다른 기계 언어 파일은 실제 기계 코드 앞에 헤더를 포함 할 수 있습니다.
원하는 경우 16 진수 편집기로 바이트 코드 파일을 검사/편집 할 수 있습니다.
2 단계 : ndisasm -b 16 <bytecode file>
:이 명령을 실행하십시오. 터미널 오른쪽에 표시된 줄은 바이트 코드의 니모닉입니다.
바이트 코드가 유효하지 않은 경우, 때때로 ndisasm
특정 바이트 db
mnemonics- 이러한 수단 define byte
이라는 것을 말할 것이다. 즉, 이것은 필러 바이트이며 ndisasm
은 올바른 니모닉을 찾을 수 없습니다.
또한 ndisasm
를 사용하는 경우, 마음에 유지하고, 다른 디 컴파일러 또는 디스어셈블러는 디 컴파일러/디스어셈블러는 의견이나 빈 공간을 검색하지 않습니다.
이것은 16 비트 어셈블리입니다. 맞습니까? –
@BlueIce Correct – user77708
좋아, 잘하고있어. –