2010-10-18 190 views
1

我正在讀這本書彙編語言的藝術。我遇到了這兩條線。關於彙編語言的問題

the three byte encoding for mov ax, [1000] would be 0C6h, 00h, 
10h and the three byte encoding for mov ax, [2000] would be 0C6h, 00h, 20h. 

誰能告訴我MOV AX,[1000]如何轉換爲oc6h,哦,10H和MOV AX,[2000]轉化爲0C6h,00H,20H。任何人都可以告訴我計算結果嗎?提前致謝。

編輯:我是一個彙編程序設計的入門者,請隨意說明。

回答

4

我假設你的困惑在於1000被編碼爲10h的事實。

ax是32位eax寄存器的低16位的別名。所以mov ax,1000知道這是一個16位操作。 1000在內存中編碼爲00 10,因爲它使用little-endianness編碼,這基本上意味着最重要的字節是物理順序的最後一個。

+0

感謝哥們。這是我想要的。再次感謝。 – narayanpatra 2010-10-18 17:05:54

5

只是猜測,但在我看來像:

0C6h - This is the opcode for "mov ax," 
00h 10h - This is the address 1000h, Little Endian 
00h 20h - This is the address 2000h, Little Endian 
+0

感謝馬克 - 不能相信我居然類型化:) – 2010-10-18 17:03:20

+0

嘖,這應該是小美洲原住民。 – ninjalj 2010-10-18 19:53:11

3

00H是存儲器地址

20H的LoByte是內存地址

OC6h的HIBYTE是操作碼指令mov, ax