



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一講第三章指令系統(tǒng) - 尋址方式回顧 : 8086/8088 的內(nèi)部結(jié)構(gòu)和寄存器,地址分段的概念,8086/8088 的工作過程。重點(diǎn)和綱要: 指令系統(tǒng) - 尋址方式。有關(guān)尋址的概念;6 種基本的尋址方式及有效地址的計(jì)算。教學(xué)方法、實(shí)施步驟時(shí)間分配教學(xué)手段回顧5”× 2板書講授40” ×2計(jì)算機(jī)提問3” ×2投影儀小結(jié)2” ×2多媒體課件等講授內(nèi)容:3.1 8086/8088尋址方式首先,簡(jiǎn)單講述一下指令的一般格式:操作碼操作數(shù)操作數(shù)計(jì)算機(jī)中的指令由操作碼字段和操作數(shù)字段組成。操作碼:指計(jì)算機(jī)所要執(zhí)行的操作,或稱為指出操作類型,是一種助記符。操作數(shù):指
2、在指令執(zhí)行操作的過程中所需要的操作數(shù)。 該字段除可以是操作數(shù)本身外,也可以是操作數(shù)地址或是地址的一部分,還可以是指向操作數(shù)地址的指針或其它有關(guān)操作數(shù)的信息。尋址方式就是指令中用于說明操作數(shù)所在地址的方法,或者說是尋找操作數(shù)有效地址的方法。 80868088 的基本尋址方式有六種。1立即尋址所提供的操作數(shù)直接包含在指令中。 它緊跟在操作碼的后面,與操作碼一起放在代碼段區(qū)域中。如圖所示。例如: MOV AX,3000H1立即數(shù)可以是 8 位的,也可以是 16 位的。若是 16 位的,則存儲(chǔ)時(shí)低位在前,高位在后。立即尋址主要用來給寄存器或存儲(chǔ)器賦初值。2直接尋址操作數(shù)地址的16 位偏移量直接包含在指
3、令中。它與操作碼起存放在代碼段區(qū)域,操作數(shù)一般在數(shù)據(jù)段區(qū)域中,它的地址為數(shù)據(jù)段寄存器DS加上這 16 位地址偏移量。如圖2-2 所示。例如:MOV AX,DS: 2000H ;圖 22(對(duì) DS來講可以省略成MOV AX ,2000H , 系統(tǒng)默認(rèn)為數(shù)據(jù)段)這種尋址方法是以數(shù)據(jù)段的地址為基礎(chǔ),可在多達(dá)64KB 的范圍內(nèi)尋找操作數(shù)。8086/8088 中允許段超越,即還允許操作數(shù)在以代碼段、堆棧段或附加段為基準(zhǔn)的區(qū)域中。此時(shí)只要在指令中指明是段超越的,則16 位地址偏移量可以與CS或 SS或 ES相加,作為操作數(shù)的地址。MOVAX,2000H;數(shù)據(jù)段MOVBX,ES: 3000H;段超越,操作數(shù)
4、在附加段即絕對(duì)地址( ES) 163000H3寄存器尋址操作數(shù)包含在 CPU的內(nèi)部寄存器中,如寄存器AX、BX、CX、DX等。例如: MOV DS,AXMOV AL,BH4寄存器間接尋址操作數(shù)是在存儲(chǔ)器中,但是,操作數(shù)地址的16 位偏移量包含在以下四個(gè)寄2存器 SI 、 DI、BP、BX之一中??梢苑殖蓛煞N情況:(1)以 SI 、DI 、BX 間接尋址,則通常操作數(shù)在現(xiàn)行數(shù)據(jù)段區(qū)域中,即數(shù)據(jù)段寄存器(DS) 16加上 SI、DI、BX中的 16 位偏移量,為操作數(shù)的地址,例如: MOV AX , SI操作數(shù)地址是:(DS) *16+( SI )(2)以寄存器 BP間接尋址,則操作數(shù)在堆棧段區(qū)域
5、中。 即堆棧段寄存器 (SS)16 與 BP的內(nèi)容相加作為操作數(shù)的地址,例如: MOV AX,BP操作數(shù)地址是:( SS)*16+(BP)若在指令中規(guī)定是段超越的,則 BP的內(nèi)容也可以與其它的段寄存器相加,形成操作數(shù)地址。例如:MOV AX , DS:BP操作數(shù)地址是:(DS)*16+(BP)5變址尋址由指定的寄存器內(nèi)容, 加上指令中給出的8 位或 16 位偏移量(當(dāng)然要由一個(gè)段寄存器作為地址基準(zhǔn))作為操作數(shù)的偏移地址。(操作數(shù)在存貯器中)可以作為寄存器變址尋址的四個(gè)寄存器是SI 、DI、 BX、BP。若用 SI 、DI 和 BX作為變址,則與數(shù)據(jù)段寄存器相加,形成操作數(shù)的地址即默認(rèn)在數(shù)據(jù)段;
6、若用 BP變址,則與堆棧段寄存器相加,形成操作數(shù)的地址即默認(rèn)在堆棧段例如: MOV AX ,COUNTSI;操作數(shù)地址是:(DS)*16+(SI )+COUNT但是,只要在指令中指定是段超越的, 則可以用別的段寄存器作為地址基準(zhǔn)。6基址加變址尋址把 BX和 BP 看成是基址寄存器,把SI 、 DI 看著是變址寄存器,把一個(gè)基址寄存器(BX或 BP)的內(nèi)容加上一個(gè)變址寄存器( SI 或 DI )的內(nèi)容,再加上指令中指定的 8 位或 16 位偏移量(當(dāng)然要以一個(gè)段寄存器作為地址基準(zhǔn))作為操作3數(shù)的偏移地址,如圖所示。操作數(shù)在存貯器中,其偏移地址由(基址寄存器)(變址寄存器)相對(duì)偏移量形成基址寄存器
7、 BX:數(shù)據(jù)段、 BP:堆棧段;變址寄存器 SI 、DI 。例如: MOVAX ,BXSI或 MOVAX,BX+SI也可放置一個(gè)相對(duì)偏移量,如COUNT、MASK等等,用于表示相對(duì)尋址。MOVAX , MASKBXSIMOVBH, COUNTDIBP;MOVBH, COUNTBP+DI若用 BX作為基地址,則操作數(shù)在數(shù)據(jù)段區(qū)域若用 BP作為基地址,則操作數(shù)在堆棧段區(qū)域但若在指令中規(guī)定段是超越的,則可用其它段寄存器作為地址基準(zhǔn)。P28表 2-1段寄存器使用的基本約定訪問存儲(chǔ)器類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令碼CS無IP堆棧操作SS無SP串操作源地址DSCS、 ES、 SSSI
8、串操作目的地址ES無DIBP用作基址寄存器SSCS、 DS、 ES根據(jù)尋址方式求得有效地址一般數(shù)據(jù)存取DSCS、 ES、 SS根據(jù)尋址方式求得有效地址習(xí)題與思考:1假定 DS=2000H, ES=2100H, SS=1500H, SI=00A0H, BX=0100H, BP=0010H,數(shù)據(jù)變量 VAL 的偏移地址為 0050H,請(qǐng)指出下列指令源操作數(shù)是什么尋址方式?其物理地址是多少?( 1) MOVAX , 0ABH( 2) MOVAX, 100H( 3) MOVAX,VAL( 4)MOVBX, SI( 5) MOVAL,VALBX( 6)MOVCL, BXSI( 7) MOVVALSI ,
9、 BX( 8) MOVBPSI, 1002已知 SS=0FFA0H, SP=00B0H,先執(zhí)行兩條把 8057H 和 0F79H 分別進(jìn)棧的 PUSH指令,再執(zhí)行一條 POP指令,試畫出堆棧區(qū)和 SP內(nèi)容變化的過程示意圖。 (標(biāo)出存儲(chǔ)單元的地址)4第二講3.2指令系統(tǒng) - 數(shù)據(jù)傳輸、算術(shù)運(yùn)算回顧: 8086/8088 的內(nèi)部結(jié)構(gòu)和寄存器,8086/8088 的工作過程。8086/8088 的尋址方式及操作數(shù)地址的計(jì)算。重點(diǎn)和綱要: 要求學(xué)生了解指令的功能,掌握數(shù)據(jù)傳送類,算術(shù)運(yùn)算類指令的使用方法。(掌握指令內(nèi)涵,會(huì)用)教學(xué)方法、實(shí)施步驟時(shí)間分配教學(xué)手段回顧5”× 2板書講授40” &
10、#215;2計(jì)算機(jī)提問3” ×2投影儀小結(jié)2” ×2多媒體課件等講授內(nèi)容 :3.2 8086/8088指令系統(tǒng)8086 8088 的指令系統(tǒng)可以分為以下六個(gè)功能組。1數(shù)據(jù)傳送 (Data Transter)2算術(shù)運(yùn)算 (Arithmetic)3邏輯運(yùn)算 (Logic)4串操作 (String menipulation)5程序控制 (Program Control)6處理器控制 (Processor Control)一、數(shù)據(jù)傳送指令主要介紹 MOV,XCHG、堆棧和地址傳送指令。51數(shù)據(jù)傳送 MOV指令一般格式: MOV OPRD1, OPRD2MOV是操作碼, OPRD1和
11、 OPRD2分別是目的操作數(shù)和源操作數(shù)。功能:完成數(shù)據(jù)傳送具體來說,一條數(shù)據(jù)傳送指令能實(shí)現(xiàn):CPU內(nèi)部寄存器之間數(shù)據(jù)的任意傳送( 除了代碼段寄存器CS 和指令指針I(yè)P 以外 ) 。MOV AL, BL;字節(jié)傳送 MOV CX, BX;字傳送MOV DS, BX立即數(shù)傳送至CPU內(nèi)部的通用寄存器組 ( 即 AX、 BX、CX、DX、BP、SP、SI 、DI) ,MOV CL, 4MOV AX, 03FFHMOV SI, 057BHCPU內(nèi)部寄存器 ( 除了 CS和 IP 以外 ) 與存儲(chǔ)器 ( 所有尋址方式 ) 之間的數(shù)據(jù)傳送。MOV AL, BUFFERMOV AX, SIMOV DI ,CX
12、MOV SI, BLOCKBPMOV DS, DATASI+BXMOV DESTBP+DI,ES能實(shí)現(xiàn)用立即數(shù)給存儲(chǔ)單元賦值例如: MOV 2000H, 25HMOV SI , 35H對(duì)于 MOV指令應(yīng)注意幾個(gè)問題:存儲(chǔ)器傳送指令中,不允許對(duì)CS和 IP 進(jìn)行操作;兩個(gè)操作數(shù)中,除立即尋址之外必須有一個(gè)為寄存器尋址方式,即兩個(gè)存儲(chǔ)器操作數(shù)之間不允許直接進(jìn)行信息傳送;如我們需要把地址 ( 即段內(nèi)的地址偏移量 ) 為 AREAl的存儲(chǔ)單元的內(nèi)容,傳送至同一段內(nèi)的地址為 AREA2的存儲(chǔ)單元中去, MOV指令不能直接完成這樣的傳送,但我們可以用 CPU內(nèi)部寄存器為橋梁來完成這樣的傳送:MOV AL,
13、 AREAl6MOV AREA2,AL兩個(gè)段寄存器之間不能直接傳送信息,也不允許用立即尋址方式為段寄存器賦初值;如: MOV AX, 0; MOV DS, AX目的操作數(shù),不能用立即尋址方式。2堆棧指令(簡(jiǎn)述堆棧的概念及存取特點(diǎn),如先進(jìn)后出)包括入棧( PUSH)和出棧( POP)指令兩類。僅能進(jìn)行字運(yùn)算。 (操作數(shù)不能是立即數(shù))入棧指令 PUSH一般格式: PUSH OPRD源操作數(shù)可以是 CPU內(nèi)部的 16 位通用寄存器、段寄存器( CS除外)和內(nèi)存操作數(shù)(所有尋址方式) 。入棧操作對(duì)象必須是 16 位數(shù)。功能:將數(shù)據(jù)壓入堆棧執(zhí)行步驟為: SP=SP-2; SP= 操作數(shù)低 8 位; SP
14、+1= 操作數(shù)高 8 位例如: PUSH BX執(zhí) 行過程 為: SP=SP-1, SP=BH; SP=SP-1,SP=BL,如圖 2-8 所示。出棧指令 POP一般格式: POP OPRD功能:將數(shù)據(jù)彈出堆棧對(duì)指令執(zhí)行的要求同入棧指令。例如: POPAX圖 2-8POPBXPOPDS3交換指令XCHG一般格式: XCHG OPRD1,OPRD2功能:完成數(shù)據(jù)交換這是條交換指令,把一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目的操作數(shù)相交換。交換能在通用寄存器與累加器之間、通用寄存器之間、通用寄存器與存儲(chǔ)器之間7進(jìn)行。但段寄存器和立即數(shù)不能作為一個(gè)操作數(shù),不能在累加器之間進(jìn)行。例如: XCHG AL,CLXCH
15、G AX,DIXCHG BX,SIXCHG AX,BUFFERXCHG DATASI,DH4累加器專用傳送指令有三種,輸入、輸出和查表指令。前兩種又稱為輸入輸出指令。IN指令一般格式: INAL ,n; BALnINAX ,n; W AX n+1nINAL ,DX; B AL DXINAX ,DX ; W AX DX+1DX功能:從 I/O 端口輸入數(shù)據(jù)至AL 或 AX。輸入指令允許把一個(gè)字節(jié)或一個(gè)字由一個(gè)輸入端口傳送到AL或 AX中。若端口地址超過 255 時(shí),則必須用 DX保存端口地址,這樣用DX作端口尋址最多可尋找 64K個(gè)端口。 OUT 指令一般格式: OUT n,AL;BALnOUT
16、 n,AX;WAXn+1nOUT DX,AL ; BALDXOUT DX,AX ; WAX DX+1DX功能:將 AL或 AX的內(nèi)容輸出至 I/O 端口。該指令將 AL或 AX中的內(nèi)容傳送到一個(gè)輸出端口。端口尋址 方式與 IN 指令相同。 XLAT 指令一般格式: XLAT;AL=(DX)× 16( BX)+( AL)功能:完成一個(gè)字節(jié)的查表轉(zhuǎn)換。要求:寄存器 AL 的內(nèi)容作為一個(gè)256 字節(jié)的表的下標(biāo)。 表的基地址在 BX中,轉(zhuǎn)換后的結(jié)果存放在AL中.TABLE:例如: MOVBX, OFFSET TABLE8MOVAL, 8INAL ,1第 9 個(gè)字符AAHXLAT ;查表OUT
17、1 ,AL;(AL) AAH表長(zhǎng)度 256本指令可用在數(shù)制轉(zhuǎn)換、函數(shù)表查表、代碼轉(zhuǎn)換等場(chǎng)合。5地址傳送指令(有三條地址傳送指令) LEA (Load Effective Address)一般格式: LEA OPRD1,OPRD2功能:把源操作數(shù)OPRD2的地址偏移量傳送至目的操作數(shù)OPRD1。要求:源操作數(shù)必須是一個(gè)內(nèi)存操作數(shù),目的操作數(shù)必須是一個(gè)16 位的通用寄存器。這條指令通常用來建立串操作指令所須的寄存器指針。例: LEA BX, BUFR;把變量 BUFR的地址偏移量部分送到BX LDS (Load pointer into DS)一般格式: LDS OPRD1,OPRD2功能:完成一
18、個(gè)地址指針的傳送。 地址指針包括段地址部分和偏移量部分。指令將段地址送入DS,偏移量部分送入一個(gè)16 位的指針寄存器或變址寄存器。要求:源操作數(shù)是一個(gè)內(nèi)存操作數(shù),目的操作數(shù)是一個(gè)通用寄存器 / 變址寄存器。例如: LDSSI ,BX;將把 BX所指的 32 位地址指針的段地址部分送入DS,偏移量部分送入SI 。圖 2-9 LDS 指令示意如圖 2-9 所示。 LES (Load pointer into ES)一般格式: LES OPRD1,OPRD2這條指令除將地址指針的段地址部分送入ES 外,與 LDS類似。例如: LESDI, BX+COUNT6標(biāo)志寄存器傳送(有四條標(biāo)志傳送指令)9 L
19、AHF ( LOAD AH WITH FLAG)將標(biāo)志寄存器中的SF、ZF、AF、PF和 CF(即低 8 位)傳送至 AH寄存器的指定位,空位沒有定義。 SAHF ( STORE AH WITH FLAG)將寄存器 AH的指定位,送至標(biāo)志寄存器的 SF、ZF、AF、PF和 CF位(即低 8 位)。根據(jù) AH的內(nèi)容,影響上述標(biāo)志位,對(duì) OF、DF和 IF 無影響。 PUSHF (PUSH FLAG)將標(biāo)志寄存器壓入堆棧頂部,同時(shí)修改堆棧指針,不影響標(biāo)志位。 POPF ( POP FLAG)堆棧頂部的一個(gè)字,傳送到標(biāo)志寄存器,同時(shí)修改堆棧指針,影響標(biāo)志位。二、算術(shù)運(yùn)算指令8086 8088 提供加
20、、減、乘、除四種基本算術(shù)操作。這些操作都可用于字節(jié)或字的運(yùn)算,也可以用于帶符號(hào)數(shù)與無符號(hào)數(shù)的運(yùn)算。帶符號(hào)數(shù)用補(bǔ)碼表示。同時(shí)80868088 也提供了各種校正操作,故可以進(jìn)行十進(jìn)制算術(shù)運(yùn)算。參與加、減運(yùn)算的操作數(shù)可如上圖所示。1加法指令 (Addition)一般形式: ADD OPRD1,OPRD2功能: OPRD1OPRD1+OPRD2完成兩個(gè)操作數(shù)相加,結(jié)果送至目的操作數(shù)OPRD1。目的操作數(shù)可以是累加器,任一通用寄存器以及存儲(chǔ)器操作數(shù)。例如:ADDAL, 30;累加器與立即數(shù)相加ADDBX, 3000H ;通用寄存器與存儲(chǔ)單元內(nèi)容相加ADDDI, CX;通用寄存器之間ADDDX, DATA
21、BX+SI;通用寄存器與存儲(chǔ)單元內(nèi)容相加ADDBETASI , DX;存儲(chǔ)器操作數(shù)與寄存器相加10這些指令對(duì)標(biāo)志位CF、DF、 PF、SF、ZF 和 AF有影響。一般形式: ADC OPRD1, OPRD2;帶進(jìn)位的加法功能: OPRD1OPRD1+OPRD2 +CF這條指令與上條指令類似,只是在兩個(gè)操作數(shù)相加時(shí),要把進(jìn)位標(biāo)志 CF 的現(xiàn)行值加上去,結(jié)果送至目的操作數(shù)。ADC指令主要用于多字節(jié)運(yùn)算中。 若有兩個(gè)四字節(jié)的數(shù), 已分別放在自 FIRST 和 SECOND開始的存儲(chǔ)區(qū)中,每個(gè)數(shù)占四個(gè)存儲(chǔ)單元。存放時(shí),最低字節(jié)在地址最低處,則可用以下程序段實(shí)現(xiàn)相加。MOV AX, FIRSTADD A
22、X, SECOND;進(jìn)行字運(yùn)算MOV THIRD, AXMOV AX, FIRST+2ADC AX, SECOND+2MOV THIRD+2,AX這條指令對(duì)標(biāo)志位的影響與ADD相同。一般形式: INC OPRD;功能: OPRD OPRD+1完成對(duì)指定的操作數(shù)OPRD加 1,然后返回此操作數(shù)。 此指令主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)等。這條指令執(zhí)行的結(jié)果影響標(biāo)志位AF、OF、 PF、SF 和 ZF,而對(duì)進(jìn)位標(biāo)志沒有影響。如: INC ALINC BX2減法指令 (Subtraction)一般形式: SUB OPRD1,OPRD2 ;功能: OPRD1OPRD1-OPRD2完成兩個(gè)操作
23、數(shù)相減,也即從OPRD1中減去 OPRD2,結(jié)果放在 OPRD1中。例如:SUBCX,BXSUB BP,CL一般形式: SBB OPRD1, OPRD2;功能: OPRD1OPRD1-OPRD2-CF這條指令與SUB類似,只是在兩個(gè)操作數(shù)相減時(shí),還要減去借位標(biāo)志CF 的11現(xiàn)行值本指令對(duì)標(biāo)志位AF、CF、OF、 PF、SF和 ZF都有影響。同 ADC指令一樣,本指令主要用于多字節(jié)操作數(shù)相減。一般形式: DEC OPRD ;功能: OPRD OPRD-1-CF對(duì)指令的操作數(shù)減1,然后送回此操作數(shù),在相減時(shí),把操作數(shù)作為一個(gè)無符號(hào)二進(jìn)制數(shù)來對(duì)待。指令執(zhí)行的結(jié)果,影響標(biāo)志 AF、OF、 PF、SF和
24、 ZF但對(duì) CF標(biāo)志不影響 ( 即保持此指令以前的值 ) 。例如:DEC SIDECCL一般形式: NEG OPRD功能:(NEGDate)取補(bǔ)對(duì)操作數(shù)取補(bǔ),即用零減去操作數(shù),再把結(jié)果送回操作數(shù)。例如: NEGALNEGMULRE(AL 00111100)則取補(bǔ)后為 11000100即 0000 00000011 11001100 0100若在字節(jié)操作時(shí)對(duì) -128 ,或在字操作時(shí)對(duì) -32768 取補(bǔ),則操作數(shù)沒變化,但標(biāo)志 OF置位。此指令影響標(biāo)志AF、CF、 OF、PF、 SF 和 ZF。此指令的結(jié)果一般總是使標(biāo)志CF=1。除非在操作數(shù)為零時(shí),才使CF=0。一般形式: CMP OPRD1
25、,OPRD2;功能: OPRD1-OPRD2比較指令完成兩個(gè)操作數(shù)相減, 使結(jié)果反映在標(biāo)志位上, 但并不送回結(jié)果 ( 即不帶回送的減法 ) 。例如:CMPAL ,100CMPDX,DICMPCX,COUHTBPCMPCOUNTSI,AX比較指令主要用于比較兩個(gè)數(shù)之間的關(guān)系。在比較指令之后,根據(jù)ZF 標(biāo)志即可判斷兩者是否相等。相等的比較:若兩者相等,相減以后結(jié)果為零,ZF 標(biāo)志為 1,否則為 0。12若兩者不相等,則可在比較指令之后利用其它標(biāo)志位的狀態(tài)來確定兩者的大小。大小的比較:如果是兩個(gè)無符號(hào)數(shù)(如CMP AX,BX)進(jìn)行比較,則可以根據(jù)CF標(biāo)志的狀態(tài)判斷兩數(shù)大小。若結(jié)果沒有產(chǎn)生借位(CF=
26、0),顯然 AXBX;若產(chǎn)生了借位(即CF 1),則 AX BX。習(xí)題與思考:1設(shè)有關(guān)寄存器及存儲(chǔ)單元的內(nèi)容如下:DS=2000H,BX=0100H,AX=1200H,SI=0002H,20100H=12H , 20101H=34H ,20102H=56H , 20103=78H , 21200=2AH , 21201H=4CH , 21202H=0B7H , 21203H=65H 。試說明下列各條指令單獨(dú)執(zhí)行后相關(guān)寄存器或存儲(chǔ)單元的內(nèi)容。( 1)MOVAX, 1800H( 2) MOVAX, BX( 3)MOVBX, 1200H( 4) MOVDX, 1100BX( 5)MOVBXSI,AL
27、(6) MOVAX, 1100BXSI2寫出實(shí)現(xiàn)下列計(jì)算的指令序列。(假定 X、 Y、 Z、 W、 R 都為字變量)( 1)Z=W+( Z+X)( 2) Z=W-( X+6) - ( R+9)3若在數(shù)據(jù)段中從字節(jié)變量 TABLE相應(yīng)的單元開始存放了 015 的平方值,試寫出包含有 XLAT 指令的指令序列查找 N( 015)中的某個(gè)數(shù)的平方。 ( 設(shè) N 的值存放在 CL中 )第三講3.3指令系統(tǒng) - 算術(shù)運(yùn)算、邏輯運(yùn)算、控制轉(zhuǎn)移回顧: 8086/8088 的內(nèi)部結(jié)構(gòu)和寄存器,8086/8088 的工作過程。8086/8088 的尋址方式及操作數(shù)地址的計(jì)算。重點(diǎn)和綱要: 要求學(xué)生了解指令的功能
28、,掌握算術(shù)運(yùn)算類、邏輯運(yùn)算和移位指令的功能和應(yīng)用。 (掌握指令內(nèi)涵,會(huì)用)13教學(xué)方法、實(shí)施步驟時(shí)間分配教學(xué)手段回顧5”× 2板書講授40” ×2計(jì)算機(jī)提問3” ×2投影儀小結(jié)2” ×2多媒體課件等講述內(nèi)容:3乘法指令(分為無符號(hào)乘法指令和帶符號(hào)乘法指令兩類)(1) 無符號(hào)乘法指令 MUL一般格式:MUL OPRD完成字節(jié)與字節(jié)相乘、字與字相乘,且默認(rèn)的操作數(shù)放在AL 或 AX 中,而源操作數(shù)由指令給出。 8 位數(shù)相乘,結(jié)果為 16 位數(shù),放在 AX中; 16 位數(shù)相乘結(jié)果為 32 位數(shù),高 16 位放在 DX,低 16 位放在 AX中。注意:源操作數(shù)不
29、能為立即數(shù) 。例如:MOV AL,F(xiàn)IRST;MUL SECOND ;結(jié)果為 AX=FIRST*SECONDMOVAX, THIRD;MULAX;結(jié)果 DX: AX=THIRD*THIRDMOVAL, 30HCBW; 字?jǐn)U展 AX=30HMOVBX, 2000HMULBX;(2) 帶符號(hào)數(shù)乘法指令 IMUL一般格式: IMULOPRD;OPRD 為源操作數(shù)這是一條帶符號(hào)數(shù)的乘法指令,同MUL一樣可以進(jìn)行字節(jié)與字節(jié)、字和字的乘法運(yùn)算。結(jié)果放在AX或 DX,AX中。當(dāng)結(jié)果的高半部分不是結(jié)果的低半部分的符號(hào)擴(kuò)展時(shí),標(biāo)志位CF和 OF將置位。4除法指令(1) 無符號(hào)數(shù)除法指令 DIV一般格式: DIV
30、 OPRD(2) 帶符號(hào)數(shù)除法 IDIV14一般格式: IDIV OPRD該指令執(zhí)行過程同DIV 指令,但 IDIV 指令認(rèn)為操作數(shù)的最高位為符號(hào)位,除法運(yùn)算的結(jié)果商的最高位也為符號(hào)位。在除法指令中,在字節(jié)運(yùn)算時(shí)被除數(shù)在AX中;運(yùn)算結(jié)果商在AL中,余數(shù)在AH中。字運(yùn)算時(shí)被除數(shù)為DX: AX構(gòu)成的 32 位數(shù),運(yùn)算結(jié)果商在AX中,余數(shù)在DX中。例如: AX=2000H,DX=200H,BX=1000H,則 DIV BX執(zhí)行后, AX=2002H,DX=0000。除法運(yùn)算中,源操作數(shù)可為除立即尋址方式之外的任何一種尋址方式,且指令執(zhí)行對(duì)所有的標(biāo)志位都無定義。由于除法指令中的字節(jié)運(yùn)算要求被除數(shù)為16
31、 位數(shù),而字運(yùn)算要求被除數(shù)是32 位數(shù),在 8086/8088 系統(tǒng)中往往需要用符號(hào)擴(kuò)展的方法取得被除數(shù)所要的格式,因此指令系統(tǒng)中包括兩條符號(hào)擴(kuò)展指令。(3) 字節(jié)擴(kuò)展指令 CBW一般格式: CBW該指令執(zhí)行時(shí)將AL 寄存器的最高位擴(kuò)展到AH,即若 D7=0,則 AH=0;否則AH=0FFH。(4) 字?jǐn)U展指令 CWD一般格式: CWD該指令執(zhí)行時(shí)將AX寄存器的最高位擴(kuò)展到DX,即若 D15=0,則 DX=0;否則DX=0FFFFH。CBW、CWD指令不影響標(biāo)志位。5十進(jìn)制調(diào)整指令計(jì)算機(jī)中的算術(shù)運(yùn)算,都是針對(duì)二進(jìn)制數(shù)的運(yùn)算,而人們?cè)谌粘I钪辛?xí)慣使用十進(jìn)制。為此在8086/8088 系統(tǒng)中,針
32、對(duì)十進(jìn)制算術(shù)運(yùn)算有一類十進(jìn)制調(diào)整指令。在計(jì)算機(jī)中人們用BCD碼表示十進(jìn)制數(shù),對(duì) BCD碼計(jì)算機(jī)中有兩種表示方法:一類為壓縮 BCD碼,即規(guī)定每個(gè)字節(jié)表示兩位BCD數(shù);另一類稱為非壓縮BCD碼,即用一個(gè)字節(jié)表示一位BCD數(shù),在這字節(jié)的高四位用0 填充。例如,十進(jìn)制數(shù) 25D,表示為壓縮 BCD數(shù)時(shí)為: 25H;表示為非壓縮BCD數(shù)時(shí)為: 0205H,用兩字節(jié)表示。相關(guān)的 BCD轉(zhuǎn)換指令見表 2-2 。15例如:ADDAL , BLDAA若執(zhí)行前: AL=28H, BL=68H,則執(zhí)行ADD后: AL=90H,AF=1;再執(zhí)行 DAA指令后,正確的結(jié)果為: AL=96H,CF=0, AF=1。MU
33、L BLAAM若執(zhí)行前: AL=07, BL=09,則執(zhí)行 MUL BL表 2-2十進(jìn)制調(diào)整指令指令格式指令說明DAA壓縮的 BCD碼加法調(diào)整DAS壓縮的 BCD碼減法調(diào)整AAA 非壓縮的 BCD碼加法調(diào)整AAS非壓縮的BCD碼減法調(diào)整AAM乘法后的BCD碼調(diào)整AAD除法前的BCD碼調(diào)整后, AX=003FH,再執(zhí)行 AAM指令后,正確的結(jié)果為:AH=06H,AL=03H。注意: BCD碼進(jìn)行乘除法運(yùn)算時(shí),一律使用無符號(hào)數(shù)形式,因而AAM和 AAD應(yīng)固定地出現(xiàn)在MUL之前和 DIV 之后。三、邏輯運(yùn)算和移位指令包括邏輯運(yùn)算、移位和循環(huán)移位指令1邏輯運(yùn)算指令(1)一般格式: NOT OPRD功能
34、:對(duì)操作數(shù)求反,然后送回原處,操作數(shù)可以是寄存器或存儲(chǔ)器內(nèi)容。此指令對(duì)標(biāo)志無影響。例如:NOT AL(2)一般格式: AND OPRD1,OPRD2功能:對(duì)兩個(gè)操作數(shù)進(jìn)行按位的邏輯“與”運(yùn)算,結(jié)果送回目的操作數(shù)。其中目的操作數(shù) OPRD1可以是累加器、任一通用寄存器,或內(nèi)存操作數(shù) ( 所有尋址方式 ) 。源操作數(shù) OPRD2可以是立即數(shù)、寄存器,也可以是內(nèi)存操作數(shù) ( 所有尋址方式 ) 。8086/8088 的 AND指令可以進(jìn)行字節(jié)操作,也可以進(jìn)行字操作。例如:AND AL ,0FH;可完成拆字的動(dòng)作ANDSI,SI;將SI清0(3)一般格式: TEST OPRD1,OPRD2功能:完成與
35、AND指令相同的操作,結(jié)果反映在標(biāo)志位上,但并不送回。通常使用它進(jìn)行測(cè)試,例如 若要檢測(cè) AL 中的最低位是否為1,為 1 則轉(zhuǎn)移??捎靡韵轮噶睿篢ESTAL, 01H16JNZTHERETHERE:若要檢測(cè) CX中的內(nèi)容是否為0,為 0 則轉(zhuǎn)移。該如何做呢?(4)一般格式: OR OPRD1,OPRD2功能:對(duì)指定的兩個(gè)操作數(shù)進(jìn)行邏輯“或”運(yùn)算。結(jié)果送回目的操作數(shù)。其中,目的操作數(shù) OPRD1,可以是累加器,可以是任通用寄存器,也可以是一個(gè)內(nèi)存操作數(shù) ( 所有尋址方式 ) 。源操作數(shù) OPRD2,可以是立即數(shù)、寄存器,也可以是內(nèi)存操作數(shù) ( 所有尋址方式 ) 。AND AL, 0FHAND
36、AH,0FOHORAL,AH; 完成拼字的動(dòng)作ORAX,0FFFH ;將 AX低 12 位置 1ORBX,BX ;清相應(yīng)標(biāo)志(5)一般格式: XOROPRD1, OPRD2功能:對(duì)兩個(gè)指定的操作數(shù)進(jìn)行“異或”運(yùn)算,結(jié)果送回目的操作數(shù)。其中,目的操作數(shù)OPRD1可以是累加器,可以是任一個(gè)通用寄存器,也可以是一個(gè)內(nèi)存操作數(shù) ( 全部尋址方式 ) 。源操作數(shù)可以是立即數(shù)、寄存器,也可以是內(nèi)存操作數(shù) ( 所有尋址方式 ) 。例如:XORAL,AL;使 AL清 0XORSI,SI;使 SI 清 0XOR CL,0FH;使低 4 位取反,高 4 位不變邏輯運(yùn)算類指令中,單操作數(shù)指令NOT的操作數(shù)不能為立即
37、數(shù),雙操作數(shù)邏輯指令中,必須有一個(gè)操作數(shù)為寄存器尋址方式,且目的操作數(shù)不能為立即數(shù)。它們對(duì)標(biāo)志位的影響情況如下:NOT不影響標(biāo)志位,其它四種指令將使CF=OF=0,AF 無定義,而 SF、ZF 和 PF 則根據(jù)運(yùn)算結(jié)果而定。2移位指令( 1)算術(shù) / 邏輯移位指令 算術(shù)左移或邏輯左移指令SALSHL OPRD, M ;17 算術(shù)右移指令SAR OPRD,M 邏輯右移指令SHR OPRD,MM是移位次數(shù),可以是1 或寄存器 CL這些指令可以對(duì)寄存器操作數(shù)或內(nèi)存操作數(shù)進(jìn)行指定的移位,可以進(jìn)行字節(jié)或字操作;可以一次只移1 位,也可以移位由寄存器CL中的內(nèi)容規(guī)定的次數(shù)( 2)循環(huán)移位指令ROL OPR
38、D,M ;左循環(huán)移位 ROR OPRD,M ;右循環(huán)移位RCL OPRD,M ;帶進(jìn)位左循環(huán)移位RCR OPRD,M ;帶進(jìn)位右循環(huán)移位前兩條循環(huán)指令,未把標(biāo)志位 CF包含在循環(huán)的環(huán)中,后兩條把標(biāo)志位 CF包含在循環(huán)的環(huán)中,作為整個(gè)循環(huán)的一部分。循環(huán)指令可以對(duì)字節(jié)或字進(jìn)行操作。操作數(shù)可以是寄存器操作數(shù),也可以是內(nèi)存操作數(shù)。可以是循環(huán)移位一次,也可以循環(huán)移位由CL的內(nèi)容所決定的次數(shù)。左移一位,只要左移以后的數(shù)未超出一個(gè)字節(jié)或一個(gè)字的表達(dá)范圍,則原數(shù)的每一位的權(quán)增加了一倍,相當(dāng)于原數(shù)乘 2。右移位相當(dāng)于除以 2。在數(shù)的輸入輸出過程中乘 10 的操作是經(jīng)常要進(jìn)行的。 而 X10=X*2+X*8,也可
39、以采用移位和相加的辦法來實(shí)現(xiàn) *10 。為保證結(jié)果完整,先將 AL 中的字節(jié)擴(kuò)展為字。MOVAH,0SALAX ,1; X*2MOVBX,AX;移至 BX中暫存SALAX ,1; X*4SALAX ,1; X*8ADDAX,BX;X*10例 1BCD碼轉(zhuǎn)換為 ASCII 碼18若在內(nèi)存某一緩沖區(qū)中存放著若干個(gè)單元的用BCD碼表示的十進(jìn)制數(shù)。每個(gè)單元中放兩位BCD碼,要求把它們分別轉(zhuǎn)換為ASCII 碼。高位的 BCD碼轉(zhuǎn)換完后放在地址較高的單元。分析:轉(zhuǎn)換公式: ASCIIBCD+30H算法:源串和目的串的表首分別設(shè)兩個(gè)指針。取BCD轉(zhuǎn) ASCII后存入(先低位,后高位)MOVSI ,OFFSE
40、T BCDBUFF;設(shè)置源地址指針MOVCX,COUNT;設(shè)計(jì)數(shù)初值MOV DI ,OFFSET ASCBUF;設(shè)置目的地址指針AGAIN: MOVAL, SIMOVBL,ALANDAL,0FH;取低位 BCD碼ORAL,30H;轉(zhuǎn)換成 ASCII 碼MOVDI ,AL;存入INCDI;修改指針MOVAL,BLPUSH CXMOVCL,4SHRAL,CLORAL,30H;高位轉(zhuǎn)換成 ASCII 碼MOVDI ,AL;存入POPCXINCDIINCSI;修改指針LOOP AGAIN;重復(fù)工作習(xí)題與思考:1寫出實(shí)現(xiàn)下列計(jì)算的指令序列。(假定 X、 Y、 Z、 W、 R 都為字變量)( 1)Z=(
41、W*X) / ( R+6)( 2) Z=( W-X) /5*Y )*22假定 DX=1100100110111001B, CL=3, CF=1,試確定下列各條指令單獨(dú)執(zhí)行后DX的值。( 1)SHRDX, 1( 2) SHLDL, 1( 3)SALDH, 1( 4) SARDX, CL( 5)RORDX, CL( 6) ROLDL, CL19( 7)RCRDL, 1( 8) RCLDX, CL3試分析下列程序完成什么功能?MOVCL,4SHLDX,CLMOVBL,AHSHLBL,CLSHRBL,CLORDL,BL4已知程序段如下:MOV AX,1234HMOV CL,4ROL AX,CLDEC
42、AXMOV CX,4MUL CXINT20H試問:( 1)每條指令執(zhí)行后, AX寄存器的內(nèi)容是什么?( 2)每條指令執(zhí)行后, CF,SF及 ZF 的值分別是什么?( 3)程序運(yùn)行結(jié)束時(shí), AX及 DX寄存器的值為多少?第四講:3.4指令系統(tǒng) - 循環(huán)、子程序調(diào)用、中斷、其他回顧: 8086/8088 的內(nèi)部結(jié)構(gòu)和寄存器,8086/8088 的工作過程8086/8088 的尋址方式及操作數(shù)地址的計(jì)算。重點(diǎn)和綱要: 要求學(xué)生了解串操作指令的功能。指令系統(tǒng)- 循環(huán)、子程序調(diào)用、中斷、其他(掌握指令內(nèi)涵,會(huì)用)20教學(xué)方法、實(shí)施步驟時(shí)間分配教學(xué)手段回顧5”× 2板書講授35” ×2
43、計(jì)算機(jī)提問3” ×2投影儀小結(jié)2” ×2多媒體課件等討論5” ×2講授內(nèi)容:四、串操作類指令(選講或簡(jiǎn)單介紹)串操作類指令可以用來實(shí)現(xiàn)內(nèi)存區(qū)域的數(shù)據(jù)串操作。這些數(shù)據(jù)串可以是字節(jié)串,也可以是字串。1重復(fù)指令前綴串操作類指令可以與重復(fù)指令前綴配合使用。從而可以使操作得以重復(fù)進(jìn)行,及時(shí)停止。重復(fù)指令前綴的幾種形式見表2-3 所示。表 2-3 重復(fù)前綴匯編格式執(zhí)行過程影響指令REP(1)若 (CX) 0,則退出;(2)CX=CX-1;(3)執(zhí)行后續(xù)指令;( 4)MOVS, STOS,重復(fù)( 1)-(3)LODSREPE/(1)若 (CX) 0 或 ZF=0,則退出;( 2
44、)CX=CX-1;(3)執(zhí)行后續(xù)指CMPS, SCASREPZ令;( 4)重復(fù)( 1) - ( 3)REPNE/(1)若 (CX) 0 或 ZF=1,則退出;( 2)CX=CX-1;(3)執(zhí)行后續(xù)指CMPS, SCASREPNZ令;( 4)重復(fù)( 1) - ( 3)2串指令串指令共有五種,具體見表2-4 。對(duì)串指令要注意以下幾個(gè)問題:(1) 各指令所使用的默認(rèn)寄存器是: SI (源串地址),DI(目的地址), CX(字串長(zhǎng)度),AL(存取或搜索的默認(rèn)值) 。(2) 源串在數(shù)據(jù)段,目的串在附加段。表 2-4串操作指令功能指令格式執(zhí)行操作串傳送MOVS DST, SRC由操作數(shù)說明是字節(jié)或字操作;
45、其余同MOVSB或 MOVSW21MOVSB(ES : DI) (DS : SI) ; SI=SI ± 1,DI=DI ±1; REP控制重復(fù)前兩步MOVSW(ES : DI) (DS : SI) ; SI=SI ± 2,DI=DI ±2; REP控制重復(fù)前兩步串比較CMPS DST, SRC由操作數(shù)說明是字節(jié)或字操作;其余同CMPSB或 CMPSWCMPSB(ES : DI) (DS :SI) ;SI=SI ±1,DI=DI ±1;重復(fù)前綴控制前兩步CMPSW(ES : DI) (DS :SI) ;SI=SI ±2,DI=
46、DI ±2;重復(fù)前綴控制前兩步串搜索SCAS DST由操作數(shù)說明是字節(jié)或字操作;其余同SCASB或 SCASWSCASBAL (ES : DI);DI=DI ± 1;重復(fù)前綴控制前兩步SCASWAX (ES : DI); DI=DI ± 2;重復(fù)前綴控制前兩步存串STOS DST由操作數(shù)說明是字節(jié)或字操作;其余同STOSB或 STOSWSTOSBAL (ES : DI);DI=DI ± 1;重復(fù)前綴控制前兩步STOSWAX (ES : DI); DI=DI ± 2;重復(fù)前綴控制前兩步取串LODS SRC由操作數(shù)說明是字節(jié)或字操作;其余同LODSB或 LODSWLO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電影投資與分紅協(xié)議
- 二零二五年度公司對(duì)公司跨境電商物流借款合同
- 二零二五年度離婚后再婚無子女家庭財(cái)產(chǎn)分割及共同生活協(xié)議
- 2025年度網(wǎng)絡(luò)安全企業(yè)員工入職保密與競(jìng)業(yè)限制合同
- 二零二五年度煙草專賣許可證及區(qū)域市場(chǎng)分銷權(quán)轉(zhuǎn)讓合同
- 2025年度特種作業(yè)安全協(xié)議書:包工頭與工人安全保障
- 二零二五年度汽修廠汽車維修市場(chǎng)分析承包協(xié)議
- 2025年度新能源儲(chǔ)能技術(shù)公司成立合作協(xié)議
- 幼兒園實(shí)習(xí)教師實(shí)習(xí)期間安全責(zé)任及意外傷害賠償合同
- 部編版小學(xué)道德與法治五年級(jí)下冊(cè)1《讀懂彼此的心》課件
- 安全生產(chǎn)個(gè)臺(tái)賬內(nèi)容
- 建設(shè)工程項(xiàng)目-月度安全檢查表
- 硬件設(shè)計(jì)的模塊化
- 貴州教育大講堂《科技教育之美“中國(guó)天眼”的前世今生》觀后感11篇
- 組織病理學(xué)技術(shù)部分
- 家長(zhǎng)會(huì)課件:三年級(jí)上學(xué)期家長(zhǎng)會(huì)課件
- 管轄權(quán)異議申請(qǐng)書(模板)
- 2023測(cè)繪地理信息技能人員職業(yè)分類和能力評(píng)價(jià)
- 學(xué)校食堂食品安全投訴舉報(bào)登記表
- 梁湘潤(rùn).命學(xué)精華
- 六年級(jí)上冊(cè)心理健康課件6《健康上網(wǎng)快樂多》(27張PPT)
評(píng)論
0/150
提交評(píng)論