国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
匯編指令與機(jī)器碼的相互轉(zhuǎn)換--中原教程網(wǎng)
匯編指令與機(jī)器碼的相互轉(zhuǎn)換

作者:HSLY   時(shí)間:2005-4-29 來(lái)自:unknown 閱讀: 125
機(jī)器語(yǔ)言我們只要重點(diǎn)理解一下幾個(gè)概念:

1. 機(jī)器語(yǔ)言指令有操作碼(OP)和地址碼兩部分組成


|_____________OP_______________|__d__|__w__|

|_____________OP_______________|__s__|__w__| <--此格式用于立即尋址方式

在多數(shù)操作碼中,常使用某些位來(lái)指示某些信息:
如圖上結(jié)構(gòu)里的: w=1 時(shí) 對(duì)字來(lái)操作
w=0 時(shí) 對(duì)字節(jié)來(lái)操作

d值在雙操作數(shù)指令中才有效
當(dāng) d=1 時(shí) 有且只有一個(gè)寄存器用于目的操作數(shù)
d=0 時(shí) 有且只有一個(gè)寄存器用于源操作數(shù)

s=1 時(shí) 立即數(shù)為8位,但要求擴(kuò)展成16位數(shù)
s=0 時(shí) 當(dāng)指令作字節(jié)操作/有16位立即數(shù)

由于匯編的指令格式很多,這里我只作一些基本情況介紹,必要時(shí)讀者可以下載/查閱80x86匯編小站http://www.x86asm.com提供的OPCODES手冊(cè)來(lái)查閱。

2. 尋址方式的機(jī)器語(yǔ)言表示:

| mod | reg | r/m |
|_____|_____|_____|_____|_____|_____|_____|

reg 表示寄存器方式,在不包括立即數(shù)的雙操作數(shù)指令的情況下,規(guī)定必須有一個(gè)操作數(shù)在寄存器中,該寄存器由reg字段指定,并與操作碼字節(jié)中的w位相組合確定的寄存器

mod字段與r/m(register/memory)字段結(jié)合在一起確定另一個(gè)操作數(shù)的尋址方式現(xiàn)在你們下載了80x86匯編小站(http://www.x86asm.com)提供的OPCODES 手冊(cè)了嗎?
下載好了,請(qǐng)解壓后打開里面的:opcodes.html 文件,然后熟悉里面的表格:

現(xiàn)在熟悉簡(jiǎn)單的:
______________________________________________________________________________
表1 <PS:部分資料> rrr : W=0 : W=1 : reg32

000 : AL : AX : EAX

001 : CL : CX : ECX

010 : DL : DX : EDX

011 : BL : BX : EBX

100 : AH : SP : ESP

101 : CH : BP : EBP

110 : DH : SI : ESI

111 : BH : DI : EDI
______________________________________________________________________________
表2 <PS:部分資料> rrr : Index Register
000 : EAX

001 : ECX

010 : EDX

011 : EBX

100 : No Index

101 : EBP

110 : ESI

111 : EDI
______________________________________________________________________________
表3 <PS:部分資料> mmm : Function 11
w=1
000 : DS:[BX+SI]

001 : DS:[BX+DI]

010 : SS:[BP+SI]

011 : SS:[BP+DI] BX

100 : DS:[SI]

101 : DS:[DI]

110 : SS:[BP]

111 : DS:[BX]
______________________________________________________________________________
表4 <PS:部分資料>
oo : Function

00 : If mmm = 110, then a displacement follows the operation; otherwise, no displacement is used

01 : An 8-bit signed displacement follows the opcode

10 : A 16-bit signed displacement follows the opcode

11 : mmm specifies a register, instead of an addressing mode
______________________________________________________________________________
上面的表,你都看明白了嗎? 現(xiàn)在我就教你們?nèi)绾卫眠@樣的表格來(lái)把匯編指令翻譯機(jī)器碼

3.指令格式簡(jiǎn)介

8086所用的16位指令格式:

________ _____________ ________ ________
|操作碼| + |mod-reg-r/m| + |位移量| + |立即數(shù)|
1~2字節(jié) 0~1字節(jié) 0~2字節(jié) 0~2字節(jié)

OK!以上就是基本知識(shí),下面我們來(lái)實(shí)踐吧:

———————————————————————————————————————
問(wèn)題:

MOV AX,1234H 對(duì)應(yīng)的機(jī)器碼為:B83412

MOV EBX,0 對(duì)應(yīng)的機(jī)器碼為:66BB00000000

