版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章8086指令系統(tǒng)2.18086的寄存器組2.28086的尋址方式2.3數(shù)據(jù)傳送類指令2.4算術(shù)運(yùn)算類指令2.5位操作類指令2.6串操作類指令2.7控制轉(zhuǎn)移類指令2.8處理機(jī)控制類指令什么是指令系統(tǒng)計(jì)算機(jī)的指令系統(tǒng)就是指該計(jì)算機(jī)能夠執(zhí)行的全部指令的集合。每種計(jì)算機(jī)都有它支持的指令集合。
16位8086指令系統(tǒng)是整個(gè)Intel80x86系列微處理器指令系統(tǒng)的基礎(chǔ)。本章內(nèi)容是本課程的一個(gè)關(guān)鍵內(nèi)容。第2章的重點(diǎn)本章的重點(diǎn)是理解8086常用指令的功能本章的關(guān)鍵是熟悉8086的寄存器組本章的難點(diǎn)是8086的各種尋址方式同學(xué)們一定要采用調(diào)試程序DEBUG進(jìn)行實(shí)踐感性認(rèn)識(shí)因深刻而顯重要調(diào)試程序DEBUGDEBUG是常用的匯編語言級調(diào)試工具,為匯編語言程序員提供了分析指令、跟蹤程序的有效手段。常用命令:-A匯編-U反匯編-T單步執(zhí)行-G斷點(diǎn)執(zhí)行-D數(shù)據(jù)顯示-R寄存器詳見本書附錄12.18086的寄存器組8086的寄存器(如圖2.1)都為16位,分為:8個(gè)通用寄存器1個(gè)指令指針寄存器1個(gè)標(biāo)志寄存器4個(gè)段寄存器掌握通用寄存器的作用熟悉各個(gè)標(biāo)志的含義切實(shí)理解存儲(chǔ)器組織和存儲(chǔ)空間分段的概念圖2.18086的寄存器組通用寄存器8086的16位通用寄存器是:
AX BX CX DX
SI DI
BP SP其中前4個(gè)數(shù)據(jù)寄存器都還可以分成高8位和低8位兩個(gè)獨(dú)立的寄存器。對其中某8位的操作,并不影響另外對應(yīng)8位的數(shù)據(jù)。8086的8位通用寄存器是:AH BH CH DHAL BL CL DL數(shù)據(jù)寄存器數(shù)據(jù)寄存器用來存放計(jì)算的結(jié)果和操作數(shù)每個(gè)寄存器又有它們各自的專用目的:AX--累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等;BX--基址寄存器,常用做存放存儲(chǔ)器地址;CX--計(jì)數(shù)器,作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器;DX--數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。變址寄存器變址寄存器常用于存儲(chǔ)器尋址時(shí)提供地址SI是源變址寄存器DI是目的變址寄存器串操作類指令中,SI和DI具有特別的功能指針寄存器指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)SP為堆棧指針寄存器,指示棧頂?shù)钠频刂稴P不能再用于其他目的,具有專用目的BP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址詳見堆棧操作指令堆棧的概念堆棧(Stack)是主存中一個(gè)特殊的區(qū)域它采用先進(jìn)后出FILO(FirstInLastOut)或后進(jìn)先出LIFO(LastInFirstOut)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式。堆棧通常由處理器自動(dòng)維持在8086中,由堆棧段寄存器SS和堆棧指針寄存器SP共同指示。詳見堆棧操作指令指令指針寄存器IP指令指針寄存器IP,指示代碼段中指令的偏移地址它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址計(jì)算機(jī)通過CS:IP寄存器來控制指令序列的執(zhí)行流程IP寄存器是一個(gè)專用寄存器標(biāo)志寄存器標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式。8086處理器中各種常用的標(biāo)志形成了一個(gè)16位的標(biāo)志寄存器FLAGS(也稱程序狀態(tài)字PSW寄存器)。OF111512DF10IF9TF8SF7ZF65AF43PF21CF0標(biāo)志的作用指令的執(zhí)行與標(biāo)志有很大關(guān)系。標(biāo)志分成兩類:狀態(tài)標(biāo)志--用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它。CF
ZF
SF
PF
OF
AF控制標(biāo)志--可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式。DF
IF
TF進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF=1;否則CF=0。例如:3AH+7CH=B6H,沒有進(jìn)位:CF=0AAH+7CH=(1)26H,有進(jìn)位:CF=1零標(biāo)志ZF(ZeroFlag)若運(yùn)算結(jié)果為0,則ZF=1,否則ZF=0。例如:3AH+7CH=B6H,結(jié)果不是零:ZF=086H+7CH=(1)00H,結(jié)果是零:ZF=1注意:ZF為1表示的結(jié)果是0符號(hào)標(biāo)志SF(SignFlag)運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=0。例如:3AH+7CH=B6H,最高位D7=1:SF=186H+7CH=(1)00H,最高位D7=0:SF=0有符號(hào)數(shù)據(jù)利用最高有效位表示數(shù)據(jù)的符號(hào)。所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài)。奇偶標(biāo)志PF(ParityFlag)當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF=1;否則PF=0。例如:3AH+7CH=B6H=10110110B,結(jié)果中有5個(gè)1,是奇數(shù):PF=0注意:PF標(biāo)志僅反映最低8位中“1”的個(gè)數(shù)是偶或奇,即使是進(jìn)行16位字操作。溢出標(biāo)志OF(OverflowFlag)若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則OF=0。例如:3AH+7CH=B6H,產(chǎn)生溢出:OF=1AAH+7CH=(1)26H,沒有溢出:OF=0問題:什么是溢出?溢出和進(jìn)位有什么區(qū)別?處理器怎么處理,程序員如何運(yùn)用?如何判斷是否溢出?什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)8個(gè)二進(jìn)制位能夠表達(dá)的整數(shù)范圍是:+127~-12816位表達(dá)的范圍是:+32767~-32768如果運(yùn)算結(jié)果超出了這個(gè)范圍,就是產(chǎn)生了溢出有溢出,說明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確例如:3AH+7CH=B6H,就是58+124=182,已經(jīng)超出-128~127范圍,產(chǎn)生溢出,所以O(shè)F=1;另一方面,補(bǔ)碼B6H表達(dá)真值是-74,顯然運(yùn)算結(jié)果也不正確。溢出和進(jìn)位溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志進(jìn)位標(biāo)志表示無符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確;溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確。請看例子溢出和進(jìn)位的對比例1:3AH+7CH=B6H無符號(hào)數(shù)運(yùn)算:58+124=182,范圍內(nèi),無進(jìn)位有符號(hào)數(shù)運(yùn)算:58+124=182,范圍外,有溢出例2:AAH+7CH=(1)26H無符號(hào)數(shù)運(yùn)算:170+124=294,范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算:-86+124=28,范圍內(nèi),無溢出如何運(yùn)用溢出和進(jìn)位處理器對兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無符號(hào)數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OF。應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。也就是說,如果將參加運(yùn)算的操作數(shù)認(rèn)為是無符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出。溢出的判斷判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡單的規(guī)則:只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加,而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),產(chǎn)生溢出;因?yàn)?,此時(shí)的運(yùn)算結(jié)果顯然不正確。其他情況下,則不會(huì)產(chǎn)生溢出。輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFlag)運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),AF=1;否則AF=0。例如:3AH+7CH=B6H,D3有進(jìn)位:AF=1這個(gè)標(biāo)志主要由處理器內(nèi)部使用,用于十進(jìn)制算術(shù)運(yùn)算指令中,用戶一般不必關(guān)心。方向標(biāo)志DF(DirectionFlag)用于串操作指令中,控制地址的變化方向:設(shè)置DF=0,串操作的存儲(chǔ)器地址自動(dòng)增加;設(shè)置DF=1,串操作的存儲(chǔ)器地址自動(dòng)減少。CLD指令復(fù)位方向標(biāo)志:DF=0STD指令置位方向標(biāo)志:DF=1中斷允許標(biāo)志IF(Interrupt-enableFlag)用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置IF=1,則允許中斷;設(shè)置IF=0,則禁止中斷。CLI指令復(fù)位中斷標(biāo)志:IF=0STI指令置位中斷標(biāo)志:IF=1陷阱標(biāo)志TF(TrapFlag)用于控制處理器是否進(jìn)入單步操作方式:設(shè)置TF=0,處理器正常工作;設(shè)置TF=1,處理器單步執(zhí)行指令。單步執(zhí)行指令——處理器在每條指令執(zhí)行結(jié)束時(shí),便產(chǎn)生一個(gè)編號(hào)為1的內(nèi)部中斷。這種內(nèi)部中斷稱為單步中斷,所以TF也稱為單步標(biāo)志。利用單步中斷可對程序進(jìn)行逐條指令的調(diào)試。這種逐條指令調(diào)試程序的方法就是單步調(diào)試。數(shù)據(jù)的存儲(chǔ)格式計(jì)算機(jī)中信息的單位有:位(bit)、字節(jié)(byte)、字(word)、雙字(doubleword)等在存儲(chǔ)器中,信息的存儲(chǔ)單元是:字節(jié)80x86微處理器對多字節(jié)數(shù)據(jù)采用:小端方式littleendian存儲(chǔ)的數(shù)據(jù)如果對齊邊界,則存取速度較快參見圖2.3圖2.38086的存儲(chǔ)格式數(shù)據(jù)信息的表達(dá)單位二進(jìn)制位:存儲(chǔ)一位二進(jìn)制數(shù):0或1。字節(jié):8個(gè)二進(jìn)制位,D7~D0。字:16位,2個(gè)字節(jié),D15~D0。雙字:32位,4個(gè)字節(jié),D31~D0。最低有效位LSB(LeastSignificantBit):指數(shù)據(jù)的最低位,即D0位;最高有效位MSB(MostSignificantBit):指數(shù)據(jù)的最高位,對應(yīng)字節(jié)、字、雙字分別指D7、D15、D31位。存儲(chǔ)單元及其存儲(chǔ)內(nèi)容每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào)——存儲(chǔ)器地址每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容例如:0002H單元存放有一個(gè)數(shù)據(jù)34H[0002H]=34H參見圖2.3小端方式多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元:存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址;多字節(jié)數(shù)據(jù)占據(jù)的地址空間用它的低地址表示。例如:圖2.3中2號(hào)“字”單元的內(nèi)容為:[0002H]=1234H2號(hào)“雙字”單元的內(nèi)容為:[0002H]=78561234H80x86處理器的“低對低、高對高”的存儲(chǔ)形式,被稱為“小端方式”。相對應(yīng)還存在“大端方式bigendian”。數(shù)據(jù)的地址對齊同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元地址、雙字單元地址等等(視具體情況來確定)。字單元安排在偶地址(xxx0B)、雙字單元安排在模4地址(xx00B)等,被稱為“地址對齊(Align)”。對于不對齊地址的數(shù)據(jù),處理器訪問時(shí),需要額外的訪問存儲(chǔ)器時(shí)間。應(yīng)該將數(shù)據(jù)的地址對齊,以取得較高的存取速度。存儲(chǔ)器的分段管理8086CPU有20條地址線,最大可尋址空間為220=1MB,物理地址范圍從00000H~FFFFFH。8086CPU將1MB空間分成許多邏輯段(Segment),每個(gè)段最大限制為64KB,段地址的低4位為0000B。這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外,還具有多個(gè)邏輯地址。物理地址和邏輯地址對應(yīng)每個(gè)物理存儲(chǔ)單元都有一個(gè)唯一的20位編號(hào),就是物理地址,從00000H~FFFFFH。分段后在用戶編程時(shí),采用邏輯地址,形式為段基地址:段內(nèi)偏移地址將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址。例如:邏輯地址“1460H:100H”=物理地址14700H顯然,一個(gè)物理地址可以有多個(gè)邏輯地址程序中有那些邏輯段呢?段基地址:段內(nèi)偏移地址段地址說明邏輯段在主存中的起始位置8086規(guī)定段地址必須是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址。偏移地址說明主存單元距離段起始位置的偏移量每段不超過64KB,偏移地址也可用16位數(shù)據(jù)表示。段寄存器和邏輯段8086有4個(gè)16位段寄存器:CS(代碼段寄存器)指明代碼段的起始地址SS(堆棧段寄存器)指明堆棧段的起始地址DS(數(shù)據(jù)段寄存器)指明數(shù)據(jù)段的起始地址ES(附加段寄存器)指明附加段的起始地址每個(gè)段寄存器用來確定一個(gè)段的起始地址,每種段均有各自的用途。程序中如何使用邏輯段呢?代碼段(CodeSegment)代碼段用來存放程序的指令序列:代碼段寄存器CS存放代碼段的段地址,指令指針寄存器IP指示下條指令的偏移地址;處理器利用CS:IP取得下一條要執(zhí)行的指令。堆棧段(StackSegment)堆棧段確定堆棧所在的主存區(qū)域:堆棧段寄存器SS存放堆棧段的段地址,堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂?;處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù)。數(shù)據(jù)段(DataSegment)數(shù)據(jù)段存放當(dāng)前運(yùn)行程序所用的數(shù)據(jù):數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址,各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址。處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)。附加段(ExtraSegment)附加段是附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存:附加段寄存器ES存放附加段的段地址,各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址。處理器利用ES:EA存取附加段中的數(shù)據(jù)。串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域程序員如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段;程序使用的堆棧一定在堆棧段;程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中。程序中如何指明數(shù)據(jù)所在的邏輯段呢?段超越前綴指令沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段;使用BP訪問主存,則在SS段。默認(rèn)的情況允許改變,需要使用段超越前綴指令。8086指令系統(tǒng)中有4個(gè):CS: ;代碼段超越,使用代碼段的數(shù)據(jù)SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù)DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)ES: ;附加段超越,使用附加段的數(shù)據(jù)給個(gè)例子吧!段超越的例子沒有段超越的指令實(shí)例:MOVAX,[2000H] ;AX←DS:[2000H],;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實(shí)例:MOVAX,ES:[2000H] ;AX←ES:[2000H],;從指定的ES附加段取出數(shù)據(jù)總結(jié)一下吧!段寄存器的使用規(guī)定(表2.1)訪問存儲(chǔ)器的方式 默認(rèn)的段寄存器 可超越的段寄存器 偏移地址取指令 CS 無 IP堆棧操作 SS 無 SP一般數(shù)據(jù)訪問 DS CS、ES、SS 有效地址EA(下列除外)串操作的源操作數(shù) DS CS、ES、SS SI串操作的目的操作數(shù) ES 無 DIBP基址的尋址方式 SS CS、DS、ES 有效地址EA程序分段的圖例(圖2.4)8086對邏輯段的要求是:段地址低4位均為0,每段最大不超過64KB。8086對每個(gè)段不要求必須是64KB,不要求各段之間完全分開、即可以重疊。圖2.4a是各自獨(dú)立段的分配示例圖2.4b是相互重疊段的分配示例1MB空間最多能分成多少個(gè)段?1MB空間最少能分成多少個(gè)段?1MB空間的分段1MB空間最多能分成多少個(gè)段?每隔16個(gè)存儲(chǔ)單元就可以開始一個(gè)段,所以1MB最多可以有:220÷16=216=64K個(gè)段1MB空間最少能分成多少個(gè)段?每隔64K個(gè)存儲(chǔ)單元開始一個(gè)段,所以1MB最少可以有:220÷216=16
個(gè)段圖2.4a各個(gè)邏輯段獨(dú)立的實(shí)例圖2.4b各個(gè)邏輯段重疊的實(shí)例2.1節(jié)的總結(jié)8086有8個(gè)8位通用寄存器、8個(gè)16位通用寄存器8086有6個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志8086將1MB存儲(chǔ)空間分段管理,有4個(gè)段寄存器,對應(yīng)4種邏輯段8086有4個(gè)段超越前綴指令,用于明確指定數(shù)據(jù)所在的邏輯段熟悉上述內(nèi)容后,就可以進(jìn)入2.2節(jié)了。2.28086的尋址方式本節(jié)從8086的機(jī)器代碼格式入手,論述:立即數(shù)尋址方式寄存器尋址方式存儲(chǔ)器尋址方式進(jìn)而熟悉8086匯編語言指令格式,尤其是其中操作數(shù)的表達(dá)方法;為展開8086指令系統(tǒng)做好準(zhǔn)備。指令的組成指令由操作碼和操作數(shù)兩部分組成操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。操作數(shù)是指令執(zhí)行的參與者,即各種操作的對象。有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)。操作碼操作數(shù)指令的操作碼和操作數(shù)每種指令的操作碼:用一個(gè)唯一的助記符表示(指令功能的英文縮寫),對應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼。指令中的操作數(shù):可以是一個(gè)具體的數(shù)值,可以是存放數(shù)據(jù)的寄存器,或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址。尋址方式指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源,尋找操作數(shù)的過程就是操作數(shù)的尋址方式。操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率。如何尋址一個(gè)操作數(shù)對程序的設(shè)計(jì)來講也很重要。8086的機(jī)器代碼(MachineCode)格式操作碼占1個(gè)或2個(gè)字節(jié)后面的各個(gè)字節(jié)指明操作數(shù):“modregr/m”字節(jié)表明采用的尋址方式,“位移量”字節(jié)給出某些尋址方式需要的對基地址的偏移量,“立即數(shù)”字節(jié)給出立即尋址方式需要的數(shù)值本身。操作數(shù)的各個(gè)字段有多種組合,如表2.2所示指令的助記符格式
操作碼操作數(shù)1,操作數(shù)2 ;注釋操作數(shù)2,稱為源操作數(shù)src,它表示參與指令操作的一個(gè)對象;操作數(shù)1,稱為目的操作數(shù)dest,它不僅可以作為指令操作的一個(gè)對象,還可以用來存放指令操作的結(jié)果。分號(hào)后的內(nèi)容是對指令的解釋。給個(gè)實(shí)例傳送指令MOV的格式MOVdest,src ;dest←src;MOV指令的功能是將源操作數(shù)src傳送至目的操作數(shù)destMOVAL,05H ;AL←05HMOVBX,AX ;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]功能演示傳送指令MOV的功能演示源操作數(shù)src目的操作數(shù)dest返回30H30H被傳送的數(shù)據(jù)立即數(shù)尋址方式指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)。這種操作數(shù)被稱為立即數(shù)imm它可以是8位數(shù)值i8(00H~FFH),也可以是16位數(shù)值i16(0000H~FFFFH)。立即數(shù)尋址方式常用來給寄存器賦值。MOVAL,05H ;AL←05HMOVAX,0102H ;AX←0102H調(diào)試一下吧!寄存器尋址方式操作數(shù)存放在CPU的內(nèi)部寄存器reg中,可以是:8位寄存器r8:AH/AL/BH/BL/CH/CL/DH/DL;16位寄存器r16:AX/BX/CX/DX/SI/DI/BP/SP;4個(gè)段寄存器seg:CS/DS/SS/ES。
MOVAX,1234H ;AX←1234H MOVBX,AX ;BX←AX調(diào)試一下吧!存儲(chǔ)器尋址方式指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EA),而段地址在默認(rèn)的或用段超越前綴指定的段寄存器中。8086設(shè)計(jì)了多種存儲(chǔ)器尋址方式1、直接尋址方式2、寄存器間接尋址方式3、寄存器相對尋址方式4、基址變址尋址方式5、相對基址變址尋址方式直接尋址方式有效地址在指令中直接給出默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOVAX,[2000H] ;AX←DS:[2000H];指令代碼:A10020MOVAX,ES:[2000H] ;AX←ES:[2000H];指令代碼:26A10020調(diào)試一下吧?。拇嫫鳎╅g接尋址方式有效地址存放在基址寄存器BX或變址寄存器SI、DI中。默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOVAX,[SI] ;AX←DS:[SI]調(diào)試一下吧?。拇嫫鳎┫鄬ぶ贩绞接行У刂肥羌拇嫫鲀?nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX、BP或SI、DI。有效地址=BX/BP/SI/DI+8/16位位移量段地址對應(yīng)BX/SI/DI寄存器默認(rèn)是DS,對應(yīng)BP寄存器默認(rèn)是SS;可用段超越前綴改變。MOVAX,[DI+06H] ;AX←DS:[DI+06H]MOVAX,[BP+06H] ;AX←SS:[BP+06H]調(diào)試一下吧!基址變址尋址方式有效地址由基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容構(gòu)成:有效地址=BX/BP+SI/DI段地址對應(yīng)BX基址寄存器默認(rèn)是DS,對應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴改變。MOVAX,[BX+SI] ;AX←DS:[BX+SI]MOVAX,[BP+DI] ;AX←SS:[BP+DI]MOVAX,DS:[BP+DI] ;AX←DS:[BP+DI]調(diào)試一下吧!相對基址變址尋址方式有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個(gè)8位或16位位移量之和:有效地址=BX/BP+SI/DI+8/16位位移量段地址對應(yīng)BX基址寄存器默認(rèn)是DS,對應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴改變。MOVAX,[BX+SI+06H] ;AX←DS:[BX+SI+06H]注意:(1)位移量可用符號(hào)表示(2)同一尋址方式有多種表達(dá)方式調(diào)試一下吧!位移量可用符號(hào)表示在寄
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆貴港市重點(diǎn)中學(xué)高三年級四月考數(shù)學(xué)試題
- 采購合同維保內(nèi)容
- 編制合同心得體會(huì)
- 防汛應(yīng)急演練
- 銀行會(huì)計(jì)主管述職報(bào)告
- 遼寧省丹東市七校協(xié)作體2024-2025學(xué)年高一上學(xué)期11月期中地理試題
- 高考班考題昌黎文匯學(xué)校2024-2025學(xué)年第一學(xué)期期中考試高二化學(xué)試題
- 放射性示蹤在醫(yī)學(xué)影像中的作用
- 風(fēng)電電纜相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- 基礎(chǔ)地質(zhì)勘查服務(wù)相關(guān)項(xiàng)目投資計(jì)劃書
- 社區(qū)法律知識(shí)講座
- 建筑工程施工工藝
- 玻璃體手術(shù)并發(fā)癥的預(yù)防及處理
- 原發(fā)免疫性血小板減少癥教學(xué)查房
- 高三定語從句復(fù)習(xí)公開課 全國一等獎(jiǎng)
- 免費(fèi)下載裝修合同范本
- 藥理學(xué)學(xué)習(xí)指導(dǎo)及練習(xí)題
- 雙重預(yù)防機(jī)制運(yùn)行情況評估報(bào)告
- 中級監(jiān)控理論知識(shí)考核試題及答案
- 《嬰幼兒行為觀察、記錄與評價(jià)》習(xí)題庫(項(xiàng)目一)認(rèn)識(shí)嬰幼兒行為觀察、記錄與評價(jià)
- 初中學(xué)生綜合素質(zhì)評價(jià)表
評論
0/150
提交評論