查看單個文章
舊 2006-01-10, 02:08 PM   #4 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9858小時 | 升級還需:138小時級別:97 | 在線時長:9858小時 | 升級還需:138小時級別:97 | 在線時長:9858小時 | 升級還需:138小時級別:97 | 在線時長:9858小時 | 升級還需:138小時級別:97 | 在線時長:9858小時 | 升級還需:138小時級別:97 | 在線時長:9858小時 | 升級還需:138小時級別:97 | 在線時長:9858小時 | 升級還需:138小時
註冊日期: 2002-12-07
文章: 13342
精華: 0
現金: 26446 金幣
資產: 3024306 金幣
預設

訂正前言 "通常機械碼指令 只用一個Byte表示"

由於 CPU不斷演進
所以新的指令 以一個Byte以不夠使用
比如 MMX 的指令就要兩個 Byte

只要使用 debug 就可了解了
請開啟DOS視窗輸入 debug
接著會出現 - 請輸入 a 進入組合語言編寫模式
接著想了解 mov 是何機械碼
打 mov ax,8 按[Enter]
接著按 Ctrl+C 離開組合語言編寫模式
接著輸入 g 上面的位址
即可得到
位址 B80800 MOV AX,0008
的顯示
所以推論 B8 就是 mov 的機械碼
過程如下

c:\>debug
-a
13F5:0100 mov ax,8
13F5:0103 ^C
-g 13F5:0100
AX 0008 BX ****
************** <---------此兩行暫存器值省略
13F5:0100 B80800 MOV AX,0008
-q
c:\>
mini 目前線上  
送花文章: 2013, 收花文章: 8001 篇, 收花: 26805 次
回覆時引用此帖