簡體   English   中英

英特爾8086,一些小東西

[英]Intel 8086, a few little things

MOV AL,4的8086指令的編碼是否為c604

另外,我將如何編碼MOV AX, DS:5678hSUB BX,[Di+6]

謝謝你的幫助。

MOV AL,4被編碼為B004

MOV AX, DS:5678hinvalid combination of opcode and operandsinvalid combination of opcode and operands 這將無法編譯。

SUB BX, [DI+6]被編碼為2B5D06


對於那些感興趣的人,這是如何解碼已編譯的16位匯編器。

...這可能是一個很好的Wiki。

首先:這是在Mac OS X上完成的,但是任何Linux發行版都可以使用所描述的工具。

在x86(8086)匯編語言以及許多其他匯編語言中,匯編器將(幾乎)人類可讀的助記符編譯為字節碼。 每個助記符都會轉換為特定的字節碼。 例如:

XOR AX, AX編碼為31C0

要解碼機器語言,您將需要您喜歡的文本編輯器,NASM(Netwide匯編器)和十六進制編輯器。

步驟1:在文本編輯器中輸入要解碼的助記符,首先使用[BITS 16]指令。 救。

第1步

步驟2:使用命令nasm <your file> -f bin -o <output file>編譯

第2步

步驟3:使用十六進制編輯器打開輸出文件。

第三步:

步驟4:顯示的字節將為解碼助記符。


這是如何將字節碼反編譯為NASM語法助記符。 這與上述步驟相反。

NASM帶有工具ndisasm或Netwide Disassembler。 該程序會將字節碼反匯編成原始指令。

您將需要NASM工具集,並且,如果需要,可以使用十六進制編輯器。

步驟1:獲取您的字節碼文件。 這應該是匯編語言。 C / C ++代碼或任何其他機器語言文件可能在實際機器代碼之前包含標頭。

如果需要,可以使用十六進制編輯器檢查/編輯字節碼文件。

第四步

步驟2:運行此命令: ndisasm -b 16 <bytecode file> 終端右側顯示的行是字節碼中的助記符。

step1-2

如果字節碼無效,則有時ndisasm會說某些字節是db助記符-這些意味着define byte 換句話說,這是一個填充字節,並且ndisasm找不到有效的助記符。

step2-2

另外,請記住,使用ndisasm和任何其他反編譯器或反匯編器時,反編譯器/反匯編器將不會檢索注釋或空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM