版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第二節(jié)第二節(jié) 8086/8088的指令系統(tǒng)的指令系統(tǒng)8086/8088的指令系統(tǒng)中共有的指令系統(tǒng)中共有92種基本指令。種基本指令。可以分成可以分成6個功能組個功能組:1數(shù)據(jù)傳送數(shù)據(jù)傳送(Data transfer)2算術運算(算術運算(Arithmetic)3邏輯運算和移位指令邏輯運算和移位指令(Logic& Shift)4串操作串操作(String manipulation)5控制轉移(控制轉移(Control Transfer)6處理器控制(處理器控制(Processor Control)2介紹指令系統(tǒng)使用介紹指令系統(tǒng)使用的符號:的符號:八位寄存器八位寄存器: AH,AL,BH,H,BL
2、,CH,CL,DH,DL 十六位通用寄存器十六位通用寄存器: AX,BX,CX,DX,SP,BP,SI,DI 堆棧指針堆棧指針 SP 指令指針指令指針 IP(或(或PC)標志位標志位Flags目的和源變址寄存器目的和源變址寄存器DI, SI段寄存器段寄存器CS, DS, ES, SS通用寄存器通用寄存器rAL或或AX(取決于操作數(shù)長度取決于操作數(shù)長度) acc38086/8088指令助記符表指令助記符表 (自學)自學) 指令類別指令類別記助符記助符數(shù)數(shù)據(jù)據(jù)傳傳送送通用傳送通用傳送輸入輸出輸入輸出目標地址傳送目標地址傳送標志傳送標志傳送算算術術運運算算加法加法減法減法乘法乘法除法除法轉換轉換MO
3、V, PUSH, POP, XCHG, XLATMOV, PUSH, POP, XCHG, XLATIN, OUTIN, OUTLEA, LDS, LESLEA, LDS, LESLAHF, SAHF, PUSHF, POPFLAHF, SAHF, PUSHF, POPFADD, ADC, INC,ADD, ADC, INC, AAA, DAAAAA, DAASUB, SBB, DEC, NEG, CMP, SUB, SBB, DEC, NEG, CMP, AAS, DAS,AAS, DAS,MUL, IMUL, MUL, IMUL, AAMAAMDIV, IDIV, DIV, IDIV, A
4、ADAADCBW, CWDCBW, CWD48086/8088指令助記符表(續(xù))指令助記符表(續(xù))邏邏輯輯指指令令邏輯運算邏輯運算移位移位 循環(huán)移位 循環(huán)移位串串處處理理串操作串操作重復控制重復控制控控制制轉轉移移轉轉移移無條件轉移無條件轉移條件條件轉移轉移循環(huán)控制循環(huán)控制過程調用過程調用中斷指令中斷指令處理器控制處理器控制AND, OR, XOR, NOT ,TESTAND, OR, XOR, NOT ,TESTSHL, SAL, SHR, SARSHL, SAL, SHR, SARROL, ROR, RCL, RCRROL, ROR, RCL, RCRMOVS, CMPS, SCAS, L
5、ODS, STOSMOVS, CMPS, SCAS, LODS, STOSREP, REPE/REPZ, REPNE/REPNZREP, REPE/REPZ, REPNE/REPNZJMPJMPJA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZ,JE/JZ,JNS,JO,JS, JG/JA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZ,JE/JZ,JNS,JO,JS, JG/JNLE,JGE/JNL,JL/JNGE,JLE/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPEJNLE,JGE/JNL,JL/JNGE,JLE
6、/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPELOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZLOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZCALL, RETCALL, RETINT, INTO, IRETINT, INTO, IRETCLC, STC, CMC, CLD, STD, CLI, STI, NOP, HLT, WAIT, ESC,LOCKCLC, STC, CMC, CLD, STD, CLI, STI, NOP, HLT, WAIT, ESC,LOCK指令類別指令類別記助符記助符5第二部分第二部分 8086/8088指令
7、系統(tǒng)指令系統(tǒng)一、一、 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令(Data transfer)(一)通用傳送指令(一)通用傳送指令(General Purpose Transfer)(二)輸入輸出指令(二)輸入輸出指令(Input and Output)(三)目的地址傳送指令(三)目的地址傳送指令(Address-object transfer)(四)標志傳送指令(四)標志傳送指令(Flag register transfer)6功能:功能: 負責把數(shù)據(jù)、地址或立即負責把數(shù)據(jù)、地址或立即數(shù)數(shù)傳傳 送到送到寄存器或存儲單元寄存器或存儲單元。特點:特點: 它是計算機最基本、最重要的一種操作,使用比例最高。它是計算機
8、最基本、最重要的一種操作,使用比例最高。種類種類(分四種分四種): 除除 SAHF和和POPF指令外,對標志位沒有影響。指令外,對標志位沒有影響。7(General Purpose Transfer)8088提供方便靈活的通用的傳送操作,適用于大多數(shù)操作數(shù)。提供方便靈活的通用的傳送操作,適用于大多數(shù)操作數(shù)。通用傳送指令包括:通用傳送指令包括:1、MOV (Movement)2、PUSH (Push word onto stack) POP (Pop word off stack)3、XCHG (Exchange)4、XLAT (Translate)81MOV dest,src ; (dest)
9、 (src) 目的目的源源目的目的 源源 把一個字節(jié)把一個字節(jié)(B)或一個字(或一個字(W)操作數(shù)由源傳送至目的。)操作數(shù)由源傳送至目的。 實現(xiàn)實現(xiàn):寄存器寄存器 寄存器寄存器/存儲器之間;存儲器之間;立即數(shù)立即數(shù)寄存器寄存器/存儲器存儲器寄存器寄存器/存儲器存儲器段寄存器之間的數(shù)據(jù)傳送。段寄存器之間的數(shù)據(jù)傳送。9 具體說,通用數(shù)據(jù)傳送指令能實現(xiàn):具體說,通用數(shù)據(jù)傳送指令能實現(xiàn): CPU內部寄存器之間的數(shù)據(jù)的任意傳送內部寄存器之間的數(shù)據(jù)的任意傳送(除了碼段寄存器(除了碼段寄存器CS和指令指針和指令指針I(yè)P以外)。以外)。例:例: MOV DL,CH ; 8位寄存器位寄存器 8位寄存器位寄存器
10、MOV AX,DX ; 16位寄存器位寄存器 16位寄存器位寄存器 MOV SI, BP MOV DS,BX ;通用寄存器;通用寄存器 段段寄存器寄存器 MOV AX, CS ;段段寄存器寄存器 通用寄存器通用寄存器10 立即數(shù)傳送至立即數(shù)傳送至CPU內部通用寄存器組內部通用寄存器組 (AX、BX、CX、DX、BP、SP、SI、DI)。)。 用于給寄存器賦初值。用于給寄存器賦初值。 例:例: MOV CL,04H;立即數(shù);立即數(shù)8位位寄存器寄存器 MOV AX,03FFH;立即數(shù);立即數(shù)16位位寄存器寄存器 MOV WORD PTR SI ,057BH ;立即數(shù);立即數(shù)存儲器存儲器MOV BY
11、TE PTR MEM, 5 ;立即數(shù);立即數(shù)存儲器存儲器11 CPU內部寄存器(除內部寄存器(除CS和和IP外)外)與存儲器(所有尋址方式)之間數(shù)據(jù)傳送。與存儲器(所有尋址方式)之間數(shù)據(jù)傳送??梢詫崿F(xiàn)一字節(jié)或一個字的傳送??梢詫崿F(xiàn)一字節(jié)或一個字的傳送。 例:例:MOV MEM , AX; 累加器累加器存儲器存儲器,直接尋址直接尋址MOV MEM ,DS;段寄存器;段寄存器存儲器,存儲器,直接尋址直接尋址MOV DISPBX ,CX;寄存器;寄存器存儲器,存儲器,變址尋址變址尋址MOV AX , DISP SI;存儲器;存儲器累加器,累加器,變址尋址變址尋址MOV DS , MEM;存儲器;存儲
12、器段寄存器,段寄存器,直接尋址直接尋址MOV CX , DISP BX SI ;存儲器;存儲器累加器,累加器,相對基址加變址相對基址加變址12 j MOV MEM2 , MEM1 錯。錯。MOV AX , MEM1MOV MEM2 , AX 對。對。 例例 : MOV DS,2000H 錯。錯。MOV AX, 2000HMOV DS , AX 對。對。 13l MOV ES , DS ; 錯錯MOV AX , DSMOV ES , AX ; 對對 。 例:例:MOV CS,AX ; 錯錯 MOV AX,CS ;對對 。 MOV IP, AX ;錯錯 MOV AX, IP ; 對。對。14BX、
13、SI、DI間址間址默認段地址為默認段地址為DS,BP間址間址默認段地址默認段地址SS。這樣做為了允許程序員連續(xù)用兩條指令分別對這樣做為了允許程序員連續(xù)用兩條指令分別對SS和和SP寄寄存器賦值,同時又防止堆??臻g變動過程出現(xiàn)中斷。存器賦值,同時又防止堆??臻g變動過程出現(xiàn)中斷。(除(除SAHF、POPF以外)。以外)。15 例:例:實現(xiàn)將實現(xiàn)將AREA1開始的開始的100個數(shù)據(jù)傳送到個數(shù)據(jù)傳送到AREA2開始的單元。開始的單元。AREA1:AREA2:100個數(shù)據(jù)個數(shù)據(jù)16分析題意:分析題意: 可以用可以用200條條MOV指令來完成指令來完成100個數(shù)據(jù)傳送,個數(shù)據(jù)傳送, 指令操作重復,每個數(shù)據(jù)傳
14、送后的地址是變化的。指令操作重復,每個數(shù)據(jù)傳送后的地址是變化的。 可以利用循環(huán),可以利用循環(huán),但每循環(huán)一次要修改地址(源地址和目的地址),但每循環(huán)一次要修改地址(源地址和目的地址),必須把地址放在寄存器當中,用必須把地址放在寄存器當中,用寄存器間接尋址來尋找操作數(shù)寄存器間接尋址來尋找操作數(shù).17得到如下程序:得到如下程序:MOV SI, AREA1 MOV DI, AREA2 MOV CX,100AGAIN :MOV AL,SIMOV DI,AL JNZ AGAIN18 MOV指令的字節(jié)數(shù)、時鐘周期數(shù)、指令的字節(jié)數(shù)、時鐘周期數(shù)、CPU與內存間傳送次數(shù)與內存間傳送次數(shù)字節(jié)字節(jié)例例時鐘數(shù)時鐘數(shù)M
15、M傳送到傳送到CPUCPU次數(shù)次數(shù)MOVMOV指令操作數(shù)指令操作數(shù)AX MAX M M AX M AX10(14)10(14)1 13 3MOV COUNTDI, AXMOV COUNTDI, AXR RR R10(14)10(14)1 13 3MOV AX,TEMPMOV AX,TEMP2 22 2MOV DS,BXMOV DS,BXM RM RR MR M8(12)+ EA8(12)+ EA12424MOV BP,STAK_TOPMOV BP,STAK_TOP9(13)+ EA9(13)+ EA1 12424MOV COUNTBXSI,CXMOV COUNTBXSI,CXi im m R
16、R( (段寄存器除外)段寄存器除外)4 42323MOV CL,2MOV CL,2i im m M M10(14)+ EA10(14)+ EA1 13636MOV word ptrMOV word ptr BP,5H BP,5HR R段段 R R1616(CS(CS、IPIP除外)除外)2 22 2MOV ES,CXMOV ES,CXMOV BP,SSMOV BP,SSM RM R段段R R段段 M M8(12)+ EA8(12)+ EA12424MOV DS,SEG_BASEMOV DS,SEG_BASE9(13)+ EA9(13)+ EA1 12424MOVBXSEG_SAN,CSMOVB
17、XSEG_SAN,CS19執(zhí)行指令所需的時鐘周期數(shù),執(zhí)行指令所需的時鐘周期數(shù), 直接決定了指令的執(zhí)行時間。直接決定了指令的執(zhí)行時間。 決定于是決定于是字節(jié)字節(jié)操作還是操作還是字字操作;操作; 若是若是內存內存操作數(shù),決定于操作數(shù),決定于尋址方式尋址方式(還要加上內存操(還要加上內存操 作數(shù)的尋址時間作數(shù)的尋址時間 )。表中表中b( )的含義:的含義: b 字節(jié)操作時鐘數(shù)字節(jié)操作時鐘數(shù) ( )字操作時鐘數(shù))字操作時鐘數(shù)20如下表所示如下表所示: (若段超越,再加兩個時鐘周期若段超越,再加兩個時鐘周期)寄存器間接尋址寄存器間接尋址尋址方式尋址方式計算EA所需時間計算EA所需時間直接尋址直接尋址寄存
18、器相對尋址寄存器相對尋址基址加變址尋址基址加變址尋址BP+DI, BX+SIBP+DI, BX+SIBP+SI, BX+DIBP+SI, BX+DI相對基址加變址尋址相對基址加變址尋址BP+DI+位移量】, BX+SI+位移量BP+DI+位移量】, BX+SI+位移量BP+SI+位移量】, BX+DI+位移量BP+SI+位移量】, BX+DI+位移量6 65 59 97 78 81111121221:指令字節(jié)數(shù)與尋址方式有關。指令字節(jié)數(shù)與尋址方式有關。 通常操作碼占二個字節(jié);通常操作碼占二個字節(jié); 立即尋址立即尋址 : 立即數(shù)增加立即數(shù)增加1-2個字節(jié)數(shù);個字節(jié)數(shù); 操作數(shù)在內存中操作數(shù)在內存
19、中 : 直接尋址直接尋址 :直接地址為直接地址為1-2個字節(jié),總的指令長個字節(jié),總的指令長3-4個字節(jié);個字節(jié); 寄存器間接尋址(沒有位移量)寄存器間接尋址(沒有位移量): 2個字節(jié);個字節(jié); 變址尋址或者相對基址加變址變址尋址或者相對基址加變址 : 都有都有1-2字節(jié)的位移量,字節(jié)的位移量,指令字節(jié)數(shù)為指令字節(jié)數(shù)為2-4個個 字節(jié)。字節(jié)。22指執(zhí)行指令時,內存與指執(zhí)行指令時,內存與CPU之間數(shù)據(jù)傳送的次數(shù)。之間數(shù)據(jù)傳送的次數(shù)。 凡是立即數(shù)凡是立即數(shù)寄存器或寄存器之間的傳送無此傳送數(shù)。寄存器或寄存器之間的傳送無此傳送數(shù)。 凡是寄存器與存儲器之間傳送次數(shù)為凡是寄存器與存儲器之間傳送次數(shù)為1。23
20、2 PUSH (Push word onto stack) POP (Pop word off stack) 這是兩條堆棧操作指令。這是兩條堆棧操作指令。堆棧堆棧按照按照先進后出先進后出原則組織的一段內存區(qū)域,原則組織的一段內存區(qū)域, 下推式的(規(guī)定堆棧設置在堆棧段內)改變下推式的(規(guī)定堆棧設置在堆棧段內)改變SP的內容,的內容, 隨著隨著推入堆棧內容增加,推入堆棧內容增加,SP的值減少。的值減少。 先進后出工作原則(先進后出工作原則(Last In First Out 簡稱簡稱LIFO) 堆棧在內存中的情況:堆棧在內存中的情況: 24 可以可以用一條立即數(shù)傳送指令給用一條立即數(shù)傳送指令給SP
21、賦值賦值,確定,確定SP在在SS段段中的初始位置。中的初始位置。例:例:設:設: (SS)=9000H , 堆棧段為堆棧段為64KB MOV SP,0E200H ;(SP)=0E200H則:則: 整個堆棧段的物理地址范圍為:整個堆棧段的物理地址范圍為: 堆棧在內存中的情況如右圖所示:堆棧在內存中的情況如右圖所示:.偏移地址偏移地址物理地址物理地址00000H(低地址)00000H(低地址)90000H90000H9E200H9E200H9FFFFH9FFFFHFFFFHFFFFH(SP)=E200H(SP)=E200H0000H0000H堆堆棧棧段段堆棧在內存中的情況堆棧在內存中的情況25q
22、調用子程序(或過程)或發(fā)生中斷時要調用子程序(或過程)或發(fā)生中斷時要保護斷點的地址保護斷點的地址, 子程序或中斷返回時恢復斷點。子程序或中斷返回時恢復斷點。26主程序主程序 子程序子程序:子程序:在一個實際程序中,有些操作要執(zhí)行多次,把要子程序:在一個實際程序中,有些操作要執(zhí)行多次,把要 重重 復執(zhí)行復執(zhí)行(subroutine)操作編為子程序。操作編為子程序。 也常把一些常用的操作標準化、通用化的子程序。也常把一些常用的操作標準化、通用化的子程序。主程序(主程序(Main program)往往要調用子程序往往要調用子程序 或處理或處理 中斷中斷, 暫停主程序,執(zhí)行子程序或中斷服務程序。暫停主
23、程序,執(zhí)行子程序或中斷服務程序。27 (8088中碼段寄存器中碼段寄存器CS和指令指針和指令指針I(yè)P),), 才能才能,通常用到,通常用到內部寄存器內部寄存器,執(zhí)行結果會影響,執(zhí)行結果會影響標志位,必須在調用子程序之前將標志位,必須在調用子程序之前將。 子程序嵌套或子程序遞歸(自調自)子程序嵌套或子程序遞歸(自調自) 保留許多信息,而且保證正確返回(且后進先出)。保留許多信息,而且保證正確返回(且后進先出)。 后保留先取出原則后保留先取出原則(即(即LIFO-LAST In First out)。)。28注意:注意:SP堆棧指針堆棧指針,始終指向棧頂。始終指向棧頂。SP初值用初值用MOV SP
24、,i m來設定。來設定。29q 存放存放CPU寄存器或存儲器中暫時不使用的數(shù)據(jù)寄存器或存儲器中暫時不使用的數(shù)據(jù), 使用數(shù)據(jù)時將其彈出:使用數(shù)據(jù)時將其彈出: PUSH AX; 將將(AX)入棧入棧.11112222(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆棧棧段段PUSH AX前PUSH AX前(AX).22H22H11H11H.11H11H22H22H(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆棧棧段段PUSH AX后PUSH AX后(AX)30使用數(shù)據(jù)時將其彈出:使用數(shù)據(jù)時將其彈出:POP BX.22H22H11H11H.33H33H44H4
25、4HBXBX(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆棧棧段段POP BX前POP BX前.22H22H11H11H.11H11H22H22HBXBX(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆棧棧段段POP BX后POP BX后31q 調用子程序(或過程)或發(fā)生中斷時要保護斷點的地址,調用子程序(或過程)或發(fā)生中斷時要保護斷點的地址, 子程序或中斷返回時恢復斷點。子程序或中斷返回時恢復斷點。子程序嵌套子程序嵌套.斷點2(L)斷點2(L)斷點2(H)斷點2(H)斷點1(L)斷點1(L)斷點1(H)斷點1(H).(SP)(SP)先先壓壓入入后后壓
26、壓入入先先彈彈出出后后彈彈出出堆堆棧棧段段斷點地址壓入和彈出情況斷點地址壓入和彈出情況主主程程序序子子程程序序1 1子子程程序序2 2斷點1斷點1斷點2斷點2彈出彈出斷點2斷點2彈出彈出斷點1斷點132 (堆棧操作指令有兩條堆棧操作指令有兩條): 格式:格式:PUSH src ; (SP) (SP)-2 (SP)+1,(SP) (src) 操作如:操作如:PUSH AX 格式:格式:POP dest ;(dest) (SP)+1,(SP) (SP) (SP)+2操作如:操作如: POP BX33 堆棧操作都按字操作。堆棧操作都按字操作。 PUSH , POP 指令的操作數(shù)可能有三種:指令的操作
27、數(shù)可能有三種:寄存器(通用寄存器,地址指針,變址寄存器)寄存器(通用寄存器,地址指針,變址寄存器),段寄存器段寄存器(CS除外,除外,PUSH CS 合法,合法,POP CS 非法)非法),存儲器。存儲器。 執(zhí)行執(zhí)行PUSH 指令指令, (SP)-2 (SP),低字節(jié)放在低地址,高字節(jié)放在高地址。低字節(jié)放在低地址,高字節(jié)放在高地址。隨著推入堆棧內容增加,堆棧就擴展,隨著推入堆棧內容增加,堆棧就擴展,SP的值減少,的值減少, 但但SP總是指向棧頂,總是指向棧頂, 堆棧工作原則堆棧工作原則后進先出。后進先出。 堆棧最大容量即為堆棧最大容量即為SP的初值與的初值與SS之間的差。之間的差。34堆棧應用
28、舉例:堆棧應用舉例: 例:例:MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP, 6例例 : PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX35(Exchange)格式:格式:XCHG dest , src;(dest) (src)執(zhí)行操作:執(zhí)行操作: 可以可以 實現(xiàn):實現(xiàn): 注意:注意: 存儲器之間不能交換,存儲器之間不能交換,兩個操作數(shù)中必須有一個在寄存器中;兩個操作數(shù)中必須有一個在寄存器中; 段寄存器不能作為一個操作數(shù);段寄存器不能作為一個操作數(shù); 允許字或字節(jié)操
29、作,不影響標志位。允許字或字節(jié)操作,不影響標志位。36應用舉例:應用舉例:XCHG BL,DLXCHG AX,SIXCHG COUNTDI, AXXCHG BX,DI(錯)錯)XCHG DS, AX (錯)錯)37該指令不影響標志位。該指令不影響標志位。格式:格式: XLAT str_table;(;(AL)(BX )+(AL) 或或 XLAT str_table表格符號地址(首地址),表格符號地址(首地址), 只是為了提高可讀性而設置,匯編時仍用只是為了提高可讀性而設置,匯編時仍用BX。 38XLAT指令使用方法指令使用方法: 先建立一個字節(jié)表格;先建立一個字節(jié)表格; (相對與表格首地址位移
30、量)(相對與表格首地址位移量); (表中第一個元素的序號為(表中第一個元素的序號為0) 。 (AL)為轉換的代碼。為轉換的代碼。39 若把字符的若把字符的掃描碼掃描碼轉換成轉換成ASCII碼碼; 或或數(shù)字數(shù)字09轉換成轉換成7段數(shù)碼所需要的相應代碼(段數(shù)碼所需要的相應代碼(字形碼字形碼)等)等就要用就要用XLAT指令。指令。例:內存的數(shù)據(jù)段中有一張十六進制數(shù)字的例:內存的數(shù)據(jù)段中有一張十六進制數(shù)字的ASCII碼表。碼表。 首地址為:首地址為:Hex_table ,欲查出表中第欲查出表中第10個元素(個元素(A)40執(zhí)行指令序列執(zhí)行指令序列:MOV BX,OFFSET Hex_tableMOV
31、AL,0AH XLAT Hex_table假設:假設:(DS)=F000H, Hex_table=0040H(AL)=0AH執(zhí)行執(zhí)行XLAT以后:以后: (AL)=41H=(F004AH),),即即“A”的的ASCII碼。碼。30H30H31H31H32H32H.39H39H41H41H42H42H.46H46H.Hex_tableHex_tableHex_table+1Hex_table+1Hex_table+2Hex_table+2Hex_table+0AHHex_table+0AHHex_table+0BHHex_table+0BHHex_table+0FHHex_table+0FHFF
32、BBAA9911220016進制數(shù)的進制數(shù)的ASCII碼表碼表41(Input and Output)輸入輸出指令共兩條:輸入輸出指令共兩條: (Input byte or word) (Output byte or word) 輸入指令輸入指令用于用于CPU從外設端口接受數(shù)據(jù)從外設端口接受數(shù)據(jù), 輸出指令輸出指令用于用于CPU向外設端口發(fā)送數(shù)據(jù)。向外設端口發(fā)送數(shù)據(jù)。 無論接受還是發(fā)送數(shù)據(jù),必須通過累加器無論接受還是發(fā)送數(shù)據(jù),必須通過累加器AX(字)或字)或AL(字節(jié)),字節(jié)),又稱累加器專用傳送指令又稱累加器專用傳送指令 。 42每個外設要占幾個端口:數(shù)據(jù)口,狀態(tài)口和控制口。每個外設要占幾個
33、端口:數(shù)據(jù)口,狀態(tài)口和控制口。CPUCPUI/OI/O設備設備譯譯碼碼數(shù)據(jù)端口數(shù)據(jù)端口DBDBABABCBCBI/O接口I/O接口狀態(tài)端口狀態(tài)端口控制端口控制端口43在在IBMPC機里,可以配接許多外部設備,機里,可以配接許多外部設備,每個外設與每個外設與CPU之間交換數(shù)據(jù),狀態(tài)信息和控制命令,之間交換數(shù)據(jù),狀態(tài)信息和控制命令,每一種信息交換都要通過一個端口來進行。每一種信息交換都要通過一個端口來進行。端口數(shù):外部設備最多有端口數(shù):外部設備最多有65536個個I/O端口。端口。 A0A15譯碼形成。譯碼形成。端口號:端口號(即外設端口地址)為端口號:端口號(即外設端口地址)為0000HFFFF
34、H。PC機僅使用機僅使用A0A9譯碼形成譯碼形成I/O口地址,即口地址,即1024H個口地址個口地址 端口號:端口號:0000H03FFH其中:其中: A9=1,表示擴充槽上的,表示擴充槽上的口地址??诘刂?。44,可以直接寫在指令中,可以直接寫在指令中,這就是長格式。這就是長格式。端口號代替指令中的端口號代替指令中的PORT,機器指令用二字節(jié)表示,第二字節(jié)就是端口號。機器指令用二字節(jié)表示,第二字節(jié)就是端口號。,必須先把端口號放到必須先把端口號放到DX寄存器中。寄存器中。不需要用任何段寄存器來修改它的值。不需要用任何段寄存器來修改它的值。45格式:格式:IN acc, port ;(acc) (
35、port)具體形式有四種:具體形式有四種:IN AL, data8 ; 端口地址端口地址8位,輸入一個字節(jié)位,輸入一個字節(jié)IN AX, data16 ;端口地址;端口地址16位,輸入一個字位,輸入一個字IN AL, DX ;端口地址;端口地址16位,輸入一個字節(jié)位,輸入一個字節(jié)IN AX, DX ;端口地址;端口地址16位,輸入一個字位,輸入一個字 必須通過累加器必須通過累加器AX(字)或字)或AL(節(jié))節(jié))輸入輸入數(shù)據(jù)。數(shù)據(jù)。46(Output byte or word) 格式:格式: OUT port, acc ;(port) (acc)具體形式有四種:具體形式有四種: OUT data8
36、 , AL ; 端口地址端口地址8位,輸出一個字節(jié)位,輸出一個字節(jié)OUT data16, AX ;端口地址;端口地址16位,輸出一個字位,輸出一個字OUT DX , AL ;端口地址;端口地址16位,輸出一個字節(jié)位,輸出一個字節(jié) OUT DX , AX ;端口地址;端口地址16位,輸出一個字位,輸出一個字 必須通過累加器必須通過累加器AX(字)或字)或AL(節(jié))節(jié))輸出輸出數(shù)據(jù)。數(shù)據(jù)。47例例1:實現(xiàn):實現(xiàn)(29H)(28H)(DATA_WORD) IN AX,28H MOV DATA_WORD,AX例例2:從端口:從端口3FCH 送一個字到送一個字到AX寄存器寄存器MOV DX,3FCH I
37、N AX,DX ; (AL)(3FCH),), (AH)(3FDH) 例例3:實現(xiàn)將(:實現(xiàn)將(AL) (05H) OUT 5,AL;(;(05H)(AL)48(Address-object transfer) 8086 /8088 提供三條提供三條:地址指針寫入指定寄存器或寄存器對指令。地址指針寫入指定寄存器或寄存器對指令。1、LEA(Load Effective Address)2、LDS (Load pointer using DS)3、LES (Load pointer using ES)49(Load Effective Address)格式:格式: LEA reg16 , mem1
38、6 ;EA(reg16)功能:加載有效地址,用于寫近地址指針。功能:加載有效地址,用于寫近地址指針。 。例:設(例:設(BX)=0400H,(,(SI)=003CHLEA BX,BX+SI+0F62H執(zhí)行指令后執(zhí)行指令后: EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EH50注意:設注意:設 (DS)=3000HBUFFER=1000H(31000H)=0040H(1) LEA 指令與指令與MOV 的區(qū)別的區(qū)別LEA BX , BUFFER ;(;(BX)=1000HMOV BX , BUFFER ; (BX)=0040H LEA 指令與
39、指令與MOV等價等價LEA BX , BUFFER ; (BX)=1000HMOV BX , OFFSET BUFFER ; (BX)=1000H40H40H00H00H.3000H:1000H3000H:1000H(DS)(DS) BUFFERBUFFER31001H31001H.存儲器存儲器51(2), 。(3)請思考下列指令的正、誤)請思考下列指令的正、誤LEA DX ,BETABXSILEA DX , AX52 (Load pointer using DS)格式:格式:LDS reg16, mem32 ;(;(reg16)(EA) (DS)(EA)+2)功能:功能:。將指令指定將指令指
40、定mem32單元的前兩個單元內容單元的前兩個單元內容(16位偏移量位偏移量)裝入指裝入指定通用寄存器,把后兩個單元內容定通用寄存器,把后兩個單元內容(段地址段地址) 裝入到裝入到DS段寄存段寄存器。器。用于寫遠地址指針。用于寫遠地址指針。53例例: 假設:假設: (DS)=C 000H指令指令: LDS SI, 0010H執(zhí)行指令后執(zhí)行指令后: (SI)=0180H (DS)=2000H 80H80H01H01H00H00H20H20HC000H:0010HC000H:0010H(DS)(DS)C0011HC0011HC0012HC0012HC0013HC0013H.存儲器存儲器54格式:格式:LES reg16, mem32 ;(;(reg16)(EA) (ES)(EA)+2)功能:功能: 此指令常常指定此指令常常指定DI寄存器。寄存器。將指令指定將指令指定mem32單元的前兩個單元內容單元的前兩個單元內容(16位偏移量位偏移量)裝入裝入指定通用寄存器,把后兩個單元內容指定通用寄存器,把后兩個單元內容(段地址段地址) 裝入到裝入到ES段段寄存器。寄存器。用于寫遠地址指針。用于寫遠地址指針。55例例: 假設:假設: (DS)=B 000H (BX)=080AH指令指令: LES D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度彩鋼棚鋼結構材料質量檢測合同3篇
- 2025年度年度財務報表編制保密合作協(xié)議3篇
- 年度非開挖導向鉆機鋪管機市場分析及競爭策略分析報告
- 二零二五年恒大地產商業(yè)地產租賃及產權變更代理合同樣本3篇
- 2025廠長任期企業(yè)可持續(xù)發(fā)展戰(zhàn)略合同3篇
- 二零二五版創(chuàng)業(yè)園區(qū)租賃合同參考模板(含孵化服務)3篇
- 2025年度瓷磚批發(fā)市場入駐經(jīng)營合同4篇
- 2025年蔬菜運輸合同含蔬菜品牌推廣效果評估條款2篇
- 2025年度豪華品牌4S店新車銷售與服務保障合同3篇
- 2025年LED廣告屏租賃與品牌推廣服務合同模板3篇
- GB/T 37238-2018篡改(污損)文件鑒定技術規(guī)范
- 普通高中地理課程標準簡介(湘教版)
- 河道治理工程監(jiān)理通知單、回復單范本
- 超分子化學簡介課件
- 高二下學期英語閱讀提升練習(一)
- 易制爆化學品合法用途說明
- 【PPT】壓力性損傷預防敷料選擇和剪裁技巧
- 大氣喜慶迎新元旦晚會PPT背景
- DB13(J)∕T 242-2019 鋼絲網(wǎng)架復合保溫板應用技術規(guī)程
- 心電圖中的pan-tompkins算法介紹
- 羊絨性能對織物起球的影響
評論
0/150
提交評論