1樓:
這兩個反匯編出來的語句是一樣的。
1. 你這是8051系列微控制器的彙編,我想你是知道這一點的。
2. 你用的工具採用了按字(16個二進位制位也就是兩個位元組)的方式顯示資料,而且是高位元組在前。也就是說你給的兩條指令,如果按51的傳統來看的話應該分別是:
21 ff 和 21 00,其中21 是指令 mov r1,#imediate 的操作碼,後面的ff和00就是指令中的立即數。
3. rom:00000000 ff 21 mov r1, #0xff
中rom代表了內容來自rom;冒號後的00000000 代表了內容取自rom中地址為00000000的單元; ff 21 代表相鄰的兩個單元/一個字的內容為 ff(高位元組,地址為00000001) 21(低位元組,地址為00000000);在後面就是對應的彙編指令
2樓:
這是51系列微控制器的彙編指令集
mov r1, #0xff等價mov r1,#0ffh,反彙編為 21 ff
mov r1, #0 等價mov r1,#00h ,反彙編為 21 00
其中21對應mov r1,**,或者說2i對應mov ri,**;**為立即數,由#號加8位二進位制數值組成。
根據你提出的反彙編是否一樣,回答顯然是不一樣的,因為立即數不同。
詳細可參閱復旦大學出版的《微控制器原理及應用》一書的指令部分。
3樓:匿名使用者
你說的反彙編 。。。
你的就是彙編語句 。反彙編是可執行程式到彙編 ,反為彙編。。。
為什麼要反彙編 因為可執行程式最多只能有機器碼到組合語言,也許你會說為什麼不到象c vb 這樣的高階語言不是看起來簡單多了,這個是由於程式的二意性不能得到的,所以反彙編就是分析程式一定要學的。而且彙編在硬體方面有天然的優勢。
1樓可執行檔案的最後結構不是組合語言。。組合語言還是彙編器來轉化為cpu識別的機器嗎,
在windows下叫pe檔案 他的結構可以看看,有很多的段 。。。
在linux下有是其他的資料格式了 ,
這些都是認為的定義好的,哎 技術都是死的。。。。
樓主的問題是生成機器碼 ,這個和彙編器有關係的,可以優化的,至於什麼什麼樣要看彙編器的
4樓:匿名使用者
不一樣,r1是8位的暫存器,一般捨棄高位
5樓:高躍州
反彙編通俗講就是把已編譯的可執行檔案通過處理還原為彙編**,對於cpu來說,所有可執行檔案的最終形式就是這一條條的彙編指令.
熟人不能~
彙編中的問題
buffer db 20 dup buffer 00 00 12 00 00 00 00 00 00 00 buffer 00 00 00 00 00 00 00 00 00 00 buffer 是前面定義的變數名 mov buffer bx si dl 設dl 12h 如果bx 1,si 1 將d...
組合語言中ADD加法指令的問題關於組合語言中ADD指令的問題
1.0ac72h只是一個表示方法,跟ac72h是一樣的含義。ax裡還是儲存16位的值。之所以在前面多加一個0,是因為編譯器不識別以字母開頭的立即數。算是立即數表示的一種規則吧,或者可以理解為是一種語法規則。只要是十六進位制數的 最後加h 首位又是字母的,必須前面新增個0。這樣也不容易引起歧義。如果不...
彙編的朋友來下小問題
本程式通過編譯,執行正確 code segment assume cs code,ds codestart mov cx,10 行數mov dx,cx 第一行第一個字元座標dec dl line xor bh,bh 頁號mov ah,2 置游標位置 int 10h push dx mov dl,mo...