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配帶大 專品牌的心率表如嘉屬 明,鬆拓這些品片心率表測試會比較高。因為每個品牌健身器材跑步機使用配置不一樣,跑步機上使用同樣的時速跑步機,跑步機上的顯示距離會有偏差。跑步機顯示距離準確比較高的跑步機有必確跑步機。跑步...