版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
物理與電氣工程學(xué)院第3章指令系統(tǒng)微機(jī)原理與接口技術(shù)第第1頁8086指令系統(tǒng)(2)微機(jī)原理與接口技術(shù)第第2頁3.3.3
邏輯運(yùn)算和位移指令微機(jī)原理與接口技術(shù)第第3頁三、邏輯運(yùn)算和移位類邏輯運(yùn)算移位操作非循環(huán)移位循環(huán)移位微機(jī)原理與接口技術(shù)第第4頁位操作類指令以二進(jìn)制位為基本單位進(jìn)行數(shù)據(jù)操作當(dāng)需要對字節(jié)或字?jǐn)?shù)據(jù)中各個(gè)二進(jìn)制位操作時(shí),能夠考慮采取位操作類指令注意這些指令對標(biāo)志位影響1.邏輯運(yùn)算指令A(yù)NDORXORNOTTEST2.移位指令SHLSHRSAR3.循環(huán)移位指令ROLRORRCLRCR位操作類指令微機(jī)原理與接口技術(shù)第第5頁邏輯指令邏輯指令在底層軟件中提供了對二進(jìn)制位控制。能夠?qū)ξ贿M(jìn)行置位、清0或取反。慣用于控制系統(tǒng)I/O設(shè)備。微機(jī)原理與接口技術(shù)第第6頁1、邏輯運(yùn)算邏輯運(yùn)算指令對操作數(shù)要求大多與MOV指令相同。
“非”運(yùn)算指令要求操作數(shù)不能是馬上數(shù);NOT指令對標(biāo)志位無影響,其余指令執(zhí)行后,總是使CF=OF=0,SF、ZF、PF依據(jù)運(yùn)算結(jié)果設(shè)置,AF狀態(tài)不確定。微機(jī)原理與接口技術(shù)第第7頁AND指令A(yù)NDdst,src功能:dst←dst&src對兩個(gè)操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果送目操作數(shù)
只有相與兩位都是1,結(jié)果才是1;不然與結(jié)果為0。微機(jī)原理與接口技術(shù)第第8頁測試指令TESTdst,src功能:dst&src對兩個(gè)操作數(shù)執(zhí)行邏輯與運(yùn)算,但結(jié)果不回送給目操作數(shù)。僅影響標(biāo)志位,兩個(gè)操作數(shù)都不變。
AND與TEST指令關(guān)系,同SUB與CMP指令關(guān)系一樣?!锼鼞T用在要檢測一些條件是否滿足,但又不希望改變原有操作數(shù)情況下。緊跟在這條指令后面往往是一條條件轉(zhuǎn)移指令,根據(jù)測試結(jié)果產(chǎn)生分支,轉(zhuǎn)向不一樣處理程序。微機(jī)原理與接口技術(shù)第第9頁
設(shè)AL存放器中存有報(bào)警標(biāo)志。若D7=1,表示溫度報(bào)警,程序要轉(zhuǎn)到溫度報(bào)警處理程序T_ALARM;若D6=1,則轉(zhuǎn)壓力報(bào)警程序P_ALARM。為此,可按下面方法使用TEST指令來實(shí)現(xiàn)這種功效:TESTAL,80H;查ALD7=1?JNZT_ALARM;是1(非零),則轉(zhuǎn)溫度報(bào)警程序TESTAL,40H;D7=0,再查D6=1?JNZP_ALARM;是1,轉(zhuǎn)壓力報(bào)警程序
其中JNZ為條件轉(zhuǎn)移指令,表示結(jié)果非0則轉(zhuǎn)移。(即ZF=0,則轉(zhuǎn)移)【例】微機(jī)原理與接口技術(shù)第第10頁OR指令ORdst,src功能:dst←dst∨src對兩個(gè)操作數(shù)執(zhí)行邏輯或運(yùn)算,結(jié)果送目操作數(shù)只要相或兩位有一位是1,結(jié)果就是1;不然,結(jié)果為0。微機(jī)原理與接口技術(shù)第第11頁XOR指令XORdst,src功能:dst←dst⊕src對兩個(gè)操作數(shù)執(zhí)行邏輯異或運(yùn)算,結(jié)果送目操作數(shù)只有相異或兩位不相同,結(jié)果才是1;不然,結(jié)果為0
。微機(jī)原理與接口技術(shù)第第12頁NOT指令NOTdst功效:
dst←~dst對目標(biāo)操作數(shù)執(zhí)行按位取反運(yùn)算,結(jié)果送目標(biāo)操作數(shù)按位取反,原來是0位變?yōu)?;原來是1位變?yōu)?。
NOT指令不影響標(biāo)志位!微機(jī)原理與接口技術(shù)第第13頁邏輯運(yùn)算例子MOVAL,75H
;AL=75HAND
AL,32H
;AL=30H;CF=OF=0,SF=0,ZF=0,PF=1OR
AL,71H
;AL=71H;CF=OF=0,SF=0,ZF=0,PF=1XOR
AL,0F1H
;AL=80H;CF=OF=0,SF=1,ZF=0,PF=0NOT
AL
;AL=7FH,標(biāo)志不變【例】微機(jī)原理與接口技術(shù)第第14頁邏輯指令應(yīng)用AND
BL,11110110B ;BL中D0和D3清0,其余位不變OR
BL,00001001B ;BL中D0和D3置1,其余位不變XOR
BL,00001001B ;BL中D0和D3求反,其余位不變AND可用于復(fù)位(同0相與)一些位而不影響其它位。OR可用于置位(同1相或)一些位而不影響其它位。XOR可用于求反(同1相異或)一些位而不影響其它位。微機(jī)原理與接口技術(shù)第第15頁例題(1)去除DH中最低三位,而不改變其它位,結(jié)果存入DL中;
ANDDH,0F8HMOVDL,DH(2)把BX中0~3位清零,5~8位置1,10~12位取反;
ANDBX,0FFFF0HORBX,01E0HXORBX,1C00H微機(jī)原理與接口技術(shù)第第16頁①清進(jìn)位標(biāo)志位:ANDAX,AX
或ORAL,AL等。②清零操作數(shù):XORAX,AX
不但把AX清零,而且也影響了狀態(tài)標(biāo)志。③把某幾位取反:用XOR指令,把要取反位和1異或,不變位和0異或。④清零或置位某幾位:用AND指令清零,用OR指令置位。常見使用方法舉例:微機(jī)原理與接口技術(shù)第第17頁將操作數(shù)移動(dòng)一位或多位,分別含有左移或右移操作。移位操作分成邏輯移位和算術(shù)移位。移位指令操作數(shù)能夠是8/16位通用存放器或存放器。移位次數(shù)要么是1,要么是CL。都會(huì)影響標(biāo)志位,主要是學(xué)習(xí)CF。二、移位指令微機(jī)原理與接口技術(shù)第第18頁
非循環(huán)移位指令循環(huán)移位指令注:移動(dòng)一位時(shí)由指令直接給出;移動(dòng)兩位及以上,則移位次數(shù)由CL指定。二、移位指令微機(jī)原理與接口技術(shù)第第19頁1.非循環(huán)移位指令邏輯左移算術(shù)左移邏輯右移算術(shù)右移微機(jī)原理與接口技術(shù)第第20頁算術(shù)左移和邏輯左移算術(shù)左移指令:SALOPRD,1SALOPRD,CL邏輯左移指令:
SHLOPRD,1SHLOPRD,CL有符號數(shù)無符號數(shù)移動(dòng)一位后,若CF與最高不相等,則OF=1;不然OF=0邏輯左移
SHL與SAL等價(jià)微機(jī)原理與接口技術(shù)第第21頁格式:SALOPRD,1或CL;功效:OPRD算術(shù)左移M位格式:SHLOPRD,1或CL
;功效:OPRD邏輯左移M位0CF功效:左移1或CL位,最低位補(bǔ)0,最高位→CF相當(dāng)于乘2算術(shù)左移和邏輯左移微機(jī)原理與接口技術(shù)第第22頁0CF功效:左移1或CL位,最低位補(bǔ)0,最高位→CF影響CF、OF,依據(jù)結(jié)果影響SF、PF、ZF。OF改變以下:
當(dāng)移位次數(shù)為1時(shí),若移位前后數(shù)最高位不一樣時(shí),OF=1,不然OF=0。
當(dāng)移位次數(shù)大于1,OF不定。算術(shù)左移和邏輯左移微機(jī)原理與接口技術(shù)第第23頁MOVAL,02HSALAL,1;AL:00000010;AL:00000100MOVAL,02HSALAL,4MOVAL,02HMOVCL,4SHLAL,CL;AL:00000010;AL:00100000;錯(cuò)算術(shù)左移和邏輯左移【例】微機(jī)原理與接口技術(shù)第第24頁①邏輯移位適合用于無符號數(shù);
算術(shù)移位適合用于有符號數(shù)。②邏輯左移和算術(shù)左移機(jī)器碼完全相同,是助記符兩種寫法。說明:微機(jī)原理與接口技術(shù)第第25頁SHL/SAL演示微機(jī)原理與接口技術(shù)第第26頁邏輯右移格式:SHROPRD,1SHROPRD,CL無符號數(shù)右移移動(dòng)一位后,若次高位與最高位不相同,則OF=1;不然OF=0功效:右移1或CL位,最高位補(bǔ)0,最低位→CF影響CF、OF(改變同SHL),依據(jù)結(jié)果影響SF、PF、ZF。CF0微機(jī)原理與接口技術(shù)第第27頁邏輯右移例:MOVAL,68HMOVCL,2SHRAL,CL0CF011010AL00000110100ALCF0000011010ALCF00移動(dòng)1次移動(dòng)2次微機(jī)原理與接口技術(shù)第第28頁SHR演示微機(jī)原理與接口技術(shù)第第29頁算術(shù)右移格式:SAROPRD,1SAROPRD,CL有符號數(shù)右移CF功效:右移1或CL位,最高位不變,最低位→CF影響CF、OF(改變同SHL),依據(jù)結(jié)果影響SF、PF、ZF。目操作數(shù)右移一位,最低位進(jìn)入CF,但最高位(符號位)保持不變,而不是補(bǔ)0。若目操作數(shù)為有符號數(shù),每右移一次使目操作數(shù)除以2。(余數(shù)將丟失)微機(jī)原理與接口技術(shù)第第30頁SAR演示微機(jī)原理與接口技術(shù)第第31頁移位指令操作CFOPRSHR邏輯右移0CFOPRSAR算術(shù)右移CFOPR0SHL邏輯左移SAL算術(shù)左移高位低位微機(jī)原理與接口技術(shù)第第32頁已知(AL)=0B4H,(CF)=1,分析以下指令執(zhí)行后結(jié)果
CFAL
(1)SALAL,1(2)SARAL,1(3)SHLAL,1(4)SHRAL,1110110100101101000011011010101101000001011010執(zhí)行前算術(shù)左移與邏輯左移結(jié)果相同算術(shù)右移與邏輯右移結(jié)果不一樣【例】邏輯右移算術(shù)右移微機(jī)原理與接口技術(shù)第第33頁數(shù)據(jù)移位例子MOVDX,6075H
;DX=0110000001110101BSHL
DX,1
;DX=1100000011101010B
;CF=0,SF=1,ZF=0,PF=0,OF=1SAR
DX,1
;DX=1110000001110101B
;CF=0,SF=1,ZF=0,PF=0,OF=0SHR
DX,1
;DX=0011000000111010B
;CF=1,SF=0,ZF=0,PF=1,OF=1MOVCL,4
;CL=4,標(biāo)志不變SAR
DX,CL
;DX=0000011100000011B
;CF=1,SF=0,ZF=0,PF=1微機(jī)原理與接口技術(shù)第第34頁說明:1)左移n位與乘以等效,可用SAL和SHL指令。2)右移n位與除以等效,可用SAR和SHR指令。3)利用移位指令編制乘除運(yùn)算程序,執(zhí)行時(shí)間比直接用乘除指令快,速度可提升5—6倍。微機(jī)原理與接口技術(shù)第第35頁移位指令應(yīng)用SHLAX,1
;AX←2×ALMOVBX,AX ;BX←AX=2×ALSHLAX,1 ;AX←4×ALSHLAX,1 ;AX←8×AL
ADDAX,BX ;AX←8×AL+2×AL=10×AL將AX存放器中無符號數(shù)乘以10。
邏輯左移一位相當(dāng)于無符號數(shù)乘以2
邏輯右移一位相當(dāng)于無符號數(shù)除以2移位指令比乘法指令執(zhí)行時(shí)間短【例】微機(jī)原理與接口技術(shù)第第36頁
;si←2×ax
;si←3×ax
;dx←8×bx
;dx←7×bx
;dx←7×bx+3×ax移位指令應(yīng)用--移位實(shí)現(xiàn)乘法MOVSI,AXSHLSI,1
ADDSI,AX MOVDX,BXMOVCL,03HSHLDX,CL
SUBDX,BX ADDDX,SI 【例】微機(jī)原理與接口技術(shù)第第37頁移位指令對標(biāo)志影響按照移入位設(shè)置進(jìn)位標(biāo)志CF依據(jù)移位后結(jié)果影響SF、ZF、PF對AF沒有定義假如進(jìn)行一位移動(dòng),則按照操作數(shù)最高符號位是否改變,對應(yīng)設(shè)置溢出標(biāo)志OF:假如移位前操作數(shù)最高位與移位后操作數(shù)最高位不一樣(有改變),則OF=1;不然OF=0。
當(dāng)移位次數(shù)大于1時(shí),OF不確定微機(jī)原理與接口技術(shù)第第38頁綜合應(yīng)用例
將ASCII碼轉(zhuǎn)換成BCD碼如:ASC‘9’BCD‘6’96HMOVAL,ASCMOVCL,4SHL
AL,CLMOVBL,ALMOVAL,ASC+1
ANDAL,0FH
ORBL,ALMOVBCD,BL【例】;AL<--39H(‘9’);左移4位39H->90H;BL<--90H;AL<--36H(‘6’);AL<--06H;BL<--96H微機(jī)原理與接口技術(shù)第第39頁2.循環(huán)移位指令類似移位指令,但要將從一端移出位返回到另一端形成循環(huán)。按指令功效設(shè)置進(jìn)位標(biāo)志CF、OF
(改變同SHL)
,但不影響SF、ZF、PF、AF標(biāo)志。微機(jī)原理與接口技術(shù)第第40頁循環(huán)移位指令不帶進(jìn)位位循環(huán)移位帶進(jìn)位位循環(huán)移位左移ROL右移ROR左移RCL右移RCR指令格式、對操作數(shù)要求與非循環(huán)移位指令相同微機(jī)原理與接口技術(shù)第第41頁格式:ROLOPRD,1或CL
功效:不帶進(jìn)位循環(huán)左移CF若移位后最高位與CF不一樣,則OF=1,表示移位前后數(shù)據(jù)變號。不帶進(jìn)位循環(huán)左移微機(jī)原理與接口技術(shù)第第42頁格式:ROROPRD,1或CL功效:不帶進(jìn)位循環(huán)右移CF不帶進(jìn)位循環(huán)右移微機(jī)原理與接口技術(shù)第第43頁格式:RCLOPRD,1或CL功效:帶進(jìn)位循環(huán)左移CF可實(shí)現(xiàn)多字節(jié)移位,將DX,AX左移1位SALAX,1RCLDX,1CFAX0CFDXCF帶進(jìn)位循環(huán)左移SHL微機(jī)原理與接口技術(shù)第第44頁格式:RCROPRD,1或CL
功效:帶進(jìn)位循環(huán)右移CF一樣可實(shí)現(xiàn)多字節(jié)移位。帶進(jìn)位循環(huán)右移微機(jī)原理與接口技術(shù)第第45頁循環(huán)移位指令操作CFOPRCFOPRROL循環(huán)左移ROR循環(huán)右移CFOPRRCL帶進(jìn)位循環(huán)左移CFOPRRCR帶進(jìn)位循環(huán)右移微機(jī)原理與接口技術(shù)第第46頁以下程序段執(zhí)行后,(BL)=?MOVAX,1234HSUBAX,5678HMOVBL,00110110BRCLBL,1執(zhí)行SUBAX,5678H后,CF=1001101101CFRCL01101100CF執(zhí)行RCLBL,1后(BL)=01101101B1CFOPR【例】微機(jī)原理與接口技術(shù)第第47頁SHLAX,1
;AX左移1位,(CF)AX最高位RCLDX,1
;DX帶進(jìn)位左移1位,DX最低位(CF)DXAXCF0循環(huán)移位指令舉例--32位數(shù)移位;將DX.AX中32位數(shù)值邏輯左移一位怎樣處理AX最高位移入DX最低位?微機(jī)原理與接口技術(shù)第第48頁循環(huán)移位指令對標(biāo)志影響按照指令功效設(shè)置進(jìn)位標(biāo)志CF不影響SF、ZF、PF、AF假如進(jìn)行一位移動(dòng),則按照操作數(shù)最高符號位是否改變,對應(yīng)設(shè)置溢出標(biāo)志OF:假如移位前操作數(shù)最高位與移位后操作數(shù)最高位不一樣(有改變),則OF=1;不然OF=0。
當(dāng)移位次數(shù)大于1時(shí),OF不確定微機(jī)原理與接口技術(shù)第第49頁循環(huán)移位指令應(yīng)用用于對一些位狀態(tài)測試;高位部分和低位部分交換;與非循環(huán)移位指令一起組成32位或更長字長數(shù)移位。微機(jī)原理與接口技術(shù)第第50頁
利用循環(huán)移位指令能夠?qū)Υ娣牌骰虼娣牌髦腥我晃贿M(jìn)行測試。如要測試AL存放器中第5位狀態(tài)是“0”還是“1”,則可利用以下指令實(shí)現(xiàn):
MOVCL,5 ;(CL)移位次數(shù)
RORAL,CL ;(CF)AL第5位
JNCZERO ;若(CF)=0,轉(zhuǎn)ZARO
;不然
ZERO:使用舉例微機(jī)原理與接口技術(shù)第第51頁碼制轉(zhuǎn)換AH.AL分別存放著非組合BCD碼兩位,請將它們合并成為一個(gè)組合BCD碼存AL。0000XXXX0000YYYYXXXXYYYY00001111000011110000XXXX0000YYYYXXXX00000000YYYYANDAX,0F0FH
;確保高4位為0MOVCL,4ROLAH,CL
ADDAL,AHAHAL微機(jī)原理與接口技術(shù)第第52頁邏輯運(yùn)算與移位指令小結(jié)邏輯運(yùn)算指令
(5)AND、OR、NOT、XOR、TEST
移位指令(4)SHL、SHR、SAL、SAR
循環(huán)移位指令(4)ROL、ROR、RCL、RCR13條,累計(jì)47條!微機(jī)原理與接口技術(shù)第第53頁ROL演示微機(jī)原理與接口技術(shù)第第54頁ROR演示微機(jī)原理與接口技術(shù)第第55頁RCL演示微機(jī)原理與接口技術(shù)第第56頁RCR演示微機(jī)原理與接口技術(shù)第第57頁3.3.4
串操作指令微機(jī)原理與接口技術(shù)第第58頁串操作指令串,就是連續(xù)存放數(shù)據(jù),如字節(jié)串、字串。串操作指令采取了特殊尋址方式??蓪?shí)現(xiàn)存放器到存放器數(shù)據(jù)傳送;利用循環(huán)程序也能夠?qū)崿F(xiàn)串操作指令功效。微機(jī)原理與接口技術(shù)第第59頁串操作指令共同特點(diǎn)源操作數(shù)為DS:[SI],可段超越;目標(biāo)操作數(shù)為ES:[DI],不可段超越。每次操作后自動(dòng)修正指針SI或DI。方向取決于DF:DF=0,增量;DF=1,減量。大小取決于串類型:字節(jié)為1,字為2??杉覴EP/REPZ/REPNZ重復(fù)前綴,以重復(fù)執(zhí)行指定串操作,重復(fù)次數(shù)放在CX中。格式上能夠?qū)懖僮鲾?shù),也可不寫操作數(shù),此時(shí)需要加上‘B’(字節(jié))或‘W’(字)。除CMPS和SCAS外,其余指令不影響標(biāo)志。微機(jī)原理與接口技術(shù)第第60頁串操作指令串傳送MOVS串比較CMPS串掃描SCAS串裝入LODS串送存STOS說明:
每條指令有三種形式,分別對應(yīng)于字節(jié)操作、字操作和雙字操作微機(jī)原理與接口技術(shù)第第61頁重復(fù)前綴無條件重復(fù)REP條件重復(fù)REPE相等重復(fù)REPZ為零重復(fù)REPNE不相等重復(fù)REPNZ不為零重復(fù)CX≠0ZF=1CX≠0ZF=0CX≠0重復(fù)微機(jī)原理與接口技術(shù)第第62頁重復(fù)前綴REPREP功效:若CX=0,則退出串處理循環(huán),執(zhí)行下一條指令若CX≠0,則:執(zhí)行基本串操作,然后CX←CX-1(但不影響標(biāo)志)常與MOVS、STOS聯(lián)合使用注意:全部重復(fù)前綴不能單獨(dú)使用!微機(jī)原理與接口技術(shù)第第63頁重復(fù)前綴REPZ和REPEREPZ/REPE功效:重復(fù)執(zhí)行操作條件:CX≠0且ZF=1,其余同REP。(找第一個(gè)不相等元素)常與CMPS、SCAS聯(lián)合使用。(該重復(fù)前綴只能使用在影響ZF標(biāo)志位串指令前)微機(jī)原理與接口技術(shù)第第64頁重復(fù)前綴REPNZ和REPNEREPNZ/REPNE功效:重復(fù)執(zhí)行操作條件:CX≠0且ZF=0,其余同REP。(找第一個(gè)相等元素)常與CMPS、SCAS聯(lián)合使用。(該重復(fù)前綴只能使用在影響ZF標(biāo)志位串指令前)微機(jī)原理與接口技術(shù)第第65頁MOVS目串,源串功效:①ES:[DI]←DS:[SI]②SI←SI±1/2,DI←DI±1/2MOVSBMOVSW1.串傳送指令串傳送指令常與無條件重復(fù)前綴連用以完成多個(gè)字或字節(jié)傳送。微機(jī)原理與接口技術(shù)第第66頁MOVSB:每次傳送一個(gè)字節(jié);MOVSW:每次傳送一個(gè)字;將位于DS段,由SI所指出存放單元字節(jié)或字傳送到位于ES段,由DI所指存放單元中,再依據(jù)DF修改SI和DI,從而指向下一個(gè)元素,繼續(xù)傳送,直到CX為0為止。DS:SIES:DIDS:SIES:DIDS:SIES:DI1.串傳送指令微機(jī)原理與接口技術(shù)第第67頁LEASI,STARLEADI,NEXTMOVCX,100CLD;DF=0REPMOVSB通常,在串傳送指令前加重復(fù)前綴REP,程序可自動(dòng)計(jì)數(shù)并判別是否傳送完成。REPMOVSB相當(dāng)于
[DS:SI][ES:DI]SI=SI+1DI=DI+1CX=CX-1CX≠0時(shí)轉(zhuǎn)移REPMOVSB傳送過程以下:
(1)(CX)=0?若等于0,中止傳送,不然執(zhí)行下一步(2)CX(CX)-1
(3)串傳送(4)修改指針按增量方向修改(5)轉(zhuǎn)到(1)【例】微機(jī)原理與接口技術(shù)第第68頁MOVS指令示例
MOVSI,0050H;(DS)=HMOVDI,0100H;(ES)=3000HMOVCX,5CLD;DF=0
REPMOVSB
執(zhí)行前執(zhí)行后‘A’00030100‘A’0‘A’30100‘B’1001‘B’1‘B’1‘C’2002‘C’2‘C’2‘D’3003‘D’3‘D’3‘E’4004‘E’4‘E’4‘F’5005‘F’5005源區(qū)目區(qū)源區(qū)目區(qū)SI=0050DI=0100SI=0055DI=0105【例】微機(jī)原理與接口技術(shù)第第69頁CMPS目串,源串功效:①ES:[DI]
-DS:[SI]②SI←SI±1/2,DI←DI±1/2CMPSBCMPSW2.串比較指令微機(jī)原理與接口技術(shù)第第70頁依次比較兩個(gè)字符串是一個(gè)循環(huán)過程,這個(gè)循環(huán)過程有兩種退出條件,一是滿足比較條件,比如找到第一個(gè)相等字符或找到第一個(gè)不相等字符;二是沒有滿足比較條件但已比較完全部字符。串比較指令微機(jī)原理與接口技術(shù)第第71頁比較串操作重復(fù)前綴:REPNZ/REPNE:
不相等時(shí)繼續(xù)尋找,直到尋找到第一個(gè)相等字符或?qū)ふ彝耆孔址?CX=0)。REPZ/REPE:
比較結(jié)果相等時(shí)繼續(xù)尋找,直到尋找到第一個(gè)不相等字符或?qū)ふ彝耆孔址?CX=0)。CX值不影響ZF微機(jī)原理與接口技術(shù)第第72頁CMPS指令示例串String1和String2分別定義在數(shù)據(jù)段和附加段中。比較兩串,如相等則轉(zhuǎn)移到標(biāo)號NEXT處。String1DB‘HELP’;定義String1 String2DB‘HEPP’;定義String2 …… CLD;DF=0 LEASI,String1;源串地址-->SI LEADI,String2;目串地址-->DI MOVCX,4;重復(fù)次數(shù)-->CX REPZCMPSB;重復(fù)比較 JZNEXT;串相等轉(zhuǎn)移 ....NEXT:【例】微機(jī)原理與接口技術(shù)第第73頁SCAS目串功效:①ES:[DI]-AX/AL②DI←DI±1/2注意:對標(biāo)志位有影響!SCASBSCASW3.串掃描指令執(zhí)行與CMPS指令相同操作,只是這里源操作數(shù)是AX或AL將AL或AX中數(shù)據(jù)與位于ES段DI指針?biāo)竷?nèi)存單元數(shù)據(jù)相比較,經(jīng)過重復(fù)前綴控制,能夠?qū)ふ业絻?nèi)存單元中第一個(gè)與AL(或AX)不一樣或相同數(shù)據(jù)。微機(jī)原理與接口技術(shù)第第74頁REPNZSCASB:(AL)-[ES:DI],
不為0(不相等)時(shí)繼續(xù)比較,DI自動(dòng)加1或減1,CX自動(dòng)減1,直到相等或CX為0時(shí)退出循環(huán)。尋找第一個(gè)相同數(shù)據(jù)REPZSCASB:(AL)-[ES:DI],
為0(相等)時(shí)繼續(xù)比較,DI自動(dòng)加1或減1,CX自動(dòng)減1,直到不相等或CX為0時(shí)退出循環(huán)。尋找第一個(gè)不一樣數(shù)據(jù)。串掃描操作重復(fù)前綴:微機(jī)原理與接口技術(shù)第第75頁串掃描指令應(yīng)用慣用于在指定存放區(qū)域中尋找某個(gè)關(guān)鍵字。微機(jī)原理與接口技術(shù)第第76頁SCAS指令示例
在串“ThatisCAI”中查找字符‘a(chǎn)’,找到,則轉(zhuǎn)到標(biāo)號FOUND處。StringDB‘ThatisCAI’;定義串…… CLD ;DF=0 LEADI,String ;串地址-->DI MOVAL,‘a(chǎn)’;查找字符-->AL MOVCX,11;重復(fù)次數(shù)-->CX REPNZSCASB;重復(fù)掃描 JZFOUND ;找到目串元素轉(zhuǎn)移 ……FOUND:【例】微機(jī)原理與接口技術(shù)第第77頁LODS源串功效:①AX/AL←DS:[SI]②SI←SI±1/2LODSBLODSW4.串裝入指令用LODSB時(shí),每次取一個(gè)字節(jié),取完后,地址自動(dòng)加1或減1;用LODSW時(shí),每次取一個(gè)字,取完后,地址自動(dòng)加2或減2。該指令普通不用重復(fù)前綴,不然,AL或AX中內(nèi)容會(huì)被后一次操作覆蓋,最終只能得到內(nèi)存中字符串最終一個(gè)字節(jié)或字。微機(jī)原理與接口技術(shù)第第78頁ALLODSBDS:SIDS:SIDS:SIDS:SI微機(jī)原理與接口技術(shù)第第79頁 …… LEASI,SOURCE ;源串偏移量-->SI LEADI,DESTIN ;目串偏移量-->DI CLD;DF=0 MOVCX,100;重復(fù)比較次數(shù)-->CX REPZCMPSB ;重復(fù)串比較 JCXZMATCH ;沒有不匹配元素跳轉(zhuǎn) DECSI;指向不匹配元素 LODSB;裝入不匹配元素到AL ...MATCH:LODS指令示例比較SOURCE和DESTIN(串長度為100個(gè)字節(jié)),并將串中第一個(gè)不匹配元素裝入AL存放器中?!纠课C(jī)原理與接口技術(shù)第第80頁STOS目串功效:①ES:[DI]←AX/AL②DI←DI±1/2STOSBSTOSW5.串存放指令把AL或AX中數(shù)據(jù)存放到位于ES段DI所指存放單元中,并自動(dòng)修改地址指針。微機(jī)原理與接口技術(shù)第第81頁該指令可加重復(fù)前綴,使內(nèi)存中連續(xù)空間填滿相同數(shù)據(jù)。將從DBB開始256個(gè)單元清零CLDLEADI,DBBMOVCX,80HXORAX,AXREPSTOSW串存放指令微機(jī)原理與接口技術(shù)第第82頁將從0700H單元開始5個(gè)字節(jié)內(nèi)容逐一取來,放在累加器中進(jìn)行處理,處理完后再送到0700H內(nèi)存區(qū)域。CLD MOVSI,0700H MOVDI,0700H MOVCX,5L1:
LODSB PUSHCX …… POPCX
STOSB DECCX JNZL1處理字符指令不用考慮指針DI,SI改變【例】微機(jī)原理與接口技術(shù)第第83頁注意:使用串指令前,必須先進(jìn)行以下設(shè)置(初始化)(1)必須事先設(shè)置隱含存放器;
(2)設(shè)置方向標(biāo)志位DF;(3)假如使用重復(fù)前綴,還必須把重復(fù)次數(shù)放入CX中。串操作指令小結(jié)微機(jī)原理與接口技術(shù)第第84頁串操作指令小結(jié)串操作移指令
(5)MOVS、CMPS、SCAS、LODS(不能使用重復(fù)前綴)、STOS
重復(fù)前綴(3)REP、REPZ、REPNZ8條,累計(jì)55條!微機(jī)原理與接口技術(shù)第第85頁轉(zhuǎn)移指令循環(huán)控制過程調(diào)用中止控制3.3.5
程序控制指令微機(jī)原理與接口技術(shù)第第86頁控制轉(zhuǎn)移指令改變指令次序執(zhí)行,用于實(shí)現(xiàn)分支、循環(huán)等程序結(jié)構(gòu)。除中止指令外,其它指令均不影響標(biāo)志位。分類無條件轉(zhuǎn)移條件轉(zhuǎn)移循環(huán)控制過程調(diào)用與返回中止微機(jī)原理與接口技術(shù)第第87頁指令執(zhí)行次序8086/8088中,指令執(zhí)行次序是由CS:IP決定。普通情況下,指令是次序執(zhí)行。如要改變指令次序執(zhí)行,就需要改變CS或IP??刂妻D(zhuǎn)移類指令經(jīng)過改變IP或CS值,實(shí)現(xiàn)程序執(zhí)行次序改變。當(dāng)程序發(fā)生轉(zhuǎn)移時(shí),存放在指令隊(duì)列存放器中指令被去除,BIU將依據(jù)新CS:IP值從存放器中取出新指令,并直接送EU執(zhí)行。微機(jī)原理與接口技術(shù)第第88頁目標(biāo)地址尋址方式相對尋址方式指令代碼中提供目標(biāo)地址相對于當(dāng)前IP位移量,轉(zhuǎn)移到目標(biāo)地址(轉(zhuǎn)移后IP值)就是當(dāng)前IP值加上位移量直接尋址方式指令代碼中提供目標(biāo)邏輯地址,轉(zhuǎn)移后CS和IP值直接來自指令操作碼后目標(biāo)地址操作數(shù)間接尋址方式指令代碼中指示存放器或存放單元,目標(biāo)地址從存放器或存放單元中間接取得用標(biāo)號表示用標(biāo)號表示用存放器或存放器操作數(shù)表示微機(jī)原理與接口技術(shù)第第89頁目標(biāo)地址尋址范圍:段內(nèi)尋址段內(nèi)轉(zhuǎn)移——短轉(zhuǎn)移(short)轉(zhuǎn)移范圍能夠用一個(gè)字節(jié)表示,在段內(nèi)-128~+127范圍轉(zhuǎn)移段內(nèi)轉(zhuǎn)移——近轉(zhuǎn)移(near)在當(dāng)前代碼段64KB范圍內(nèi)轉(zhuǎn)移(±32KB范圍)不需要更改CS段地址,只要改變IP偏移地址代碼段代碼段微機(jī)原理與接口技術(shù)第第90頁目標(biāo)地址尋址范圍:段間尋址段間轉(zhuǎn)移——遠(yuǎn)轉(zhuǎn)移(far)從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段,能夠在1MB范圍需要更改CS段地址和IP偏移地址目標(biāo)地址必須用一個(gè)32位數(shù)表示,叫做32位遠(yuǎn)指針,它就是邏輯地址代碼段代碼段實(shí)際編程時(shí),匯編程序會(huì)依據(jù)目標(biāo)地址屬性,自動(dòng)處理成短轉(zhuǎn)移、近轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移程序員可用操作符short、nearptr或farptr強(qiáng)制成為需要轉(zhuǎn)移類型微機(jī)原理與接口技術(shù)第第91頁轉(zhuǎn)移地址尋址控制轉(zhuǎn)移指令需要確定轉(zhuǎn)移目標(biāo)地址。目標(biāo)地址能夠在段內(nèi),也能夠跨段(段間)。段內(nèi)轉(zhuǎn)移只修改IP,而段間轉(zhuǎn)移要修改CS和IP。分類段內(nèi)直接尋址段內(nèi)間接尋址段間直接尋址段間間接尋址微機(jī)原理與接口技術(shù)第第92頁一、轉(zhuǎn)移指令無條件轉(zhuǎn)移指令
無條件轉(zhuǎn)移到目標(biāo)地址,執(zhí)行新指令有條件轉(zhuǎn)移指令
在具備一定條件情況下轉(zhuǎn)移到目標(biāo)地址經(jīng)過修改指令偏移地址或段地址及偏移地址實(shí)現(xiàn)程序轉(zhuǎn)移微機(jī)原理與接口技術(shù)第第93頁1.無條件轉(zhuǎn)移指令JMPlabel功效:無條件地轉(zhuǎn)移到指令要求目標(biāo)地址label。分類段內(nèi)直接短轉(zhuǎn)移段內(nèi)直靠近轉(zhuǎn)移段內(nèi)間接轉(zhuǎn)移段間直接轉(zhuǎn)移段間間接轉(zhuǎn)移微機(jī)原理與接口技術(shù)第第94頁無條件轉(zhuǎn)移指令指令名稱指令格式指令功效轉(zhuǎn)移范圍段內(nèi)直接短轉(zhuǎn)移JMPdisp8(IP)(IP)+disp8-128~+127段內(nèi)直靠近轉(zhuǎn)移JMPdisp16(IP)(IP)+disp16-32K~+32K段內(nèi)間接轉(zhuǎn)移JMPmem/reg(IP)(mem)(IP)(reg)-32K~+32K段間直接轉(zhuǎn)移JMPaddr(IP)偏移地址(CS)段地址-32K~+32K段間間接轉(zhuǎn)移JMPmem(IP)(mem)(CS)(mem)+2-32K~+32K標(biāo)準(zhǔn)上可實(shí)現(xiàn)在整個(gè)內(nèi)存空間轉(zhuǎn)移微機(jī)原理與接口技術(shù)第第95頁無條件轉(zhuǎn)移指令JMP(jump)JMPlabel
;段內(nèi)轉(zhuǎn)移、相對尋址
;IP←IP+位移量
JMPr16/m16 ;段內(nèi)轉(zhuǎn)移、間接尋址
;IP←r16/m16
JMPfarptrlabel
;段間轉(zhuǎn)移、直接尋址
;IP←偏移地址,CS←段地址
JMPfarptrmem
;段間轉(zhuǎn)移,間接尋址
;IP←[mem],CS←[mem+2]微機(jī)原理與接口技術(shù)第第96頁無條件段內(nèi)轉(zhuǎn)移轉(zhuǎn)移目標(biāo)地址在當(dāng)前代碼段內(nèi),段地址不改變。即:目標(biāo)地址是16位偏移地址。指令中直接給出目標(biāo)地址由指令中存放器或存放器操作數(shù)指出目標(biāo)地址段內(nèi)直接轉(zhuǎn)移段內(nèi)間接轉(zhuǎn)移微機(jī)原理與接口技術(shù)第第97頁段內(nèi)直接轉(zhuǎn)移段內(nèi)直接轉(zhuǎn)移轉(zhuǎn)移目標(biāo)地址由指令直接給出格式:JMPLabel近地址標(biāo)號JMPSHORT標(biāo)號
JMPNEARPTR標(biāo)號或JMP標(biāo)號微機(jī)原理與接口技術(shù)第第98頁段內(nèi)直接轉(zhuǎn)移示圖JMPLabel┇┇┇代碼段位移量下一條要執(zhí)行指令偏移地址=當(dāng)前IP+位移量微機(jī)原理與接口技術(shù)第第99頁段內(nèi)間接轉(zhuǎn)移段內(nèi)間接轉(zhuǎn)移轉(zhuǎn)移目標(biāo)地址存放在某個(gè)16位存放器或存放器某兩個(gè)單元中例:JMPBX若:BX=1200H則:轉(zhuǎn)移目標(biāo)地址=1200HJMP┇┇代碼段1200HMOV微機(jī)原理與接口技術(shù)第第100頁段內(nèi)間接轉(zhuǎn)移例JMPWORDPTR[BX]
設(shè):BX=1200HJMP┇┇┇代碼段數(shù)據(jù)段BX=1200┇XXHXXHIP指令碼微機(jī)原理與接口技術(shù)第第101頁無條件段間轉(zhuǎn)移轉(zhuǎn)移目標(biāo)地址不在當(dāng)前代碼段內(nèi)。目標(biāo)地址為32位,包含段地址和偏移地址。指令中直接給出目標(biāo)地址由指令中32位存放器操作數(shù)指出目標(biāo)地址段間直接轉(zhuǎn)移段間間接轉(zhuǎn)移微機(jī)原理與接口技術(shù)第第102頁段間直接轉(zhuǎn)移段內(nèi)直接轉(zhuǎn)移轉(zhuǎn)移目標(biāo)地址由指令直接給出格式:JMPFARLabel遠(yuǎn)地址標(biāo)號微機(jī)原理與接口技術(shù)第第103頁段間直接轉(zhuǎn)移示圖JMPLabel┇┇┇代碼段1Label與JMP之間位移量代碼段2XXHXXHXXHXXHIPCS微機(jī)原理與接口技術(shù)第第104頁段間間接轉(zhuǎn)移段內(nèi)間接尋址轉(zhuǎn)移目標(biāo)地址由指令中32位操作數(shù)給出例:JMPDWORDPTR[BX]XXHXXHXXHXXHBXIPCSJMP┇┇┇┇指令碼代碼段1代碼段2數(shù)據(jù)段微機(jī)原理與接口技術(shù)第第105頁例:JMP[BX+DATA]設(shè)DS=H,BX=1400H,DATA=020AH,則執(zhí)行過程以下:0H30004000IPCS00300040EA=1400H+020AH執(zhí)行跳轉(zhuǎn)指令后,轉(zhuǎn)移至4000H:3000H處執(zhí)行程序。數(shù)據(jù)段【例】微機(jī)原理與接口技術(shù)第第106頁段內(nèi)直接轉(zhuǎn)移演示微機(jī)原理與接口技術(shù)第第107頁段內(nèi)存放器間接轉(zhuǎn)移演示微機(jī)原理與接口技術(shù)第第108頁段內(nèi)存放器間接轉(zhuǎn)移演示微機(jī)原理與接口技術(shù)第第109頁段間直接轉(zhuǎn)移演示微機(jī)原理與接口技術(shù)第第110頁段間間接轉(zhuǎn)移演示微機(jī)原理與接口技術(shù)第第111頁2.條件轉(zhuǎn)移指令在滿足一定條件下,程序轉(zhuǎn)移到目標(biāo)地址繼續(xù)執(zhí)行條件轉(zhuǎn)移指令均為段內(nèi)短轉(zhuǎn)移,即轉(zhuǎn)移范圍為:-128------+127微機(jī)原理與接口技術(shù)第第112頁條件轉(zhuǎn)移指令Jcclabel功效:依據(jù)指定條件是否成立來確定程序是否轉(zhuǎn)移。cc表示某種條件。若條件滿足,發(fā)生轉(zhuǎn)移IP←當(dāng)前IP+8位位移量不然,次序執(zhí)行l(wèi)abel是一個(gè)標(biāo)號,表示一個(gè)8位位移量。label只支持段內(nèi)直接短轉(zhuǎn)移尋址方式,即相對短轉(zhuǎn)移。微機(jī)原理與接口技術(shù)第第113頁轉(zhuǎn)移條件JZ/JE
JumponZero/EqualJNZ/JNE
JumponNotZero/EqualJS
JumponSignJNS
JumponNotSignJP/JPE
JumponParity/ParityEvenJNP/JPO
JumponNotParity/ParityOddJO JumponOverflowJNO
JumponNotOverflowJC/JB/JNAE
JumponCarry/Below/NotAboveorEqualJNC/JNB/JAE
JumponNotCarry/NotBelow/AboveorEqualJBE/JNA
JumponBeloworEqual/NotAboveJNBE/JA
JumponNotBeloworEqual/AboveJL/JNGE
JumponLess/NotGreaterorEqualJNL/JGE
JumponNotLess/GreaterorEqualJLE/JNG
JumponLessorEqual/NotGreaterJNLE/JG
JumponNotLessorEqual/Greater共16個(gè)!微機(jī)原理與接口技術(shù)第第114頁Jcc分類Jcc指令不影響標(biāo)志,但要利用標(biāo)志。依據(jù)利用標(biāo)志位不一樣,分成三種情況:⑴判斷單個(gè)標(biāo)志位狀態(tài)⑵比較無符號數(shù)高低⑶比較有符號數(shù)大小Jcc指令實(shí)際雖然只有16條,但卻有30個(gè)助記符。采用多個(gè)助記符,目是為了方便記憶和使用。微機(jī)原理與接口技術(shù)第第115頁判斷單個(gè)標(biāo)志JZ/JE和JNZ/JNE利用零標(biāo)志ZF,判斷結(jié)果是否為零(或相等)JS和JNS利用符號標(biāo)志SF,判斷結(jié)果是正是負(fù)JO和JNO利用溢出標(biāo)志OF,判斷結(jié)果是否產(chǎn)生溢出JP/JPE和JNP/JPO利用奇偶標(biāo)志PF,判斷結(jié)果中1個(gè)數(shù)是偶是奇JC和JNC利用進(jìn)位標(biāo)志CF,判斷結(jié)果是否進(jìn)位或借位微機(jī)原理與接口技術(shù)第第116頁題目:AX中存放無符號數(shù),若AX是偶數(shù)則除以2,假如是奇數(shù)則加1后除以2。分析:怎樣判斷AX中數(shù)據(jù)是奇數(shù)還是偶數(shù)?解答:
判斷AX最低位是0還是1,能夠利用邏輯運(yùn)算和移位指令。【例】微機(jī)原理與接口技術(shù)第第117頁題目:AX中存放無符號數(shù),若AX是偶數(shù)則除以2,假如是奇數(shù)則加1后除以2。解答:判斷AX最低位是0還是1,可用邏輯運(yùn)算和移位指令。方法:用邏輯與指令保留AX最低位不變而使其它位清0
假如運(yùn)算結(jié)果是0,則AX為偶數(shù);不然,為奇數(shù)。將最低位用移位指令移至進(jìn)位標(biāo)志,
判斷進(jìn)位標(biāo)志是0,AX為偶數(shù);不然,為奇數(shù)。將最低位用移位指令移至最高位(符號位)
判斷符號標(biāo)志是0,AX為偶數(shù);不然,為奇數(shù)?!纠课C(jī)原理與接口技術(shù)第第118頁利用JZ指令實(shí)現(xiàn)
TESTAX,01H
;測試AX最低位D0
;不用AND指令,以免改變AXJZ
EVEN
;標(biāo)志ZF=1,即D0=0
;AX內(nèi)是偶數(shù),則程序轉(zhuǎn)移
ADDAX,1
;標(biāo)志ZF=0,即D0=1
;AX內(nèi)奇數(shù),加1EVEN:
SHRAX,1
;AX←AX÷2用右移一位方法實(shí)現(xiàn)除以2。微機(jī)原理與接口技術(shù)第第119頁利用JNC指令實(shí)現(xiàn)還可用ROR和RCR指令。
MOVBX,AX
SHRBX,1
;將AX最低位D0移進(jìn)CF
JNC
EVEN
;標(biāo)志CF=0,即D0=0 ;AX是偶數(shù),則程序轉(zhuǎn)移
ADDAX,1
;標(biāo)志CF=1,即D0=1 ;AX內(nèi)奇數(shù),加1EVEN:
SHRAX,1
;
AX←AX÷2微機(jī)原理與接口技術(shù)第第120頁判斷是否為字母Y;存放器AL中是字母Y(含大小寫),則令A(yù)H=0,不然令A(yù)H=-1 cmpal,’y’ ;比較AL與小寫字母y
jenext ;相等,轉(zhuǎn)移 cmpal,’Y’ ;不相等, ;繼續(xù)比較AL與大寫字母Y
jenext ;相等,轉(zhuǎn)移 movah,-1 ;不相等,令A(yù)H=-1
jmpdone
;無條件轉(zhuǎn)移指令next: movah,0
;相等處理:令A(yù)H=0done: ……微機(jī)原理與接口技術(shù)第第121頁比較無符號數(shù)高低無符號數(shù)大小用高(Above)、低(Below)表示,需要利用CF確定高低、利用ZF標(biāo)志確定相等(Equal)。JB/JNAE目標(biāo)操作數(shù)低于(不高于等于)源操作數(shù)JNB/JAE目標(biāo)操作數(shù)不低于(高于等于)源操作數(shù)JBE/JNA目標(biāo)操作數(shù)低于等于(不高于)源操作數(shù)JNBE/JA目標(biāo)操作數(shù)不低于等于(高于)源操作數(shù)微機(jī)原理與接口技術(shù)第第122頁比較有符號數(shù)大小判斷有符號數(shù)大(Greater)、?。↙ess),需要組合OF、SF標(biāo)志,并利用ZF標(biāo)志確定相等是否。JL/JNGE目標(biāo)操作數(shù)小于(小于等于)源操作數(shù)JNL/JGE目標(biāo)操作數(shù)大于(大于等于)源操作數(shù)JLE/JNG目標(biāo)操作數(shù)小于等于(小于)源操作數(shù)JNLE/JG目標(biāo)操作數(shù)大于等于(大于)源操作數(shù)微機(jī)原理與接口技術(shù)第第123頁
CMPAX,BX
;比較AX和BX
JAE
NEXT
;若AX≥BX,轉(zhuǎn)移
XCHGAX,BX
;若AX<BX,交換NEXT:
MOVWMAX,AX例:比較AX、BX兩個(gè)存放器中無符號數(shù),并將較大值送WMAX。求較大值(無符號數(shù))假如AX和BX存放是有符號數(shù),則條件轉(zhuǎn)移指令應(yīng)采取JGE指令微機(jī)原理與接口技術(shù)第第124頁求較大值(無符號數(shù))-另解
CMPAX,BX
;比較AX和BX
JAE
NEXT
MOVWMAX,BX
;若AX<BX,wmax←BX
JMP
DONENEXT:
MOVWMAX,AX
;若AX≥BX,wmax←AXDONE: ……微機(jī)原理與接口技術(shù)第第125頁求較大值(無符號數(shù))-另解對比
CMPAX,BX
;比較AX和BX
JBE
NEXT
MOVWMAX,AX
;若AX>BX,wmax←AX
JMP
DONENEXT:
MOVWMAX,BX
;若AX≤BX,wmax←BXDONE: ……微機(jī)原理與接口技術(shù)第第126頁二、循環(huán)控制指令一段程序代碼屢次重復(fù)執(zhí)行就是循環(huán)。8086/8088循環(huán)控制指令都隱含使用CX作為循環(huán)計(jì)數(shù)器。轉(zhuǎn)移目標(biāo)操作數(shù)采取相對短轉(zhuǎn)移尋址。微機(jī)原理與接口技術(shù)第第127頁循環(huán)控制指令循環(huán)范圍:以當(dāng)前IP為中心-128~+127范圍內(nèi)循環(huán)。循環(huán)指令:LOOP*LOOPZ*LOOPNZ無條件循環(huán)指令條件循環(huán)指令微機(jī)原理與接口技術(shù)第第128頁循環(huán)控制指令LOOPlabelJCXZlabel①CX←CX-1 ②若CX≠0,則轉(zhuǎn)移進(jìn)入循環(huán)執(zhí)行;不然,次序執(zhí)行。若CX=0,則轉(zhuǎn)移;不然次序執(zhí)行。DECCXJNZlabel注意:LOOP與REP區(qū)分等價(jià)于微機(jī)原理與接口技術(shù)第第129頁循環(huán)控制指令LOOPZ/LOOPElabelLOOPNZ/LOOPNElabel①CX←CX-1 ②若CX≠0且ZF=1,則轉(zhuǎn)移;不然,次序執(zhí)行。①CX←CX-1 ②若CX≠0且ZF=0,則轉(zhuǎn)移;不然,次序執(zhí)行。微機(jī)原理與接口技術(shù)第第130頁數(shù)據(jù)塊傳送
MOVAX,
0
MOVDS,AX MOVAX,H MOVES,AX
MOVSI,1000H MOVDI,0000H MOVCX,100
AGAIN: MOVAL,[SI] MOVES:[DI],AL INCSI INCDI
LOOPAGAIN試寫一編程段將0000:1000H開始100個(gè)字節(jié)傳送到:0000H開始單元中去。微機(jī)原理與接口技術(shù)第第131頁循環(huán)控制例子
MOVMINUS,
0
MOVSI,H MOVCX,100AGAIN: MOV
AL,[SI]
ORAL,AL
JNS
PLUS
INCMINUSPLUS:
INCSI
LOOPAGAIN在數(shù)據(jù)段中連續(xù)存放了100個(gè)8位有符號數(shù),數(shù)據(jù)塊首地址為H。試編寫程序統(tǒng)計(jì)其中負(fù)數(shù)個(gè)數(shù),并將個(gè)數(shù)存放到字節(jié)單元MINUS中。微機(jī)原理與接口技術(shù)第第132頁三、過程調(diào)用與返回指令在程序設(shè)計(jì)中,通常把大程序分解為若干個(gè)小功效模塊。每個(gè)小功效模塊對應(yīng)一個(gè)過程,又稱子程序。主程序能夠調(diào)用一個(gè)子程序,子程序執(zhí)行完成后要返回主程序調(diào)用處繼續(xù)往下執(zhí)行。被調(diào)用子程序能夠在段內(nèi)(近過程),也能夠在其它段(遠(yuǎn)過程)。調(diào)用過程地址能夠直接給出,也可間接給出。微機(jī)原理與接口技術(shù)第第133頁子程序指令子程序是完成特定功效一段程序當(dāng)主程序(調(diào)用程序)需要執(zhí)行這個(gè)功效時(shí),采取CALL調(diào)用指令轉(zhuǎn)移到該子程序起始處執(zhí)行當(dāng)運(yùn)行完子程序功效后,采取RET返回指令回到主程序繼續(xù)執(zhí)行演示微機(jī)原理與接口技術(shù)第第134頁過程調(diào)用與返回演示CALLlabel主程序RET子程序回到CALL指令后下一條指令處→返回地址斷點(diǎn)微機(jī)原理與接口技術(shù)第第135頁子程序調(diào)用指令CALLCALL指令分成4種類型(類似JMP)CALLlabel ;段內(nèi)調(diào)用、直接尋址CALLr16/m16 ;段內(nèi)調(diào)用、間接尋址CALLfarptrlabel ;段間調(diào)用、直接尋址CALLfarptrmem
;段間調(diào)用、間接尋址CALL指令需要保留返回地址:段內(nèi)調(diào)用——入棧偏移地址IPSP←SP-2,SS:[SP]←IP段間調(diào)用——入棧偏移地址IP和段地址CSSP←SP-2,SS:[SP]←CSSP←SP-2,SS:[SP]←IP功效:①斷點(diǎn)地址入棧,即保留斷點(diǎn)地址。②轉(zhuǎn)移微機(jī)原理與接口技術(shù)第第136頁CALL與JMP區(qū)分JMP指令有去無回。CALL指令需要返回,其中利用堆棧保留返回地址。微機(jī)原理與接口技術(shù)第第137頁段內(nèi)調(diào)用例(1)CALLTIMRE(2)CALLWORDPTR[SI]直接調(diào)用間接調(diào)用44H33HCALL代碼段數(shù)據(jù)段┇設(shè):SI=1200HCS=6000H1200H執(zhí)行第(2)條指令后:6000HCS=3344HIP=微機(jī)原理與接口技術(shù)第第138頁段間調(diào)用例格式:
CALLFARPROC格式例:CALLFARTIMRECALLDWORDPTR[SI]XXHXXHCALL代碼段數(shù)據(jù)段┇SIXXHXXHCSIP微機(jī)原理與接口技術(shù)第第139頁子程序返回指令RET依據(jù)段內(nèi)和段間、有沒有參數(shù),分成4種類型RET ;無參數(shù)段內(nèi)返回*RETi16
;有參數(shù)段內(nèi)返回RET ;無參數(shù)段間返回*RETi16
;有參數(shù)段間返回需要彈出CALL指令壓入堆棧返回地址段內(nèi)返回——出棧偏移地址IP
IP←SS:[SP],SP←SP+2段間返回——出棧偏移地址IP和段地址CS
IP←SS:[SP],SP←SP+2CS←SS:[SP],SP←SP+2微機(jī)原理與接口技術(shù)第第140頁四、中止指令中止(interrupt)是又一個(gè)改變程序執(zhí)行次序方法。8088CPU支持256個(gè)中止,每個(gè)中止用一個(gè)編號(中止向量號)區(qū)分。現(xiàn)在無須深入,后面課程會(huì)深入。微機(jī)原理與接口技術(shù)第第141頁主程序與中止服務(wù)程序主程序IRET中止服務(wù)程序斷點(diǎn)中止請求中止請求能夠來自處理器外部中止源,也能夠由處理器執(zhí)行指令引發(fā):比如執(zhí)行INTi8指令。微機(jī)原理與接口技術(shù)第第142頁中止指
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年河南普高單招試題附答案
- 2026年開封大學(xué)單招職業(yè)適應(yīng)性測試題庫附答案
- 2026年安徽醫(yī)學(xué)高等??茖W(xué)校單招職業(yè)傾向性考試模擬測試卷附答案
- 2026年南陽農(nóng)業(yè)職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試模擬測試卷附答案
- 2026年廣東省清遠(yuǎn)市單招職業(yè)傾向性測試模擬測試卷及答案1套
- 2026年石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及答案1套
- 2026年廣東省河源市單招職業(yè)適應(yīng)性考試題庫附答案
- 2026山東威海市智慧谷實(shí)驗(yàn)幼兒園招聘1人筆試備考試題及答案解析
- 2026廣東中山市阜沙鎮(zhèn)阜沙中學(xué)、阜沙中心小學(xué)、牛角小學(xué)招聘非編教師7人筆試模擬試題及答案解析
- 2025年安慶宿松縣鐵寨村村級后備干部招考1人備考題庫附答案
- 叔叔在侄子訂婚宴致辭
- 自信自卑主題班會(huì)
- 2023上海物理水平等級考+答案
- YY/T 1718-2020人類體外輔助生殖技術(shù)用醫(yī)療器械胚胎移植導(dǎo)管
- GB/T 3853-2017容積式壓縮機(jī)驗(yàn)收試驗(yàn)
- GB/T 28837-2012木質(zhì)包裝檢疫處理服務(wù)質(zhì)量要求
- GA/T 1380-2018法庭科學(xué)DNA數(shù)據(jù)庫人員樣本采集規(guī)范
- 銅鹽加速醋酸鹽霧試驗(yàn)標(biāo)準(zhǔn)
- 刑法總論全套課件
- 信息技術(shù)七年級下冊活動(dòng)2 IP地址與域名市公開課一等獎(jiǎng)省名師優(yōu)質(zhì)課賽課一等獎(jiǎng)?wù)n件
- 醫(yī)院精細(xì)化管理
評論
0/150
提交評論