MOV CL,55H 對(duì)應(yīng)的機(jī)器碼為: B155

MOV AX,BX 對(duì)應(yīng)的機(jī)器碼為:8BC3

我在問(wèn)一下,機(jī)器碼的數(shù)據(jù)格式是什么? 好像是 機(jī)器指令+操作數(shù)(高位存放在地址高位,低位存放在地址低位),但是前面MOV AX,怎么就變成了B8,弄不明白,請(qǐng)指教。

PS: 上面的題目是一個(gè)網(wǎng)友問(wèn)的,現(xiàn)在我來(lái)實(shí)踐一遍給你們看。
———————————————————————————————————————

指令1 -> MOV AX,1234H 對(duì)應(yīng)的機(jī)器碼為:B83412

解法: 判斷-> 這個(gè)是8086匯編16位匯編指令格式,并且是立即尋址方式
查表-> 打開opcodes.html文件,找到標(biāo)題為“Main Instructions”,單擊“M”字母,然后對(duì)應(yīng)查看 “MOV Reg,Imm”格式的“OpCode”項(xiàng)為:1011wrrr
再判斷-> 由于寄存器是AX, 立即數(shù)是1234H,明顯是“對(duì)字操作”,所以w=1
在查看本文章上面的“表1”,對(duì)應(yīng)的查到rrr的值為000
組合結(jié)果-> w=1
rrr=000
1011wrrr=1011 1000B ->B8H
根據(jù)“ 3.指令格式簡(jiǎn)介” -> B8H + |立即數(shù)(低位在前高位在后)|= B83412H

PS: "+" 符號(hào)不為“加號(hào)”

好了,已經(jīng)解完第一題了,機(jī)器碼為 B83412H

———————————————————————————————————————

指令4 -> MOV AX,BX 對(duì)應(yīng)的機(jī)器碼為:8BC3

解法: 判斷-> 這個(gè)是8086匯編16位匯編指令格式,并且是寄存器尋址方式
查表-> 打開opcodes.html文件,找到標(biāo)題為“Main Instructions”,單擊“M

”字母,然后對(duì)應(yīng)查看 “MOV Reg,Reg”格式的“OpCode”項(xiàng)為:1000101woorrrmmm
再判斷-> 由于寄存器是AX, BX 明顯是“對(duì)字操作”,所以w=1
在查看本文章上面的“表4”,對(duì)應(yīng)查到oo=11 因?yàn)槭羌拇嫫鲗ぶ贩绞?br>在查看本文章上面的“表1”,對(duì)應(yīng)查到rrr的值為000 ,因?yàn)楫?dāng)兩個(gè)操

作數(shù)都是寄存器,那么一般要以目的操作數(shù)為準(zhǔn)
在查看本文章上面的“表3”, 對(duì)應(yīng)查到mmm的值為011 ,因?yàn)楫?dāng)兩個(gè)操作數(shù)都是寄存器,那么一般要以源操作數(shù)為準(zhǔn)
組合結(jié)果-> w=1
oo=11
rrr=000
mmm=011
1000101woorrrmmm=1000 1011 1100 0011B ->8BC3H

好了,已經(jīng)解完第二題了,機(jī)器碼為8BC3H
———————————————————————————————————————

呵呵,不錯(cuò)吧,很簡(jiǎn)單吧,有了80X86 OPCODES 查詢表一切都是那么簡(jiǎn)單,如果還有什么問(wèn)題,大家都來(lái)這里提問(wèn)!

剩下的:

指令2 -> MOV EBX,0 對(duì)應(yīng)的機(jī)器碼為:66BB00000000

指令3 -> MOV CL,55H 對(duì)應(yīng)的機(jī)器碼為: B155

大家來(lái)練練手,注意指令2 需要用到32位指令格式,請(qǐng)查閱相關(guān)的80x86匯編語(yǔ)言書籍的機(jī)器語(yǔ)言部分,應(yīng)該有解釋的。

指令2的解法,請(qǐng)大家等待,或者大家研究一下,把解法貼出來(lái),給大家參考哦!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第6章 動(dòng)手操作-DEBUG的使用2(X86匯編教程)
深入系統(tǒng)底層
8課:單片機(jī)尋址方式與指令系統(tǒng)
lea指令與mov指令
匯編基礎(chǔ)知識(shí)
計(jì)算機(jī)原理學(xué)習(xí)(3)--內(nèi)存工作原理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服