怎麼才能知道彙編指令所對應的機器碼

2022-12-22 14:00:07 字數 4525 閱讀 3184

1樓:宿元司空偲

b82266

對應16位彙編:mov

ax,6622h

機器碼都有唯一一條彙編指令與之對應。

你debug

16位程式可以看到在debug的第一列是記憶體的位置第二列就是機器碼。

第三列是。與機器碼對應的彙編指令。

「為什麼記憶體中的機器碼是b82266」

那我還問。你。為什麼。

。你程式設計的。時候要寫指令「mov

ax,6622h」?

「這些是人為計算,還是計算機規定的」你是不是要問。機器碼b82266怎麼來的還。是怎麼。怎麼。的?

機器碼b82266

做的就是把16進位制的2266存到ax暫存器中有與之對應的彙編指令。為什麼要有與之。對應的。彙編指令?

你看b82266你知道啥。意思不?

不知道吧?那你看mov

ax,6622h就知道。什麼意思了吧?

為什麼要這樣編碼?那你問intel公司去吧怎麼。來的?

你程式設計的時。候不要寫。

movax,6622就沒有6622了。

怎麼才能知道彙編指令所對應的機器碼呢?

2樓:陽光上的橋

方法一、

開始執行裡面輸入debug並確認執行,這時候開啟一個黑色的dos視窗,提示符是-,你可以在-後面輸入命令,你輸入a並回車之後就可以輸入彙編指令,最後按幾次回車就推出輸入彙編語句的介面,回到-提示符號,這時候你輸入u並回車就可以檢視你剛才輸入的彙編語句的機器**,我用這個方法檢視xor ax,ax**的過程如下:

-a0afc:0100 xor ax,ax0afc:0102

-u0afc:0100 31c0 xor ax,ax方法二、

查閱cpu手冊,每一個cpu都有相應的機器**手冊,詳細說明每一條機器指令的編碼規則。

怎麼查詢組合語言對應的機器碼?

3樓:益達是誰

查詢彙編語句對應機器碼的方法通常是使用反彙編工具,例如ida pro,ollydbg等。

部分彙編語句(如nop)和機器碼是一一對應的關係,這種語句的編碼可以通過查表獲得。但像mov byte ptr[esi],90h這類使用運算元或者操作記憶體的指令一般沒有固定編碼,所以推薦使用上述反彙編工具。

方法示例(使用ollydbg):

1:首先開啟ollydbg,依次單擊 檔案->開啟 ,彈出以下視窗。選擇一個應用程式,單擊【開啟】。

2:開啟後主視窗顯示如下,下圖中中間的綠色部分即為右側彙編指令的機器碼。

注意事項:以上示例為win32平臺的應用程式,不同平臺的程式也會有不同的指令和反彙編工具,所以以上示例並不通用。建議搜尋關鍵字:

平臺+反彙編工具(例如 linux 反彙編工具)。

4樓:匿名使用者

你找任何介紹組合語言的書上都有指令集,上面都會列出每條指令的機器碼。

5樓:匿名使用者

其實,編譯程式中包含一個指令助記符-機器指令的對照表,就像你查字典能查到讀音和字義一樣,通過對照表可以很方便地找到對應的機器碼。

6樓:匿名使用者

一般直接插手測。

此外還有一些工具可以幫助轉換。

特別需要注意的是,有些指令是和當前的ip有關係的,比如 jump需要手工計算跳轉位置才能得到正確的值。

7樓:匿名使用者

這個得找本書才行。而且彙編指令可能對應多個機器碼。

如果用dos模擬器,可以用debug自己彙編和反彙編看看。一個是a指令,一個是u指令。

8樓:做而論道

組合語言有許多種。

不同的 cpu 的機器碼,也不一樣。

比如,組合語言 push 的機器碼,就有很多種形式穩妥的方法,就是到它們的官網去查。

另外,機器碼,人是看不懂的。

機器碼是由 cpu 來執行的,你查出來,也沒有什麼用。

9樓:

如果你指的是x86彙編的話,你可以往下看:

一般的反彙編器會顯示機器碼,比如vs除錯模式下的反彙編頁就可以設定顯示機器碼。

或者使用ollydbg等反彙編偵錯程式,也會顯示反彙編**和機器碼。

如果你想知道一段彙編**最終的生成機器碼,一般需要編譯它,讓編譯器生成機器碼。

如果你對組合語言足夠熟悉,你可以自己看出一部分的機器碼,比如e8是call指令之類的,一般這個是比較困難的,熟練的逆向人員可能對這個更熟悉一些。x86彙編有自己的編碼規則,細節可以參考intel的開發人員手冊,裡面有x86彙編的詳細編碼規則。

還可以使用反彙編引擎 比如beaengine或者capstone之類的,從輸入彙編**得到反彙編機器碼。

10樓:張

好像有可以翻譯的軟體,然後就只有自己計算了。

11樓:sanker網路

用編譯器的除錯模式。

12樓:匿名使用者

彙編和機器碼是一一對應的關係,所以是可以查表的。不知道網上有沒有自動查表的工具,你可以找找。

怎麼才知道彙編指令對照的機器指令?有什麼數學演算法可以互相轉換這彙編和機器指令?

