![微機課件(第二章)_第1頁](http://file4.renrendoc.com/view/d830b4228d18069a5ad27afe6cceb3c6/d830b4228d18069a5ad27afe6cceb3c61.gif)
![微機課件(第二章)_第2頁](http://file4.renrendoc.com/view/d830b4228d18069a5ad27afe6cceb3c6/d830b4228d18069a5ad27afe6cceb3c62.gif)
![微機課件(第二章)_第3頁](http://file4.renrendoc.com/view/d830b4228d18069a5ad27afe6cceb3c6/d830b4228d18069a5ad27afe6cceb3c63.gif)
![微機課件(第二章)_第4頁](http://file4.renrendoc.com/view/d830b4228d18069a5ad27afe6cceb3c6/d830b4228d18069a5ad27afe6cceb3c64.gif)
![微機課件(第二章)_第5頁](http://file4.renrendoc.com/view/d830b4228d18069a5ad27afe6cceb3c6/d830b4228d18069a5ad27afe6cceb3c65.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章8086基本結構與指令系統(tǒng)單擊此處添加標題雙擊添加標題文字單擊此處添加段落文字內容雙擊添加標題文字單擊此處添加段落文字內容雙擊添加標題文字單擊此處添加段落文字內容雙擊添加標題文字單擊此處添加段落文字內容單擊此處添加標題單擊此處添加段落文字內容單擊此處添加段落文字內容單擊此處添加段落文字內容單擊此處添加段落文字內容12342.18086微處理器基本結構一、總線接口部件BIU(BusinterfaceUnit)二、執(zhí)行部件(ExecutionUnit)結構分為兩部分:Intel公司1978年推出80861979年推出8088,于1981年用于IBMPC/XT中2.18086微處理器基本結構ALU執(zhí)行部分控制電路輸入/輸出控制電路地址加法器20位16位指令隊列緩沖器8位執(zhí)行部件(EU)總線接口部件(BIU)外部總線16位運算寄存器標志寄存器通用寄存器8086CPU編程結構圖段寄存器DLCLBLALSIDIBPSPDHCHBHAH內部暫存器IPESSSDSCS
1、總線接口部件BIU管理8086CPU與系統(tǒng)總線的接口負責CPU對存儲器和外設的訪問具體地說:即BIU負責從內存的指定部分取出指令,送到指令流隊列中排隊;在執(zhí)行指令是所需的操作數,也由BIU從內存的指定區(qū)域取出,傳送給EU部分去執(zhí)行。包含:4個段寄存器、指令指針寄存器、地址加法器、總線控制器、指令隊列緩沖器、內部暫存器等組件1)段寄存器四個段寄存器(16位)1.必要性尋址空間1M,而216=64K
指針位數不夠用與16位地址總線相兼容2.內存可分為若干邏輯段(<=64k)單元地址=段首地址+內部地址存于CS,DS,SS,ES可存于SP,DP,SI,DI1)段寄存器4個16位段寄存器CS(代碼段)指明代碼段的起始地址SS
(堆棧段)指明堆棧段的起始地址DS(數據段)指明數據段的起始地址ES
(附加段)指明附加段的起始地址每個段寄存器用來確定一個邏輯段的起始地址,每種邏輯段均有各自的用途CSSSDSES如何分配各個邏輯段?內部結構CSDSSSES代碼段寄存器CS(CodeSegment)代碼段用來存放程序的指令序列代碼段寄存器CS存放代碼段的段地址指令指針寄存器IP指示下條指令的偏移地址處理器利用CS:IP取得下一條要執(zhí)行的指令匯編語言程序員看到的處理器,就是寄存器所以,一定要熟悉這些寄存器的名稱和作用堆棧段寄存器SS(StackSegment)堆棧段確定堆棧所在的主存區(qū)域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂的偏移地址處理器利用SS:SP操作堆棧頂的數據匯編語言程序員看到的處理器,就是寄存器所以,一定要熟悉這些寄存器的名稱和作用數據段寄存器DS(DataSegment)數據段存放運行程序所用的數據數據段寄存器DS存放數據段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址處理器利用DS:EA存取數據段中的數據匯編語言程序員看到的處理器,就是寄存器所以,一定要熟悉這些寄存器的名稱和作用附加段寄存器ES(ExtraSegment)附加段是附加的數據段,也保存數據:附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址處理器利用ES:EA存取附加段中的數據串操作指令將附加段作為其目的操作數的存放區(qū)域匯編語言程序員看到的處理器,就是寄存器所以,一定要熟悉這些寄存器的名稱和作用
如何分配各個邏輯段程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數據默認是安排在數據段,也經常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數據的存放比較靈活,實際上可以存放在任何一種邏輯段中思考演示邏輯段的分配示例64KB邏輯段1起點邏輯段10FFFF64KB1FFFF1000064KB00000FFFFF各段連續(xù)排列64KB邏輯段2起點邏輯段264KB邏輯段4、5起點邏輯段4、564KB邏輯段3起點邏輯段3各段靈活排列1MB存儲空間分段邏輯結構圖示200002FFFF64KBF000064KB16個邏輯段1MB??????2)指令指針寄存器IP(InstructionPointer)指示主存儲器指令的位置隨著指令的執(zhí)行,IP將自動修改以指示下一條指令所在的存儲器位置IP寄存器是一個專用寄存器IP寄存器與CS段寄存器聯(lián)合使用以確定下一條指令的存儲單元地址內部結構8086寄存器均為16位!??4)地址加法器CS、DS、SS和其他寄存器組合指向存儲單元狀態(tài)標志寄存器運算寄存器SPBPDISICS123456執(zhí)行部件控制電路輸入輸出控制電路AHALBHBLCHCLDHDLALU指令隊列緩沖器內部總線外部總線DSSSESIP內部暫存器Σ16位20位地址加法器段寄存器執(zhí)行部分(EU)總線接口部件(BIU)SPBPDISIAHALBHBLCHCLDHDLCSDSSSESIP內部暫存器狀態(tài)標志寄存器8086內部編程結構8088指令執(zhí)行過程2.執(zhí)行部件EU執(zhí)行部件負責指令的執(zhí)行,由下列4部分組成:①算術邏輯部件ALU(arithmeticlogicunit)。②寄存器組:4個通用寄存器,即AX、BX、CX、DX;4個專用寄存器,即基數指針寄存器BP(basepointer)堆棧指針寄存器SP(stackpointer)源變址寄存器SI(sourceindex)目的變址寄存器DI(destinationindex);③標志寄存器FR;④執(zhí)行部件控制電路4個通用寄存器通用的16位寄存器AXBXCXDX4個數據寄存器還可以分成高8位和低8位兩個獨立的寄存器,這樣又形成8個通用的8位寄存器AX:AHAL BX:BHBLCX:CHCL DX:DHDLAHALBHBLCHCLDHDLAXBXCXDX4個通用寄存器(續(xù))AX稱為累加器(Accumulator)使用頻度最高。用于算術、邏輯運算以及與外設傳送信息等如:字乘法、字除法、字I/OAH:字節(jié)乘、字節(jié)除
AL:字節(jié)乘、字節(jié)除、字節(jié)I/O、查表和十進制運算BX稱為基址寄存器(BaseaddressRegister)常用做存放存儲器地址CX稱為計數器(Counter)作為循環(huán)和串操作等指令中的隱含計數器.CL:變量位移、循環(huán)控制4個通用寄存器(續(xù))DX稱為數據寄存器(Dataregister)常用來存放雙字長數據的高16位——字乘、字除存放外設端口地址
——間接I/O地址2)專用寄存器4個16位專用寄存器_變址寄存器:SIDI_指針寄存器:BPSP常用于存儲器變址尋址方式時提供地址SI是源地址寄存器(SourceIndex)DI是目的地址寄存器(DestinationIndex)在串操作類指令中,SI通常指向源操作數。用來存放當前數據段中源操作數地址偏移量;DI通常指向目的操作數。用來存放當前數據段中目標操作數地址偏移量2)專用寄存器(續(xù))指針寄存器用于尋址內存堆棧內的數據SP為堆棧指針寄存器(StackPointer),
和堆棧段寄存器SS一起來確定堆棧的棧頂在內存中的偏移地址,又稱棧頂指針BP為基址指針寄存器(BasePointer),用于存放數據在堆棧段中的基地址或數據區(qū)基址偏移地址SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址堆棧(Stack)是主存中一個特殊的區(qū)域,采用“先進后出”或“后進先出”存取操作方式、而不是隨機存取方式。3)標志寄存器標志(Flag)用于反映指令執(zhí)行結果或
控制指令執(zhí)行形式8088處理器的各種標志形成了一個16位的標志寄存器FLAGS(程序狀態(tài)字PSW寄存器)其中7位未用,標志寄存器的9位標志位分為:狀態(tài)標志--用來記錄程序運行結果的狀態(tài)信息,許多指令的執(zhí)行都將相應地設置它CF
ZF
SFPFOF
AF控制標志--可由程序根據需要用指令設置,用于控制處理器執(zhí)行指令的方式DF
IF
TF3)標志寄存器FR——狀態(tài)標志狀態(tài)標志有6個,即CF、PF、AF、ZF、SF和OF
。CF(CarryFlag)——進位標志位
CF=1,表示本次運算中最高位(D15或D7)有
進(借)位;CF=0,無進(借)位。CFPFAFZFSFTFIFDFOF0123456789101112131415例:3AH+7CH=B6H,
沒有進位:CF=0
AAH+7CH=(1)26H,有進位:CF=1PF(parityflag)——
奇偶標志
PF=1,表示本次運算結果中有偶數個“l(fā)”,
PF=0,表示本次運算結果中有奇數個“1”PF標志僅反映最低8位中“1”的個數是
偶或奇,即使是進行16位字操作例:3AH+7CH=B6H=10110110B
結果中有5個“1”,是奇數:PF=0CFPFAFZFSFTFIFDFOF0123456789101112131415AF(AuxiliarycarryFlag)——輔助進位標志位。
AF=1;本次加(減)法運算結果的低4位
向高4位有進位(或借位)時;
AF=0。
CFPFAFZFSFTFIFDFOF0123456789101112131415這個標志主要由處理器內部使用,用于十進制算術運算調整指令中,用戶一般不必關心ZF(ZeroFlag)——零標志位。若當前的運算結果為零,ZF=1;否則即運算結果非零時,ZF=0。注意:ZF為1表示的結果是0,用于條件轉移例:3AH+7CH=B6H,結果不是零:ZF=0
84H+7CH=(1)00H,結果是零:ZF=1CFPFAFZFSFTFIFDFOF0123456789101112131415SF(SignFlag)——符號標志位。它和運算結果的最高位相同。
SF=1,表示本次運
算結果的最高位(第7位或第15位)為“l(fā)”,
否則SF=0。
有符號數據用最高有效位表示數據的符號所以,最高有效位就是符號標志的狀態(tài)CFPFAFZFSFTFIFDFOF0123456789101112131415OF(OverflowFlag)——溢出標志位。
當補碼運算有溢出時,OF=1;否則OF=0。CFPFAFZFSFTFIFDFOF0123456789101112131415思考如何判斷是否有溢出?例:3AH+7CH=B6H,產生溢出:OF=1
AAH+7CH=(1)26H,沒有溢出:OF=0
溢出判斷只有當兩個相同符號數相加(包括不同符號數相減),而運算結果的符號與原數據符號相反時,產生溢出;因為,此時的運算結果顯然不正確其他情況下,則不會產生溢出例1:3AH+7CH=B6H
溢出例2:AAH+7CH
無溢出例3:3AH-7CH
無溢出例4:AAH-7CH=2DH
溢出答案溢出和進位的區(qū)別溢出標志OF和進位標志CF是兩個意義不同的標志進位標志表示無符號數運算結果是否超出范圍,運算結果仍然正確溢出標志表示有符號數運算結果是否超出范圍,運算結果已經不正確例1:3AH+7CH=B6H無符號數: 58+124=182 范圍內,無進位有符號數:58+124=182 范圍外,有溢出例2:AAH+7CH=(1)26H無符號數: 170+124=294 范圍外,有進位有符號數: -86+124=28 范圍內,無溢出3)標志寄存器FR——控制標志方向標志DF(DirectionFlag)
用于串操作指令中,控制地址的變化方向:
CLD指令復位設置DF=0,存儲器地址自動增加;
STD指令置位設置DF=1,存儲器地址自動減少中斷允許標志IF(Interrupt-enableFlag)
控制可屏蔽中斷是否可以被處理器響應:
CLI指令復位設置IF=1,則允許中斷;
STI指令置位設置IF=0,則禁止中斷
3)標志寄存器FR——控制標志(續(xù))單步標志TF(TrapFlag)
用于控制處理器進入單步操作方式:設置TF=0,處理器正常工作;設置TF=1,處理器單步執(zhí)行指令單步執(zhí)行指令——處理器在每條指令執(zhí)行結束時,便產生一個編號為1的內部中斷這種內部中斷稱為單步中斷所以TF也稱為單步標志利用單步中斷可對程序進行逐條指令的調試這種逐條指令調試程序的方法就是單步調試2.28086指令系統(tǒng)指令:
控制計算機完成某種操作的命令,由操作碼和操作數兩部分組成。操作碼:指示計算機執(zhí)行什么操作。操作數:指明參加操作的數或者它所在的地址。指令系統(tǒng):
處理器所能識別的所有指令的集合
2.28086指令系統(tǒng)——指令格式指令的助記符格式操作數1,成被稱為目的操作數dest,它不僅可以作為指令操作的一個對象,還可以用來存放指令操作的結果操作數2,常被稱為源操作數src,它表示參與指令操作的一個對象
操作碼
操作數1,操作數2;注釋指令解決什么問題?匯編語言指令要解決的兩個問題:要指出進行什么操作——操作碼;要指出操作數和操作結果放在何處——尋址方式。問題指令的操作碼和操作數每種指令的操作碼:用一個助記符表示(指令功能的英文縮寫)對應著機器指令的一個或多個二進制編碼指令中的操作數:可以是一個具體的數值可以是存放數據的寄存器或指明數據在主存位置的存儲器地址操作數可以有一個操作數、兩個操作數或隱含在助記符中(形式上無操作數)。
2.2
8086的尋址方式根據操作數所在位置,8086尋址方式分為三大類:立即數尋址寄存器尋址存儲器尋址根據8086的指令格式的不同,存儲器尋址方式又可分為:直接尋址
寄存器間接尋址寄存器相對尋址基址變址尋址相對基址變址尋址8086尋址方式
與數據相關的尋址方式立即數尋址寄存器尋址存儲器尋址相對基址加變址
直接尋址寄存器間接寄存器相對基址加變址與地址相關的尋址方式段內尋址段間尋址段內直接尋址段內間接尋址段間直接尋址段間間接尋址1)立即數尋址操作數就在指令中提供,叫立即尋址方式。比如: ;將1090H送AX,AH中為10H,AL中為90H MOV AX,1090H 操作數緊跟在操作碼的后面,與操作碼一起放在存儲器的代碼段區(qū)域中。在取出指令的同時,也就取出了操作數。它主要用來給寄存器或存儲單元賦初值,也可以與寄存器操作數或存儲器操作數進行算術邏輯運算。90H10HAXAHAL10H90Hmov代碼段2)寄存器尋址
操作數在CPU內部的寄存器中,指令中操作數用內部寄存器——寄存器尋址方式。
例如: MOV AX,BX;將BX的內容復制到AX ADD AL,BH;將BH的內容加到AL的內容中 INC CX ;將CX的內容加1 ROL AH,1;將AH中的內容循環(huán)左移一位AXBX2)寄存器尋址(續(xù))16位的操作數通常用8個16位通用寄存器
(段寄存器僅用在部分傳送指令中),因通用寄存器是處理器的一部分,因此寄存器尋址方式可以提高工作效率。其中AX稱為累加器,若操作數存放在AX中的話,通常指令執(zhí)行時間要短些。8位的操作數必須用AH、AL、BH、BL、CH、CL、DH、DL等8個8位寄存器。
3)存儲器尋址方式操作數在主存儲器中,用主存地址表示程序設計時,8086采用邏輯地址表示主存地址段地址在默認的或用段超越前綴指定的段寄存器中指令中只需給出操作數的偏移地址(有效地址EA)8086設計了多種存儲器尋址方式1、直接尋址方式2、寄存器間接尋址方式3、寄存器相對尋址方式4、基址變址尋址方式5、相對基址變址尋址方式8086的存儲器存儲器是計算機存儲信息的地方。
掌握數據存儲格式,以及存儲器的分段
管理對以后的匯編程序設計非常重要。你能區(qū)別寄存器、存儲器(主存)?答案區(qū)別寄存器、存儲器(主存)寄存器是微處理器(CPU)內部暫存數據的存儲單元,以名稱表示,例如:AX,BX..….等存儲器也就是平時所說的主存,也叫內存,可直接與CPU進行數據交換。主存利用地址區(qū)別。指令中用‘[]’表示。方括號內為內存單元地址。答案存儲單元及其存儲內容每個存儲單元都有一個編號;
被稱為存儲器地址,指令中用‘[]’表示。方括號內為內存單元地址。每個存儲單元存放一個字節(jié)的內容例:存儲器地址為1200H單元存放有一個數據34H表達為
[1200H]=34H存儲器中的數據存放多字節(jié)數據在存儲器中占連續(xù)的
多個存儲單元:存放時,低字節(jié)存入低地址,高字節(jié)存入高地址;表達時用它的低地址表示多字節(jié)數據占據的地址空間。0002H號“字節(jié)”單元的內容:
[0002H]=34H0002H號“雙字”單元的內容:
[0002H]=1234H0002H號“雙字”單元的內容:
[0002H]=78561234H存儲器中的數據存放(續(xù))同一個存儲器地址可以是字節(jié)單元地址、
字單元地址、雙字單元地址等等。
(視具體情況來確定)字單元安排在偶地址(xxx0B)、雙字單元安排在模4地址(xx00B)等,被稱為“地址對齊(Align)”存儲器的分段管理8086CPU有20條地址線最大可尋址空間為220=1MB每個存儲單元具有一個唯一的20位編號,即物理地址物理地址范圍從00000H~FFFFFH8086CPU將1MB空間分成許多邏輯段(Segment)每個段最大限制為64KB段地址的低4位為0000B每個存儲單元還具有多個邏輯地址
形式為
段基地址:段內偏移地址物理地址、邏輯地址、有效地址(偏移地址)段地址說明邏輯段在主存中的起始位置,用16位段寄存器表達段地址偏移地址說明主存單元距離段起始位置的偏移量,偏移地址可以用16位寄存器或16位數據表示將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址一個物理地址可以有多個邏輯地址23500H+100H23600H12000H+FA0H12FA0H段地址左移4位加上偏移地址得到物理地址邏輯地址 2350H:100H和1200H:0FA0H物理地址
23600H和
12FA0H例如12H34H10H00H操作碼AX
AH
AL代碼段數據段1070H34H12H1071H數據在存儲器中,有效地址由指令直接給出——直接尋址。比如:
;將DS段的1070H和1071H
兩單元的內容取到AX中
MOV AX,[1070H]
3)存儲器尋址——直接尋址
默認段地址為DS段3)存儲器尋址——寄存器間接尋址寄存器間接尋址可分為四種:(1)以BX寄存器進行間接尋址—數據段基址尋址 MOV AX,[BX] ES:MOV
CX,[BX](2)以BP寄存器進行間接尋址—堆棧段基址尋址 MOV BX,[BP](3)
以SI寄存器進行間接尋址——變址尋址
MOV BX,[SI](4)以DI寄存器進行間接尋址——變址尋址
MOV BX,[DI]3)存儲器尋址——寄存器間接尋址(續(xù))操作數在某個存儲單元中,其偏移地址
在指令給出的方括號中的寄存器中,即寄存器的內容為操作數的偏移地址。所使用的段寄存器由指令中的間址寄存器確定。若用BX、SI、DI寄存器間址,則操作數在當前數據段中,即段地址在DS中。若用BP間址,則操作數在堆棧段SS中。只有上述4個寄存器可以用于間接尋址。間接尋址的優(yōu)點:只要對間址用的寄存器作適當修改,一條指令就可以對許多不同的存儲單元進行訪問。循環(huán)程序設計中,多用間接尋址。3)存儲器尋址——寄存器相對尋址4個用于間接尋址的寄存器的內容與一個位移量相加如:
MOV CL,[BX+10]或寫成: MOV CL,10[BX] MOV CL,[BX]+10操作數在某個存儲單元中,其偏移地址是指定的寄存器的內容與指令中給出的位移量相加之和。段地址依據使用的寄存器的不同而不同EA=8位偏移量16位偏移量+[BX][BP][SI][DI]3)存儲器尋址——基址變址尋址操作數在某個存儲器單元中,其偏移地址是指令中指定的基址寄存器和變址寄存器的內容與位移量3項相加之和。段地址由基址寄存器約定在哪一個段寄存器中。2個基址寄存器與2個變址寄存器組合有四種:
[BX+SI] 或寫成:[BX][SI] [BX+DI] [BP+SI] [BP+DI][BX][BP]EA=8位偏移量16位偏移量+[SI][DI]+3)存儲器尋址——相對基址變址尋址基址寄存器與變址寄存器組合,再加上一個位移量例: MOV CL,[BX+SI+10]有效地址=BX/BP+SI/DI+8/16位位移量段地址對應BX基址寄存器默認是DS,對應BP基址寄存器默認是SS;可用段超越前綴改變例:設
BX=0158H,DI=10A5H,位移量=1B57H,DS=2100H,求下列尋址方式下的有效地址和物理地址:①直接尋址②寄存器間接尋址(寄存器為BX)③BX寄存器相對間接尋址④變址尋址(寄存器為DI)⑤DI寄存器相對變址尋址⑥基址加變址的尋址⑦相對的基址加變址的尋址(BX為基址寄存器,DI為變址寄存器)答案①直接尋址:有效地址=1B57H物理地址=21000H+1B57H=22B57H
②寄存器間接尋址(寄存器為BX):有效地址=0158H物理地址=21000H+0158H=21158H③BX寄存器相對間接尋址:有效地址=0158H+1B57H=1CAFH物理地址=21000H+1CAFH=22CAFH答案④變址尋址(寄存器為DI):有效地址=10A5H物理地址=21000H+10A5H=220A5H⑤DI寄存器相對變址尋址:有效地址=10A5H+1B57H=2BFCH物理地址=21000H+2BFCH=23BFCH⑥基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):有效地址=0158H+10A5H=11FDH物理地址=21000H+11FDH=221FDH答案⑦相對的基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):有效地址=0158H+10A5H+1B57H=2D54H物理地址=21000H+2D54H=23D54H尋址方式演示尋址方式演示尋址方式演示尋址方式演示尋址方式演示尋址方式演示尋址方式演示總結:方括號“[]”運算符a.方括號的內容表示存儲器操作數的偏移地址;b.有多對方括號順序排列時,操作數的偏移地址等于各方括號內容之和;c.一個常量后面跟有方括號時,偏移地址等于該常量與方括號內容之和;d.一個變量后面跟有方括號時,偏移地址等于該變量的偏移地址與方括號內容之和。總結:帶方括號的地址表達式遵循的規(guī)則:
a.寄存器中只有BX、BP、SI、DI可在方括號中出現(xiàn);
b.不允許BX、BP同時出現(xiàn)在同一個地址表達式中;
c.不允許SI、DI同時出現(xiàn)在同一個地址表達式中;
d.當多個寄存器出現(xiàn)在方括號中時,只能作加運算;
e.
當方括號中包含BP,則隱含使用SS提供段地址,
否則均隱含使用DS提供段地址。
掌握操作數的尋址方式后,進入指令學習2.38086指令系統(tǒng)指令格式標號:操作碼
操作數1,操作數2
;注釋①一條指令中可以包含一個或多個操作數②涉及一個操作數的指令稱為單操作數指令③如位移量或立即數為16位,那么低位在前,高位在后指令執(zhí)行時間
一條指令執(zhí)行總時間=基本執(zhí)行時間
+計算有效地址的時間
+讀取內存的時間
字操作數在內存的存放格式也是影響一條指令執(zhí)行時間的因素。讀寫偶地址字
讀寫偶地址字節(jié)
讀寫奇地址字節(jié)
讀寫奇地址字
8086數據總線的傳輸特性:2.38086指令系統(tǒng)分類2.3.1數據傳送指令2.3.2算術指令2.3.3邏輯指令2.3.4串處理指令2.3.5控制轉移指令2.3.6處理機控制指令2.3.1數據傳送指令不論是專用計算機,還是通用計算機,也不管是數值計算或信息處理,還是實時控制,都需要傳送數據。因此,數據傳送是最大量、最基本、最主要的操作。傳送類指令的特點是把數據從計算機的一個部位傳送到另一個部位。把發(fā)送的部位稱之為“源”,接收的部位稱之為“目的地”。1通用數據傳送指令2累加器專用傳送指令3地址傳送指令4標志寄存器傳送指令1通用傳送指令——MOV(1)最基本的傳送指令(MOV)
MOV AL,BL ;BL中的8位數據送AL MOV ES,DX ;DX中16位數據送ES幾點注意:①通用傳送指令可傳送8位和16位數據。②通用傳送指令中總是既含源操作數,又含目的操作數。③不能在兩個內存單元之間直接傳送數據④CS和IP寄存器、立即數不能作為目的操作數⑤目的操作數和源操作數不允許同時為段寄存器1通用傳送指令——MOV(續(xù))⑥
用BX、SI、DI來間接尋址時,默認的段寄存器為DS,而用BP來間接尋址時,默認的段寄存器為SS
⑦執(zhí)行SS寄存器賦值
的傳送指令時,系
統(tǒng)自動禁止外部中
斷。
⑧所有的通用傳送指
令都不改變標志。立即數
段寄存器DSESSS通用寄存器AXBXCXDXBPSPSIDI存儲器MOV指令也并非任意傳送!CS1通用傳送指令——PUSH\POP(2)堆棧操作指令
堆棧的設置主要用來保護現(xiàn)場,寄存中間結果,并為主、子程序的轉返提供強有力的依托。
8086的堆棧操作都是字操作,將一個數壓入堆棧稱為進棧,SP自動減2,進棧的字就存放在新增加的兩個單元內。將一個數從堆棧彈出稱為出棧,出棧時,SP自動加2。棧頂隨進?;虺鰲2僮鞫兓?。1通用傳送指令——PUSH\POP推入堆棧指令PUSH和彈出堆棧指令POP。如:
PUSH源操作數POP目的操作數 PUSHDS
POPAX幾點注意:①堆棧操作總是按字進行的。②推入指令,SP減2,數據在棧頂。彈出指令正好相反③允許PUSHCS,但不允許POPCS。④堆棧的后進先出。⑤不能使用立即數方式⑥不影響標志位SSSP0000H(棧頂)存儲器高地址堆棧段(棧頂)SP=0040HSP=003EH12341234AHAL執(zhí)行前執(zhí)行后1通用傳送指令——PUSH\POP執(zhí)行PUSHAX的具體過程(設AX=1234):PUSH指令的功能POP指令的功能堆棧示例例:給定一個堆棧區(qū),地址為:1250H:0000H~1250H:0100H,(SP)=0052H,問:(1)當前的棧頂地址 (2)棧底地址 (3)段基地址SS(4)若存入數據AX=1234H,如何放置?此時SP的值如何?解:棧頂地址: 邏輯地址:1250H:0052H 物理地址:12552H
棧底地址: 邏輯地址:1250H:0100H 物理地址:12600H
段基地址: SS=1250H1250H:0000HSP=0052H
1250H:0100HPUSHAX執(zhí)行前堆棧情況堆棧段數據PUSHAX執(zhí)行后堆棧情況入棧方向出棧方向1250H:0000H
執(zhí)行后棧頂:SP=0050H
0051H
原棧頂:SP=0052H
250H:0100H1通用傳送指令——XCHG(3)交換指令 交換指令XCHG可以實現(xiàn)字節(jié)或字交換。如:
XCHGAL,BL XCHGBX,CX XCHG[2530],CX交換指令注意點:①目的操作數和源操作數不能均為內存單元。②
段寄存器和IP不能作為交換指令的操作數。
③不影響標志位 【例】指令執(zhí)行前,(BX)=1234H,(BP)=0100H,(SI)=0020H,(SS)=1F00H,(1F120H)=0000H,則源操作數物理地址=1F00H×10H+0100H+0020H=1F00H×10H+0120H=1F120H指令執(zhí)行后:(BX)=0000H,(1F120H)=1234H
XCHGBX,[BP+SI]2累加器專用傳送指令——IN、OUT
(1)輸入輸出指令分為:直接的輸入/輸出指令間接的輸入/輸出指令。輸入輸出指令注意點:①只能用累加器作為執(zhí)行輸入輸出的機構②尋址范圍: 直接輸入輸出指令為0~255
間接輸入輸出指令為0~65535。2累加器專用傳送指令——IN、OUT直接的輸入輸出指令提供端口號。如:IN AL,50H ;將50H端口的字節(jié)讀入ALIN AX,70H ;分別將70H、71H端口的內容讀入AL、AHOUT44H,AL ;將AL中的內容輸出到44H端口OUT80H,AX ;將AL、AH中的內容分別輸出到80H、81H兩端口
2累加器專用傳送指令——IN、OUT間接的輸入輸出指令,如: IN AL,DX ;從DX所指的端口中讀取 IN AX,DX ;從DX和DX+1所指出的兩個端口中讀取 OUTDX,AL ;將AL中的字節(jié)輸出到DX所指的端口中 OUTDX,AX ;將AL中的字節(jié)輸出到DX所指的端口中,同時將AH中的字節(jié)輸出到DX+1所指的端口中INAL,21H
說明:①該指令的目的操作數僅限于累加器,即8位操作采用AL,16位操作采用AX,不能由其他任何寄存器代替。②如果I/O尋址的口地址號在8位以內,可以用直接尋址方式,地址表達式則由一個8位立即數表示;如果I/O尋址的口地址號在16位以內,可以用寄存器間接尋址方式,所尋址的地址口號則裝入DX,間接尋址僅可以使用DX。2累加器專用傳送指令——XLAT
(2)換碼指令
換碼指令為XLAT,使累加器中的一個值變換為內存表格中的某一個值。
操作步驟:
1.建立轉換表(其最大容量位256B),將該表定位到某個邏輯段的一片連續(xù)地址中,并將表首的偏移地址置入BX.
2.將待轉換的數在表中的序號送入AL寄存器中。
3.執(zhí)行XLAT指令。
執(zhí)行結果是將待轉換的序號單元中的數據轉換成對應的代碼,并送回AL寄存器中,即([BX+AL])→AL。【例】例:數字0~9對應的格雷碼為:18H、34H、05H、06H、09H、0AH、0CH、11H、12H和14H,要求從某個端口給CPU輸入一位十進制數碼,CPU從對應端口輸出相應的格雷碼。MOVBX,TABLEINAL,1XLATTABLEOUT1,AL2累加器專用傳送指令——XLAT該指令有兩種格式,第二種格式中的地址標號是指代碼表的表首地址。它只是為提高程序可讀性而設置的,指令執(zhí)行時只使用預先存入BX中的代碼表首地址,而并不用匯編格式中指定的地址標號。(AL)是一個8位無符號數,所以表格中最多只能存放256個代碼。此指令的執(zhí)行結果不影響標志位。3地址傳送指令——LEA(1)取有效地址指令(LEA) 如: LEA AX,[2728] ;將內存單元的偏移量2728送AX LEA BX,[BP+SI] ;指令執(zhí)行后,BX中內容為BP+SI的值 LEA SP,[0482] ;使堆棧指針SP為4823地址傳送指令——LDS(2)裝入地址指令
LDS功能:將4字節(jié)的地址指針傳送到2個目的寄存器,比如: LDS DI,[2130H] ;使2130H和2131H中的偏移量送DI,2132H和2133H中的段值DS。3地址傳送指令——LES(3)裝入地址的指令LES功能:將一個地址指針裝入ES和另一個寄存器。例:LES DI,〔BP+04〕 ;將堆棧中存放的字符串首址送到ES和DI中4標志寄存器傳送指令(1)讀取標志指令(LAHF) 將標志寄存器的低8位送AH。(2)設置標志指令(SAHF)
將AH寄存器的相應位送標志寄存器的低8(3)對標志寄存器的堆棧操作指令 PUSHF將標志寄存器的值推入堆棧頂部。
POPF從堆棧彈出一個字送標志寄存器。2.3.2算術運算指令算術運算指令涉及兩種類型的數據無符號數8位無符號數的范圍為0~25516位無符號數的范圍為0~65535有符號數 8位有符號數的范圍為-128~+12716位有符號數的范圍為-32768~+327672.3.2算術運算指令所有算術運算指令均影響狀態(tài)標志。規(guī)則:當無符號數運算產生溢出時,CF為1;當有符號數運算產生溢出時,OF為1;如運算結果為0,則ZF=1;如運算結果為負數,則SF=1;如運算結果低8位中有偶數個1,則PF=1。1加法指令——ADD(1)不帶進位位的加法指令 如: ADD AL,50H ;AL和50H相加,結果放在AL中 ADD DI,SI ;DI和SI的內容相加,結果在DI1加法指令——ADDADD[BX+DI],AX ;BX+DI和BX+DI+12個單元和AX相加,結果在BX+DI和BX+DI+1所指單元ADD AX,[BX+2000H] ;BX+2000H和
BX+2001H所指單
元內容和AX的內容相加,結果在AX中1加法指令——ADC(2)帶進位位的加法指令 如: ADC AX,SI ;AX和SI中的內容以及CF的值相加,結果在AX ADCDX,[SI] ;SI和SI+1所指的單元的內容和DX的內容以及CF的值相加,結果在DX1加法指令——INC(3)增量指令(加1指令) 將操作數的內容加1。不影響CF標志如:INCAL ;將AL中的內容加1INC CX ;將CX中的內容加1INC BYTEPTR[BX+DI+500];將BX+DI+500所指單元的內容加12減法指令——SUB(1)不考慮借位的減法指令
SUB完成2個字節(jié)或2個字的相減。如: SUBBX,CX;將BX中的內容減去CX中的內容,結果在BX中SUB[BP+2],CL;將BP+2所指的單元中的值減去CL中的值,結果在BP+2所指的堆棧單元中
2減法指令——SUB
SUBAL,20 ;AL中的數減去20,結果在AL中 SUBSI,5010H ;SI中的數減去5010H,結果在SI中 SUBWORDPTR[DI],1000H ;DI和DI+1所指的兩單元中的數減去1000H,結果在DI和DI+1所指的單元中2減法指令——SBB(2)考慮借位的減法指令如: SBBAX,2030H ;將AX的內容減去2030H,并減去CF值 SBBWORDPTR[DI+2],1000H ;將DI+2和DI+3所指兩單元的內容減去1000H,并減去CF值,結果在DI+2和DI+3所指的單元2減法指令——例題完成雙字長相減操作,被減數存放在DX與AX中,減數存放在BX與CX中,差放在DX和AX中。程序段如下:SUB AX,CXSBB DX,BX2減法指令——DEC(3)減量指令(減1指令)將操作數減1。不影響CF標志如:DECAX ;將AX的內容減1,再送回AX中DECBL ;將BL的內容減1,結果送回BL中DECBYTEPTR[DI+2] ;將DI+2所指單元的內容減1,結果送回此單元DEC也一般用于對計數器和地址指針的調整。2減法指令——NEG(4)求補指令 操作數取補碼如:
NEGAL ;將AL中的數取補數 NEGCX ;將CX中的內容取補數
NEG指令對操作數執(zhí)行求補運算,即用零減去操作數,然后結果返回操作數求補運算也可以表達成:將操作數按位取反后加1NEG指令對標志的影響與用零作減法的SUB指令一樣NEG指令也是一個單操作數指令2減法指令——CMP(5)比較指令如:CMPAX,2000H ;將AX的內容和2000H相比較,結果影響標志位CMP AL,50H ;將AL中的數和50H比較,結果影響標志位CMP指令將目的操作數減去源操作數,但差值不回送目的操作數該指令主要用來判斷兩數的大小與是否相等,其后常常是條件轉移指令,根據比較的結果實現(xiàn)程序的分支。3乘法指令——MUL(1)無符號數的乘法指令如:MULBL ;AL中數和BL中數相乘,結果在AX中MULCX ;AX中數和CX中數相乘,結果在DX和AX中MULBYTEPTR[DI];AL中數和DI所指的單元中數相乘
,結果在AX中【例】無符號數0A3H與11H相乘。
MOVAL,0A3H ;(AL)=0A3H
MOVBL,11H
;(BL)=11H
MULBL
;(AX)=0AD3H3乘法指令——IMUL(2)有符號數的乘法指令
如: IMULCL ;AL中有符號數與CL中有符號數相乘,結果在AX中 IMULBX;AX和BX中的兩個有符號數相乘,結果在DX和AX中字節(jié)乘,字數據積送AX;字數據相乘,雙字乘積,高字送DX,低字送AX3乘法指令——IMULIMULBYTEPTR[BX];AL中的8位有符號數和BX所指單元的8位有符號數相乘,結果在AXIMULWORDPTR[DI];AX中的16位有符號數和DI、DI+1所指的單元16位有符號數相乘,結果在DX和AX中
MUL和IMUL執(zhí)行時,會影響標志位CF和OF,但,AF、PF、SF和ZF無意義。
4除法指令注意:
當被除數為16位,除數為8位時,8位的商放在AL,8位的余數放在AH當被除數為32位,除數為16位,16位的商放在AX中,16位的余數放在DX
4除法指令——DIV(1)無符號數的除法指令如:DIV CL
;AX中的數據除以CL中的數據,
商在AL中,余數在AH中DIV WORDPTR[DI];DX和AX中的32位數除以DI、
DI+1所指的16位數,商在AX中,
余數在DX中字節(jié)除法,(AX)/字節(jié),Al(商)、AH(余數)字除法,(DX,AX)/字,AX(商)、DX(余數)4除法指令——IDIV(2)有符號數的除法指令 如: IDIVBX ;將DX和AX中的32位數除以BX中的16位數,商在AX中,余數在DX中 IDIVBYTEPTR[DI] ;將AX中16位數除以DI所指單元中的8位數,商在AL,余數在AH4除法指令——IDIV【例】寫出實現(xiàn)有符號數0400H/0B4H運算的程序段。MOV AX,0400H ;(AX)=0400H(補);=+1024MOVBL,0B4H
;(BL)=0B4H(補)
;
=-76IDIV BL ;(AL)=0F3H(商)=-13
(AH)=DCH(余數)=-364除法指令幾點注意:①標志位AF、CF、OF、PF、SF和ZF無意義。②商范圍如下,超出了范圍則產生0號中斷:雙字除以字為-32768~+32767字除以字節(jié)-128~+127③有符號數除法規(guī)定余數的符號和被除數的符號相同。④要求用16位數除以8位數,或者用32位數除以16位數。 5符號擴展指令——CBW
(3)將字節(jié)擴展成字的指令CBW功能:將AL寄存器中的符號位擴展到AH中。 執(zhí)行時,不影響標志位?!纠繉⒆止?jié)數據擴展成字數據。MOV AL,0A5H ;(AL)=0A5HCBW ;(AX)=0FFA5HADD AL,70H ;(AL)=15HCBW ;(AX)=0015H5符號擴展指令——CWD(4)將字擴展成雙字的指令CWD功能:將AX中的被除數擴展成雙字,即把AX中的符
號位擴展到DX中。
執(zhí)行時,不影響標志位。例】將字數據擴展成雙字數據。MOVDX,0
;(DX)=0MOVAX,0FFABH
;(AX)=0FFABHCWD ;(DX)=0FFFFH;(AX)=0FFABH6十進制調整指令(1)壓縮的BCD碼調整指令
DAA對組合的BCD碼相加結果進行調整。 DAS對組合的BCD碼相減結果進行調整注意:①被調整的數必須在AL寄存器中;②影響除OF外的其它狀態(tài)標志;③DAA必須緊接在加法指令后,DAS緊接在減指令后;6十進制調整指令7算術運算指令應用舉例(1)將AL、AH、BL中的3個數相加,將“和”放入BH中。
MOV BH,0 ADD BH,AL ADD BH,AH ADD BH,BL7算術運算指令應用舉例(2)將兩個雙精度數相加。兩個加數分別在(DX,CX)、(BX,AX)中,將“和”存于(DX,CX)中。
ADD CX,AX ADD DX,BX 7算術運算指令應用舉例(3)兩個壓縮的BCD數相加。兩個加數分別在CL、AL中,將“和”存于AL中。 ADD AL,CL DAA (4)兩個非壓縮BCD數相加。兩個加數分別為5、7中,將“和”存于AL中。 MOV AL,5 ADD AL,7 AAA 7算術運算指令應用舉例(5)例:x、y、z均為32位數,分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲單元中,用指令序列實現(xiàn)wx+y+24-z,結果放在W,W+2單元中。 MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24ADCDX,0;x+y+24SUBAX,ZSBBDX,Z+2;x+y+24-zMOVW,AXMOVW+2,DX ;結果存入W,W+2單元 7算術運算指令應用舉例6)有兩個字符串形式的十進制數,2658和3619,求二者之和。即2658+3619=?由題意知,被加數和加數的每一位都以ASCII碼形式存放在內存中。假定二數在內存中均是低位在前,高位在后,另留出5個單元存放相加的結果。內存中數據存放形式見下頁圖。7算術運算指令應用舉例36H32H39H31HSTRING1STRING238H35H36H33H被加數加數數據段‘8’‘5’‘6’‘2’‘9’‘1’‘6’‘3’SUM結果......7算術運算指令應用舉例LEASI,STRING1;STRING1偏移地址送SILEADI,STRING2;STRING2偏移地址送DILEABX,SUM;SUM偏移地址送BXMOVCX,4;循環(huán)4次CLC;清進位標志AGAIN:MOVAL,[SI]ADCAL,[DI];帶進位加AAA;未壓縮BCD碼調正MOV[BX],AL;結果存入SUMINCSI;調整指針I(yè)NCDIINCBXDECCX;循環(huán)計數器減1JNZAGAIN;若未處理完,則轉AGAIN操作碼ANDORNOTXORTEST功能與或非異或測試2.3.3邏輯指令邏輯運算指令
移位指令
1邏輯運算指令邏輯運算指令包括AND(與)OR(或)NOT(非)XOR(異或)TEST(測試)例: ANDAL,0FH;
AL中內容和0FH相與,結果在AL中1邏輯運算指令ORAX,00F0H ;AX和00F0H相或,結果在AXXOR AX,AX
;AX內容本身進行異或,結果AX清零
TEST和AND執(zhí)行同樣操作,但TEST指令不送回操作結果,而僅僅影響標志位。如:TEST AX,8000H ;如AX的最高位為1,則ZF=0,否則ZF=1
1邏輯運算指令NOT指令求操作數的反碼。比如: NOT AL ;AL中內容求反碼,結果AL中邏輯運算指令對標志位的影響指令OFCFSFPFZFAFAND=0=00或10或10或1無定義OR=0=00或10或10或1無定義XOR=0=00或10或10或1無定義TEST=0=00或10或10或1無定義NOT不影響不影響不影響不影響不影響不影響由于邏輯運算操作是按位進行的,所以對標志位的影響不同于算術運算操作,2移位指令(1)非循環(huán)移位指令 4條移位指令:算術左移指令SAL邏輯左移指令SHL算術右移指令SAR邏輯右移指令SHR0CF操作數CF操作數CF0操作數2移位指令2移位指令(2)循環(huán)移位指令
循環(huán)左移指令ROL循環(huán)右移指令ROR帶進位位的循環(huán)左移RCL帶進位位的循環(huán)右移RCRCF操作數CF操作數CF操作數CF操作數演示演示演示演示SHL和SAL指令的功能SHR指令的功能SAR指令的功能ROL指令的功能ROR指令的功能RCL指令的功能RCR指令的功能3邏輯運算指令應用舉例(1)將AL中的壓縮的BCD碼轉換成非壓縮的BCD碼,存入AH和AL中。
MOV AH,AL AND AH,0FH MOV CL,4 SHR AH,CL AND AL,0FH(2)把AL的第5位置為1ORAL,00100000B3邏輯運算指令應用舉例(3)將AL中的數乘以4(不用乘法指令)。
MOV CL,2 SHL AL,CL(4)將AL中的數D0~D6清零。
AND AL,80H(5)把AH和AL中的非壓縮BCD碼組合成壓縮的BCD碼,放到AL中。MOV CL,4SHLAH,CLORAL,AH3邏輯運算指令應用舉例(6)把AL中的數x乘10因為10=8+2=23+21,所以可用移位實現(xiàn)乘10操作。程序如下:
SALAL,1;2x
MOVAH,AL
SALAL,1;4xSALAL,1;8xADD AL,AH;8x+2x=10x3邏輯運算指令應用舉例用移位操作代替乘除法可提高運算速度例:前例中計算x×10。(1)采用乘法指令: MOV BL,10MUL BL 共需70~77個T周期。(2)采用移位和加法指令:SAL AL,1;2TMOV AH,AL;2TSAL AL,1;2TSAL AL,1;2TADD AL,AH;3T只需11個T周期,僅相當于乘法的1/7。3邏輯運算指令應用舉例(7)將AL的高4位與低4位互換。
MOVCL,4ROLAL,CL(8)將1A00H內存單元中的雙字循環(huán)左移1位。
CMP[1A00H],8000HCMCRCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],13邏輯運算指令應用舉例例1:將以W為首址的字無符號數除以8,商放在AX中,余數放在DL中。
MOVAX,W
;先將其送入AX中 XORDL,DL ;將DL清零 SHRAX,1 ;邏輯右移,使W/2
RCRDL,1 ;余數放入DL的高位 SHRAX,1 ;W/4 RCRDL,1 ;余數向右移 SHRAX,1 ;W/8 RCRDL,1 ; MOVCL,5 ;
SHR
DL,CL ;余數右移5位2.3.4串處理指令設置方向標志指令字符串傳送指令存字符串指令取字符串指令字符串比較指令字符串檢索指令1設置方向標志指令
CLD DF置0,自動增
STD DF置1,自動減串操作指令的約定:(1)源串用DS:SI間址,目的串用ES:DI間址;對于較短的字符串,可將DS=ES;因此在字符串處理指令前,要先給SI和DI賦值;(2)源串和目的串的偏移地址指針的移動方向由方向標志DF確定:DF=0,SI和DI增量;DF=1,SI和DI減量。方向標志置位指令STD
STD
DF置1,SI和DI自動減量方向標志置位指令CLD
CLD
DF置0,SI和DI自動增量(3)若使重復前綴,則應將串長度送CX寄存器。2字符串傳送指令字符串傳送指令MOVSB/MOVSW
MOVSB用于字節(jié)傳送 MOVSW用于字傳送。
特點:指令前面常加重復前綴REP。
2字符串傳送指令——【例】設偏移地址為1000H的內存中存放著100個字節(jié)的數據。要求傳送到以2000H為起始地址的區(qū)域。MOV SI,1000H ;源地址為1000HMOV DI,2000H ;目的地址為2000HMOV CX,100 ;字符串長100個字節(jié)CLD ;方向標志清0,使指針按增量方向修改REPMOVSB ;將源地址開始的100個字節(jié)傳送到目的地址2字符串傳送指令——注意MOVSB指令注意點:①源地址用SI寄存器指出 目的地址用DI寄存器指出②CX中為字節(jié)數或字數。③若DF為0,則用MOVSB時,每傳送一次,SI和DI自動增1;用MOVSW時,每傳送一次,SI和DI自動增2。3存、取字符串指令
STOSB/STOSW(存字符串指令)功能:
把AL或AX中的數據存到ES段DI寄存器所指的內存單元。LODSB/LODSW(取字符串指令)功能:
將位于DS段由SI所指的存儲單元的內容取到AL或AX中。 5字符串比較指令字符串比較指令CMPSB/CMPSW功能:DS段由SI所指的字節(jié)或者字和ES段由DI所指的字節(jié)或者字相比較。 注意點:①預先將 源字符串的首址設置到DS段和SI中 目的字符串的首址設置到ES段和DI中 比較的字節(jié)數或字數設置到CX中 設置方向標志②在DF為0或為1,影響比較SI和DI的修改方向。③通常加前綴 REPNZ/REPNE、
REPZ/REPE6字符串檢索指令SCASB或者SCASW功能:
將AL中的字節(jié)或者AX中的字與位于ES段由DI寄存器所指的內存單元的字節(jié)或字相比較。7串重復前綴重復前綴:只允許用在串操作指令前,使緊跟其后的串操作指令重復執(zhí)行。在使用重復前綴前,重復次數必須放在寄存器CX中,而且是先判斷,然后再決定是否執(zhí)行串操作。REP 重復執(zhí)行,(CX)=重復次數REPE/REPZ
(CX≠0)且(ZF=1)相等/為零時重復
執(zhí)行,(CX)=次數REPNE/REPNZ
(ZF=0)且(CX≠0)不等/不為零時重
復執(zhí)行,(CX)=次數2.3.5控制轉移指令控制轉移指令中包括5類指令,即無條件轉移指令條件轉移指令循環(huán)控制指令子程序調用和返回指令中斷指令2.3.5控制轉移指令1、無條件轉移指令轉移指令分為JMP和Jcond兩大類,前者稱為無條件轉移指令,后者稱為條件轉移指令,常用于選擇結構的程序實現(xiàn)中。條件轉移只能實現(xiàn)段內
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年芳香族聚氨酯水分散液項目可行性研究報告
- 2025至2031年中國胸腺五肽行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國直滑式導電塑料電位器行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國烘烤紙盒行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國智能數字兆歐表行業(yè)投資前景及策略咨詢研究報告
- 2025年家用米糊豆?jié){機項目可行性研究報告
- 2025至2031年中國冷凍芹菜水餃行業(yè)投資前景及策略咨詢研究報告
- 2025年全自動腳輪旋鉚機項目可行性研究報告
- 2025年三頭插銷項目可行性研究報告
- 2025至2030年預處理飼料硫酸亞鐵項目投資價值分析報告
- 2024黑龍江公務員考試【A類、B類、省直、筆試】四套真題及答案
- 2025年中國高價HPV疫苗行業(yè)競爭格局分析及投資規(guī)劃研究報告
- 醫(yī)院感染與醫(yī)療器械消毒
- 2025年春新北師大版物理八年級下冊課件 第七章 運動和力 第四節(jié) 同一直線上二力的合成
- 智能客服系統(tǒng)中人工智能技術的應用
- 2025年公司年會活動總結樣本(3篇)
- 村衛(wèi)生室2025年初工作計劃
- 22G614-1 砌體填充墻結構構造
- 眼科常見病臨床診療思維與實習指導智慧樹知到答案2024年浙江大學
- DL-T5153-2014火力發(fā)電廠廠用電設計技術規(guī)程
- 眼科疾病與視覺健康
評論
0/150
提交評論