13樓:亂七胡說八糟亂想

這是設計或生產晶片廠家規定的,你只要去查廠家該晶片的技術資料就可知的,一般為了推廣他的晶片廠家還會給你一個彙編工具軟體的,這軟體主要的目的就是把助記符(就是你說的彙編指令)對照成機器指令用的。

14樓:匿名使用者

這不是算的,是對錶查出來的。就像ascii表一樣,a對應65 a對應97。彙編指令其實是機器碼助記符的代名詞而已,它倆本就是一樣一樣滴。

想要知道彙編指令對應的機器碼是多少可以通過查表或者用trubo debug軟體或者ms-dos的dos視窗下debug查詢。

15樓:匿名使用者

轉換不知道,但是怎麼看看能告訴你,你吧彙編生成的檔案,bin或者hex單擊右鍵,就能看到16位的01**了。

16樓:悉心還坦率丶幫手

你要看什麼程式的彙編指令就把那個程式放到od軟體裡面看咯,裡面也有對應的機器指令。

如何根據機器碼來獲得相應的彙編指令。主要是call指令不會 5

17樓:空雪夢見

e8 : call

75 07 f7 ff:代表32位整數 ff f7 07 75 補碼錶示。

也就是說呼叫一個函式,這個函式的位置距離當前**的位置是ff f7 07 75

這一句**5個位元組,執行之後eip變為 805cc406+5 = 805cc40b

然後加上這個位置, 805cc40b + fff70775 = 18053cb80,因為是32位整數所以開頭的1溢位了,被砍掉,最後變為 8053cb80

於是這一句就是 call 8053cb80 了。

18樓:匿名使用者

這個看是什麼微控制器,應該說每種微控制器的機器碼都不一樣的,每條指令對應一個機器碼;

怎麼查詢組合語言對應的機器碼?

19樓:做而論道

組合語言有許多種。

不同的 cpu 的機器碼,也不一樣。

比如,組合語言 push 的機器碼,就有很多種形式穩妥的方法,就是到它們的官網去查。

另外,機器碼,人是看不懂的。

機器碼是由 cpu 來執行的,你查出來,也沒有什麼用。

彙編指令機器碼問題

20樓:網友

機器指令有它的編碼規則,以若干位代表不同的操作碼,若干位代表定址方式組合,若干位表示運算元型別是字還是位元組,若干位表示各個運算元,等等。

8086指令的具體編碼可以查閱一些機器語言參考手機。

一般說來,cpu裡面只有少數幾個暫存器,只需要不多的幾位即可區分不同的暫存器。比如區分8個暫存器只需要 3 bit 進行編碼。

因此,用暫存器定址的機器指令,長度較短。

而記憶體或立即定址,需要給出8位或16位的運算元,或記憶體地址,它們需要的位數顯然比暫存器要多,因而機器指令也就會變長。

sub ax, ax指令兩個運算元都是暫存器,所以操作碼+定址方式組合+資料型別+兩運算元的暫存器**這些組合後只有兩個位元組: 2b c0

mov ax, 0這條指令中,16位的源運算元--立即數0就要單獨佔用兩個位元組,其它操作碼和目的運算元等的編碼再佔用一個位元組,指令長度就成了三個位元組: b8 00 00 (後面的兩個00 00就是源運算元 0 )

21樓:萬年潛水的妖怪

可以用u命令檢視彙編指令的機器碼。

sub ax,ax 對應的機器碼為29c0

mov ax,0對應的機器碼為b80000

組合語言怎麼轉換成對應的機器碼

22樓:乾家使

用組合語言編譯器,這個編譯器的作用就是吧組合語言轉譯為機器碼。

遊戲王卡片力量6,怎麼才能知道卡號對應遊戲裡的哪個卡包啊,看

不是顯示出現的卡包了嗎?照著查就是了 遊戲王卡片力量6卡包的具體內容。卡片編號 65 禁卡限制 普通卡 卡片pass 97017120 卡片歸屬 ocg tcg 卡包 be01,ps,ysd02,dl01,sd07,yu,sy2,ysd06,st12 罕貴程度 平卡n,銀字r 日文卡名 巨大 美英卡...

怎樣分辨存摺對應的銀行卡,怎樣才能知道自己銀行卡對應的銀行存摺帳號?

大多數銀行已經沒有卡折一體戶了,郵政銀行還有,你可以先列印存摺的交易,再查詢銀行卡餘額和存摺餘額是不是一樣就可以了。如果不一樣就不是卡折一體戶。怎樣才能知道自己銀行卡對應的銀行存摺帳號?查詢自己銀行卡對應的銀行存摺帳號 攜帶戶主本人身份證至銀行開戶行或其網點,至櫃檯填寫查詢業務表,櫃檯人員即可查到該...

如何才能知道的跑步機的顯示距離是否準確

跑步機每個品 bai牌的顯示的路程距有du一定的差異。想zhi測試準確度可以 dao配帶大 專品牌的心率表如嘉屬 明,鬆拓這些品片心率表測試會比較高。因為每個品牌健身器材跑步機使用配置不一樣,跑步機上使用同樣的時速跑步機,跑步機上的顯示距離會有偏差。跑步機顯示距離準確比較高的跑步機有必確跑步機。跑步...