《微機(jī)原理與應(yīng)用教學(xué)資料》第三章(課件)

上傳人:沈*** 文檔編號:239377025 上傳時間:2024-01-25 格式:PPT 頁數(shù):81 大?。?41.76KB
收藏 版權(quán)申訴 舉報 下載
《微機(jī)原理與應(yīng)用教學(xué)資料》第三章(課件)_第1頁
第1頁 / 共81頁
《微機(jī)原理與應(yīng)用教學(xué)資料》第三章(課件)_第2頁
第2頁 / 共81頁
《微機(jī)原理與應(yīng)用教學(xué)資料》第三章(課件)_第3頁
第3頁 / 共81頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《微機(jī)原理與應(yīng)用教學(xué)資料》第三章(課件)》由會員分享,可在線閱讀,更多相關(guān)《《微機(jī)原理與應(yīng)用教學(xué)資料》第三章(課件)(81頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、微機(jī)原理與應(yīng)用教學(xué)資料第三章(課件)微機(jī)原理與應(yīng)用教學(xué)資料第三章(課件)2 v3-1 80863-1 8086尋址方式尋址方式指令:操作碼:給出此指令應(yīng)完成何種操作。告訴計算機(jī)指令:操作碼:給出此指令應(yīng)完成何種操作。告訴計算機(jī) 做什么做什么 操作數(shù):該指令的操作對象。告訴計算機(jī)對誰做操作數(shù):該指令的操作對象。告訴計算機(jī)對誰做指令格式:操作碼指令格式:操作碼 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) 源操作數(shù):數(shù)據(jù)從何而來。操作過程中原值不變。源操作數(shù):數(shù)據(jù)從何而來。操作過程中原值不變。目的操作數(shù):送到哪里去。操作數(shù)原值不保留。目的操作數(shù):送到哪里去。操作數(shù)原值不保留。尋址方式:說明操作數(shù)所在地

2、址的方法。尋址方式:說明操作數(shù)所在地址的方法。操作數(shù)來源:操作數(shù)來源:指令指令 CPU CPU內(nèi)部寄存器內(nèi)部寄存器 內(nèi)存單元內(nèi)存單元電氣學(xué)院學(xué)習(xí)部資料庫4 電氣學(xué)院學(xué)習(xí)部資料庫3v一、一、立即尋址方式立即尋址方式 指令中包含操作數(shù),不必執(zhí)行總線周期,指令執(zhí)指令中包含操作數(shù),不必執(zhí)行總線周期,指令執(zhí)行速度快行速度快例例1 1:MOV ALMOV AL,80H80H;80HAL80HAL,(,(ALAL)=80H=80H例例2 2:MOV AXMOV AX,1234H1234H;1234HAX1234HAX,(,(AHAH)=12H=12H,(ALAL)=34H=34H *加上(加上(),表示取寄

3、存器或內(nèi)存單元的內(nèi)容),表示取寄存器或內(nèi)存單元的內(nèi)容 一般用于賦值。源操作數(shù)和目的操作數(shù)字長一般用于賦值。源操作數(shù)和目的操作數(shù)字長應(yīng)相同應(yīng)相同 立即數(shù)只能做源操作數(shù),不能做目的操作數(shù)立即數(shù)只能做源操作數(shù),不能做目的操作數(shù) 若是以字母打頭的數(shù),例:若是以字母打頭的數(shù),例:A0HA0H在編程中必須在編程中必須表示為表示為0A0H0A0H電氣學(xué)院學(xué)習(xí)部資料庫5一、立即尋址方式電氣學(xué)院學(xué)習(xí)部資料庫4v二、寄存器尋址二、寄存器尋址操作數(shù)在寄存器中,不必執(zhí)行總線周期,執(zhí)行速度快操作數(shù)在寄存器中,不必執(zhí)行總線周期,執(zhí)行速度快例例1 1:INC AL INC AL;(;(ALAL)+1AL+1AL,若(,若(

4、ALAL)=86H=86H,指令執(zhí)行完,指令執(zhí)行完(ALAL)=87H=87H例例2 2:MOV AXMOV AX,CXCX;(;(CXCX)AXAX,若指令執(zhí)行前,若指令執(zhí)行前CX=3A68H,CX=3A68H,指令指令執(zhí)行后執(zhí)行后AX=3A68HAX=3A68H目的與源操作數(shù)都可用寄存器尋址目的與源操作數(shù)都可用寄存器尋址注意數(shù)據(jù)匹配,源與目的操作數(shù)的長度必須一致注意數(shù)據(jù)匹配,源與目的操作數(shù)的長度必須一致 例:例:MOV AXMOV AX,BLBL;錯誤。錯誤??捎糜诩拇嫫鲗ぶ返募拇嫫靼ǎ嚎捎糜诩拇嫫鲗ぶ返募拇嫫靼ǎ? 4個通用寄存器,個通用寄存器,4 4個專用個專用寄存器寄存器 161

5、6位操作數(shù):位操作數(shù):AXAX,BXBX,CXCX,DXDX,SISI,DIDI,SPSP,BPBP 8 8位操作數(shù):位操作數(shù):AHAH,ALAL,BHBH,BLBL,CHCH,CLCL,DHDH,DLDL從第三種開始,指令的操作數(shù)都在內(nèi)存中,須用不同的方法求出操作數(shù)的從第三種開始,指令的操作數(shù)都在內(nèi)存中,須用不同的方法求出操作數(shù)的物理地址,來獲得操作數(shù)。物理地址,來獲得操作數(shù)。電氣學(xué)院學(xué)習(xí)部資料庫6二、寄存器尋址電氣學(xué)院學(xué)習(xí)部資料庫5v三、直接尋址三、直接尋址 指令中直接給出操作數(shù)的有效地址指令中直接給出操作數(shù)的有效地址EAEA,操作數(shù)在內(nèi)存中,操作數(shù)在內(nèi)存中,需執(zhí)行總線周期需執(zhí)行總線周期

6、有效地址有效地址EAEA:操作數(shù)的偏移地址:操作數(shù)的偏移地址 物理地址物理地址=段地址段地址*16+EA16+EA默認(rèn)段地址為默認(rèn)段地址為DSDS,指令中有效地址,指令中有效地址EAEA加加 ,以區(qū)別于立,以區(qū)別于立即數(shù)。即數(shù)。*加上加上 ,表示里面的內(nèi)容是內(nèi)存中偏移地址,表示里面的內(nèi)容是內(nèi)存中偏移地址 例例1 1:MOV ALMOV AL,1064H 1064H;若(;若(DSDS)=1000H=1000H,則,則(11064H11064H)ALAL 例例2:2:MOV AXMOV AX,1064H 1064H;(;(11064H11064H)ALAL,(11065H11065H)AHAH

7、若(若(11064H11064H)=00H=00H,(,(11065H11065H)=12H=12H,(,(AXAX)=1200H=1200H 電氣學(xué)院學(xué)習(xí)部資料庫7三、直接尋址電氣學(xué)院學(xué)習(xí)部資料庫6 一個字在存儲體中相鄰的兩個字節(jié)存放,字單元的地址以一個字在存儲體中相鄰的兩個字節(jié)存放,字單元的地址以低位地址表示,存入時以低位字節(jié)在低地址,高位字節(jié)在低位地址表示,存入時以低位字節(jié)在低地址,高位字節(jié)在高地址高地址段超越前綴段超越前綴:若段地址為若段地址為CSCS、SSSS、ESES,應(yīng)在指令中指定段超越,應(yīng)在指令中指定段超越前綴前綴 例:例:MOV AXMOV AX,ESES:1064H1064

8、H;將;將ESES段中段中1064H1064H的內(nèi)容的內(nèi)容AXAX ES ES:MOV AXMOV AX,1064H 1064H 符號地址符號地址(給存儲單元起一名字,變量名)(給存儲單元起一名字,變量名)例:例:MOV AXMOV AX,AREA1AREA1;從符號地址為從符號地址為AREA1AREA1的存儲單元中取的存儲單元中取一個字一個字 AXAX 符號地址也允許段超越符號地址也允許段超越電氣學(xué)院學(xué)習(xí)部資料庫8電氣學(xué)院學(xué)習(xí)部資料庫7v四、寄存器間接尋址四、寄存器間接尋址 指令中通過寄存器給出有效地址指令中通過寄存器給出有效地址EA EA,寄存器中為地址,操,寄存器中為地址,操作數(shù)在內(nèi)存中

9、,需執(zhí)行總線周期作數(shù)在內(nèi)存中,需執(zhí)行總線周期可以用于寄存器間接尋址的寄存器有:可以用于寄存器間接尋址的寄存器有:SISI、DIDI,BXBX、BPBP 變址寄存器變址寄存器 基址寄存器基址寄存器 寄存器名稱外面必須加寄存器名稱外面必須加 (SISI)EA=EA=(DIDI)DSDS(默認(rèn))(默認(rèn))(BXBX)(BPBP):):SSSS物理地址物理地址=段地址段地址*16+EA16+EA 電氣學(xué)院學(xué)習(xí)部資料庫9四、寄存器間接尋址電氣學(xué)院學(xué)習(xí)部資料庫8 例:例:MOV BX,SI;MOV BX,SI;若(若(DSDS)=1000H=1000H,(,(SISI)=2000H=2000H,(12000

10、H12000H)=318BH=318BH。則(。則(BHBH)=31H=31H,(,(BLBL)=8BH=8BH 也可以通過指定超越前綴,改變段基地址也可以通過指定超越前綴,改變段基地址 例:例:MOV BXMOV BX,DS:BPDS:BP ;(DS:BPDS:BP)BL BL,(DS:BP+1(DS:BP+1)BH BH 電氣學(xué)院學(xué)習(xí)部資料庫10 例:MOV BX,SI;若(DS)=1009v五、寄存器相對尋址五、寄存器相對尋址 通過基址或變址寄存器的內(nèi)容與指令中指定的通過基址或變址寄存器的內(nèi)容與指令中指定的8 8位或位或1616位位移量(位位移量(Displacement)Displac

11、ement)給出給出EAEA,操作數(shù)在內(nèi)存中,需,操作數(shù)在內(nèi)存中,需執(zhí)行總線周期執(zhí)行總線周期 (SISI)8 8位位 EA=EA=(DIDI)DS+dispDS+disp (BXBX)1616位位 (BPBP):):SSSS 物理地址物理地址=段地址段地址*16+EA16+EA 例:例:MOV AXMOV AX,BX+1000HBX+1000H;(;(DS:BX+1000HDS:BX+1000H)ALAL,(DS:DS:BX+1001HBX+1001H)AHAH MOV AX MOV AX,1000HBX1000HBX也可以通過指定超越前綴,改變段基地址也可以通過指定超越前綴,改變段基地址 例

12、:例:MOV AXMOV AX,ES:1000HBXES:1000HBX電氣學(xué)院學(xué)習(xí)部資料庫11五、寄存器相對尋址電氣學(xué)院學(xué)習(xí)部資料庫10v六、基址加變址尋址六、基址加變址尋址 由一個基址由一個基址寄存器寄存器(BXBX或或BPBP)和一個變址)和一個變址寄存器寄存器(SISI或或DIDI)之和給出之和給出EAEA BX SI BX SI EA=+EA=+BP DI BP DI 物理地址物理地址=段地址段地址*16+EA16+EA 默認(rèn)的段地址:只需出現(xiàn)默認(rèn)的段地址:只需出現(xiàn)BPBP,即為,即為SSSS,其余為,其余為DSDS例:例:MOV AXMOV AX,BX+SIBX+SI;(;(DSD

13、S:BX+SIBX+SI)ALAL,(,(DSDS:BX+SI+1BX+SI+1)AHAH MOV AX MOV AX,BXSIBXSI MOV AX MOV AX,SI+BPSI+BP;(;(SSSS:SI+BPSI+BP)ALAL,(,(SSSS:SI+BP+1SI+BP+1)AHAH MOV AX MOV AX,BP+SIBP+SI例:例:MOV AXMOV AX,BX+BP BX+BP;錯誤,;錯誤,BXBX、BPBP均為基址寄存器均為基址寄存器電氣學(xué)院學(xué)習(xí)部資料庫12六、基址加變址尋址電氣學(xué)院學(xué)習(xí)部資料庫11v七、相對基址加變址尋址七、相對基址加變址尋址 由一個基址由一個基址寄存器寄

14、存器和一個變址和一個變址寄存器寄存器的內(nèi)容,再加上一個的內(nèi)容,再加上一個位移量,三者之和確定位移量,三者之和確定EAEA BX SI 8 BX SI 8位位 EA=+disp EA=+disp BP DI 16 BP DI 16位位例:例:MOV AXMOV AX,BX+SI+1000HBX+SI+1000H ;(;(DSDS:EAEA)ALAL,(,(DSDS:EA+1EA+1)AHAH MOV AX MOV AX,1000H BXSI1000H BXSI若若 DS=2000HDS=2000H,BX=1500HBX=1500H,SI=0300HSI=0300H,disp=1000Hdisp=

15、1000H,(22800H)=26BFH(22800H)=26BFH則則 EA=1500H+0300H+1000H=2800HEA=1500H+0300H+1000H=2800H,物理地址物理地址=20000=20000H+2800H=22800HH+2800H=22800H,AX=26BFH AX=26BFH電氣學(xué)院學(xué)習(xí)部資料庫13七、相對基址加變址尋址電氣學(xué)院學(xué)習(xí)部資料庫12v 八、其它八、其它 隱含尋址隱含尋址 例:例:DAADAA、AAAAAA、AASAAS、DASDAS、AAMAAM、AADAAD I/O I/O端口尋址端口尋址 例:例:IN ALIN AL,63H63H;OUT 8

16、5HOUT 85H,ALAL;MOV DXMOV DX,0FF4H0FF4H;OUT DXOUT DX,ALAL;電氣學(xué)院學(xué)習(xí)部資料庫14 八、其它電氣學(xué)院學(xué)習(xí)部資料庫13課堂練習(xí):舉例:指出下列指令中目的、源操作數(shù)各采用何種尋址方式舉例:指出下列指令中目的、源操作數(shù)各采用何種尋址方式 目的操作數(shù)目的操作數(shù) 源操作數(shù)源操作數(shù) MOV SIMOV SI,1000H 1000H ;MOV SI MOV SI,AL AL ;MOV 1000H MOV 1000H,AL AL ;MOV BP MOV BP,BX BX ;MOV BP MOV BP,BX BX ;MOV AX MOV AX,AREA1

17、AREA1 ;AND DL AND DL,BX+SI+20H BX+SI+20H;PUSH DS PUSH DS ;ADD AX ADD AX,BX+SI BX+SI ;SUB AX SUB AX,BX+1000H BX+1000H;IN AL,05H ;IN AL,05H ;R R尋址尋址 立即數(shù)尋址立即數(shù)尋址 R R間接尋址間接尋址 R R尋址尋址 直接尋址直接尋址 R R尋址尋址 R R尋址尋址 R R尋址尋址 R R尋址尋址 R R間接尋址間接尋址 R R尋址尋址 直接尋址直接尋址 R R尋址尋址 相對基址加變址相對基址加變址 R R尋址尋址 R R尋址尋址 基址加變址基址加變址 R

18、R尋址尋址 R R相對尋址相對尋址 R R尋址尋址 I/OI/O端口尋址端口尋址 電氣學(xué)院學(xué)習(xí)部資料庫15課堂練習(xí):R尋址 立即數(shù)尋址電氣學(xué)院143.2 80863.2 8086指令系統(tǒng)指令系統(tǒng)一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令1 1、通用數(shù)據(jù)傳送指令、通用數(shù)據(jù)傳送指令(1)MOV(1)MOV傳送指令傳送指令 格式:格式:MOV MOV 目的,源目的,源 功能:源操作數(shù)功能:源操作數(shù) 目的操作數(shù),可實現(xiàn)目的操作數(shù),可實現(xiàn)R R R R,R R M M,立即數(shù),立即數(shù) M M的傳送(參見圖的傳送(參見圖3-123-12)受影響的標(biāo)志位:無受影響的標(biāo)志位:無 例:例:MOV AXMOV AX,BX

19、BX ;BX BX AXAX,R R R R MOV AX MOV AX,1064H 1064H ;M M R R MOV 1064H MOV 1064H,AX AX ;R R M M MOV MOV WORD PTRWORD PTR1000H1000H,1000H1000H;立即數(shù);立即數(shù) M M電氣學(xué)院學(xué)習(xí)部資料庫163.2 8086指令系統(tǒng)一、數(shù)據(jù)傳送指令電氣學(xué)院學(xué)習(xí)部15注意:注意:v源操作數(shù)和目的操作數(shù)字長應(yīng)相同源操作數(shù)和目的操作數(shù)字長應(yīng)相同v立即數(shù)只能做源操作數(shù),且不能被直接送進(jìn)段寄存器立即數(shù)只能做源操作數(shù),且不能被直接送進(jìn)段寄存器vIPIP寄存器不能用作源操作數(shù),亦不能做目的操作

20、數(shù)寄存器不能用作源操作數(shù),亦不能做目的操作數(shù)vCSCS寄存器不能作目的操作數(shù)寄存器不能作目的操作數(shù)v不能在兩個內(nèi)存單元,或兩個段寄存器之間直接傳送數(shù)不能在兩個內(nèi)存單元,或兩個段寄存器之間直接傳送數(shù)據(jù)據(jù)v指令中至少要有一項操作數(shù)明確說明傳送的是字節(jié)還是指令中至少要有一項操作數(shù)明確說明傳送的是字節(jié)還是字字電氣學(xué)院學(xué)習(xí)部資料庫17注意:電氣學(xué)院學(xué)習(xí)部資料庫16DATA SEGMENTDATA SEGMENT AREA1 DB 14HAREA1 DB 14H,3BH3BH;變量名;變量名 助記符助記符 AREA2 DB 3 DUPAREA2 DB 3 DUP(0 0);重復(fù);重復(fù)3 3個個0 0存入存

21、入AREA2AREA2起始的儲存單元起始的儲存單元 ARRAY DW 3100HARRAY DW 3100H,01A6H01A6H STRING DB STRING DB GOODGOODDATA ENDSDATA ENDSDOOG01HA6H31H00H00H00H00H3BH14HARRAYARRAYSTRINGSTRINGAREA1AREA1AREA2AREA2DATADATA:0000H0000HDATADATA:0002H0002HDATADATA:0005H0005HD DATAATA:0009H0009H段定義符段定義符電氣學(xué)院學(xué)習(xí)部資料庫18DOOG01HA6H31H00H00

22、H017說明:說明:v1.1.SEGMENTSEGMENTENDS ENDS 段定義語句段定義語句 DATA DATA 數(shù)據(jù)段段名數(shù)據(jù)段段名v2.2.DBDB、DW DW 數(shù)據(jù)定義語句數(shù)據(jù)定義語句 作用作用:將操作數(shù)存入變量名指定的存儲單元將操作數(shù)存入變量名指定的存儲單元 格式格式1 1:變量名:變量名 偽操作符偽操作符(DBDB、DWDW)操作數(shù),操作數(shù),操作數(shù),操作數(shù),.格式格式2 2:變量名:變量名 偽操作符偽操作符(DBDB、DWDW)n DUPn DUP(操作數(shù),操作(操作數(shù),操作數(shù),數(shù),.)其中,其中,DB DB 用來定義字節(jié)變量,用來定義字節(jié)變量,DWDW用來定義字變量用來定義字

23、變量v3.3.AREA1AREA1:變量名,將此變量的助記符后的第一個字節(jié)的偏:變量名,將此變量的助記符后的第一個字節(jié)的偏移地址作為它的符號地址移地址作為它的符號地址例:例:STRING1 DB STRING1 DB OKOK STRING2 DW STRING2 DW OKOK 例:例:STRING2 DW STRING2 DW GOODGOOD;錯誤;錯誤OKKOSTRING1STRING1STRING2STRING2電氣學(xué)院學(xué)習(xí)部資料庫19說明:OKKOSTRING1STRING18(2)(2)堆棧、出棧指令堆棧、出棧指令 PUSHPUSH、POPPOP 格式:格式:PUSH PUSH

24、源源 POP POP 目的目的 功能:功能:PUSH PUSH 將源操作數(shù)壓到堆棧中,將源操作數(shù)壓到堆棧中,POPPOP將堆棧中數(shù)據(jù)彈出到將堆棧中數(shù)據(jù)彈出到目的操作數(shù)目的操作數(shù) 受影響的標(biāo)志位:無受影響的標(biāo)志位:無 說明:說明:v按按“字字”操作操作,源操作數(shù)可以是,源操作數(shù)可以是1616位通用寄存器,段寄存位通用寄存器,段寄存器或存儲器中的數(shù)據(jù)字器或存儲器中的數(shù)據(jù)字 PUSH PUSH:(:(SPSP)-2-2 SPSP,POPPOP:(:(SPSP)+2+2 SPSP 操作數(shù)不能是立即數(shù)操作數(shù)不能是立即數(shù) 例:例:PUSH 1000HPUSH 1000H;錯誤;錯誤v堆棧操作原則:堆棧操作

25、原則:先進(jìn)后出先進(jìn)后出v SPSP始終指向棧頂,且總是指向偶地址單元,其值可以從始終指向棧頂,且總是指向偶地址單元,其值可以從FFFEHFFFEH開始開始v POP POP指令中,指令中,CS CS 不能做目的操作數(shù),即不能做目的操作數(shù),即 PUSH CS PUSH CS 正確,正確,而而POP CS POP CS 錯誤錯誤電氣學(xué)院學(xué)習(xí)部資料庫20(2)堆棧、出棧指令 PUSH、POP電氣學(xué)院學(xué)習(xí)部資料19 PUSH AX PUSH AX PUSH BX PUSH BX .POP BX POP BX POP AX POP AXC000C000C000C000:0000H0000H0000H00

26、00HS SP P11H 00H 33H 22HC000C000C000C000:C0FEHC0FEHC0FEHC0FEHC000C000C000C000:C0FCHC0FCHC0FCHC0FCHC000C000C000C000:C100HC100HC100HC100HS SP PS SP P堆棧段末地址堆棧段末地址(棧底)(棧底)堆棧段首地址堆棧段首地址棧頂棧頂 例:已知指令執(zhí)行前(例:已知指令執(zhí)行前(SSSS)=C000H=C000H,(,(SPSP)=C100H=C100H,(AXAX)=1100H=1100H,(,(BXBX)=3322H=3322H;該指令執(zhí)行后(;該指令執(zhí)行后(SP

27、SP)=C0FEH=C0FEH;該指令執(zhí)行后(;該指令執(zhí)行后(SPSP)=C0FCH=C0FCH電氣學(xué)院學(xué)習(xí)部資料庫21C000:0000HSP11H 00H 33H 22H20堆棧初始化操作堆棧段起始地址堆棧段起始地址棧底及初始棧頂棧底及初始棧頂 地址地址 存儲單元存儲單元10200H10202H10204H10206H10208H1020AH1020CH10230H 00 11 SS 10 20SP初值初值 00 30電氣學(xué)院學(xué)習(xí)部資料庫22堆棧初始化操作堆棧段起始地址棧底及初始棧頂 地址 21入棧操作棧頂棧頂PUSH AX 12 34PUSH BX 1A B110200H10202H10

28、204H10206H10208H1022CH1022EH10230H 00 11 SS 10 20 SP 00 30棧棧底底00 2E00 30堆棧段堆棧段起始地起始地址址12 341A B100 2E00 2C電氣學(xué)院學(xué)習(xí)部資料庫23入棧操作棧頂PUSH AX 12 34棧底00 22出棧操作棧頂棧頂POP AXPOP BX10200H10202H10204H10206H10208H1022CH 1A B11022EH 12 3410230H 00 11 SS 10 20 SP 00 2C(棧底棧底)堆棧段堆棧段起始地起始地址址00 2E00 30 1A B1 12 34電氣學(xué)院學(xué)習(xí)部資料庫

29、24出棧操作棧頂POP AX(棧底)堆棧段起始地址00 23(3)3)交換指令交換指令 XCHGXCHG 格式:格式:XCHG XCHG 目的,源目的,源 功能:目的操作數(shù)與源操作數(shù)互換功能:目的操作數(shù)與源操作數(shù)互換 影響標(biāo)志位:無影響標(biāo)志位:無 例:例:XCHG ALXCHG AL,BLBL XCHG BX XCHG BX,DXDX XCHG AL XCHG AL,BXBX;錯誤;錯誤注意:注意:v CSCS、IP IP 不能做操作數(shù)不能做操作數(shù) 例:例:XCHG CSXCHG CS,AXAX;錯誤;錯誤 XCHG IPXCHG IP,BXBX;錯誤;錯誤v 不能直接交換兩個存儲單元不能直接

30、交換兩個存儲單元 例:例:XCHG 1000HXCHG 1000H,BXBX;錯誤;錯誤電氣學(xué)院學(xué)習(xí)部資料庫25(3)交換指令 XCHG電氣學(xué)院學(xué)習(xí)部資料庫24(4)(4)換碼指令換碼指令XLATXLAT 格式:格式:XLAT XLAT 轉(zhuǎn)換表轉(zhuǎn)換表 或或XLATXLAT 功能:將一個字節(jié)從一種代碼轉(zhuǎn)換為另一種代碼,結(jié)果自功能:將一個字節(jié)從一種代碼轉(zhuǎn)換為另一種代碼,結(jié)果自動送入動送入ALAL中中 影響標(biāo)志位:無影響標(biāo)志位:無 執(zhí)行以下操作:執(zhí)行以下操作:先建立一個表格(在先建立一個表格(在DSDS段中),將轉(zhuǎn)換表的起始偏移地址段中),將轉(zhuǎn)換表的起始偏移地址BXBX將表中某一項(所要查找的)與表

31、首地址之間的位移量將表中某一項(所要查找的)與表首地址之間的位移量 ALALXLATXLAT指令執(zhí)行時,指令執(zhí)行時,CPUCPU會將會將BXBX和和ALAL中的值相加,將得到的中的值相加,將得到的值作為地址,然后將此地址所對應(yīng)的單元中的值取到值作為地址,然后將此地址所對應(yīng)的單元中的值取到ALAL中中即:即:BX+AL BX+AL ALAL電氣學(xué)院學(xué)習(xí)部資料庫26(4)換碼指令XLAT電氣學(xué)院學(xué)習(xí)部資料庫25例:要求將例:要求將3 3從十進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的字型代碼從十進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的字型代碼ASC碼碼十進(jìn)制數(shù)十進(jìn)制數(shù)BCD碼碼字型代碼字型代碼30H00000B40H31H10001B79H32

32、H20010B24H33H30011B30H34H40100B19H35H50101B12H36H60110B02H37H70111B78H38H81000B00H39H91001B18H電氣學(xué)院學(xué)習(xí)部資料庫27例:要求將3從十進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的字型代碼ASC碼十進(jìn)26數(shù)據(jù)段中數(shù)據(jù)段中T1T1用于存儲字型代碼表格用于存儲字型代碼表格 T1 DB 40HT1 DB 40H,79H79H,24H24H,30H30H,19H19H DB 12H DB 12H,02H02H,78H78H,00H00H,18H 18H ;定義七段碼表格;定義七段碼表格 MOV BX MOV BX,OFFSET T1 O

33、FFSET T1 ;表格首地址;表格首地址BXBX,;(;(OFFSET OFFSET 變量或標(biāo)號)用于返回變量或標(biāo)號的偏移地址值變量或標(biāo)號)用于返回變量或標(biāo)號的偏移地址值 MOV ALMOV AL,3 3 ;數(shù)字;數(shù)字3 3的位移量的位移量 ALAL XLAT T1 XLAT T1 ;查表得(;查表得(ALAL)=30H=30H,T1T1也可不寫也可不寫電氣學(xué)院學(xué)習(xí)部資料庫28數(shù)據(jù)段中T1用于存儲字型代碼表格電氣學(xué)院學(xué)習(xí)部資料庫272 2、輸入、輸入/輸出指令:輸出指令:IN/OUTIN/OUT 格式:格式:ININ 目的,源目的,源 OUTOUT 功能:實現(xiàn)功能:實現(xiàn)AXAX,ALAL與與

34、I/O InterfaceI/O Interface間的數(shù)據(jù)傳遞間的數(shù)據(jù)傳遞 影響標(biāo)志位:無影響標(biāo)志位:無 例:例:IN ALIN AL,50H 50H;50H50H端口內(nèi)容端口內(nèi)容ALAL IN AX IN AX,50H 50H;50H50H端口內(nèi)容端口內(nèi)容ALAL,51H51H內(nèi)容內(nèi)容AHAH OUT 50HOUT 50H,AL AL;ALAL內(nèi)容內(nèi)容50H50H端口端口電氣學(xué)院學(xué)習(xí)部資料庫292、輸入/輸出指令:IN/OUT 電氣學(xué)院學(xué)習(xí)部資料庫28注意:注意:v 寄存器只能是累加器寄存器只能是累加器AXAX或或ALAL 例:例:IN BLIN BL,50H 50H ;錯誤;錯誤 IN

35、ALIN AL,50H50H MOV BL MOV BL,ALAL ;可實現(xiàn)(;可實現(xiàn)(50H50H)BLBLv如果端口地址如果端口地址0FFH0FFH(255255),只能用),只能用DXDX間接尋址間接尋址 即即 在在DXDX寄存器中設(shè)置好端口號寄存器中設(shè)置好端口號 例:例:IN ALIN AL,01FFH 01FFH ;錯誤錯誤 MOV DXMOV DX,01FFH01FFH IN AL IN AL,DX DX ;可實現(xiàn)(可實現(xiàn)(01FFH01FFH)ALAL電氣學(xué)院學(xué)習(xí)部資料庫30注意:電氣學(xué)院學(xué)習(xí)部資料庫293 3、地址傳送指令地址傳送指令(1)LEA (1)LEA 取有效地址指令取

36、有效地址指令格式:格式:LEA LEA 目的,源目的,源功能:將功能:將存儲器中源存儲器中源操作數(shù)地址的偏移量送到一個操作數(shù)地址的偏移量送到一個1616位寄存位寄存器(除器(除CSCS以外)以外)影響標(biāo)志位:無影響標(biāo)志位:無例:例:LEA AXLEA AX,2728H 2728H ;(;(AXAX)=2728H=2728H 比較比較 MOV AXMOV AX,2728H 2728H ;(;(DSDS:2728H2728H)AXAX LEA BXLEA BX,TABLETABLE 等效等效 MOV BXMOV BX,OFFSET TABLEOFFSET TABLE注意:注意:LEALEA指令和指

37、令和MOVMOV指令的區(qū)別指令的區(qū)別例:例:MOV BXMOV BX,OFFSET 2728HOFFSET 2728H;錯誤;錯誤 電氣學(xué)院學(xué)習(xí)部資料庫313、地址傳送指令電氣學(xué)院學(xué)習(xí)部資料庫30(2)LDS(2)LDS 將雙字指針?biāo)偷郊拇嫫骱蛯㈦p字指針?biāo)偷郊拇嫫骱虳SDS指令指令格式:格式:LDS LDS 目的,源目的,源功能:從源操作數(shù)指定的存儲單元中,取出功能:從源操作數(shù)指定的存儲單元中,取出4 4字節(jié)內(nèi)容,前字節(jié)內(nèi)容,前2 2字節(jié)字節(jié)目的(多用目的(多用SISI),后),后2 2個字節(jié)個字節(jié)DSDS例:已知例:已知DS=1200HDS=1200H,(,(12450H12450H)=F3

38、46H=F346H,(,(12452H12452H)=0A90H=0A90H LDS SI LDS SI,0450H0450H;執(zhí)行后,(執(zhí)行后,(SISI)=F346H=F346H,(,(DSDS)=0A90H=0A90H(3)LES (3)LES 將雙字指針?biāo)偷郊拇嫫骱蛯㈦p字指針?biāo)偷郊拇嫫骱虴SES指令指令格式:格式:LES LES 目的,源目的,源功能:從源操作數(shù)指定的存儲單元中,取出功能:從源操作數(shù)指定的存儲單元中,取出4 4字節(jié)內(nèi)容,前字節(jié)內(nèi)容,前2 2字節(jié)字節(jié)目的(多用目的(多用DIDI),后),后2 2字節(jié)字節(jié)ESES例:已知例:已知DS=1200HDS=1200H,(,(124

39、50H12450H)=F346H=F346H,(,(12452H12452H)=0A90H=0A90H LES DI LES DI,0450H0450H;執(zhí)行后,(執(zhí)行后,(DIDI)=F346H=F346H,(,(ESES)=0A90H=0A90H電氣學(xué)院學(xué)習(xí)部資料庫32(2)LDS 將雙字指針?biāo)偷郊拇嫫骱虳S指令電氣學(xué)院學(xué)31SFZFAFPFCF4、標(biāo)志傳送指令(1)(1)LAHF LAHF 標(biāo)志送到標(biāo)志送到AHAH指令指令 格式:格式:LAHF LAHF 功能:把功能:把PSWPSW低低8 8位取到位取到AHAH中中 影響標(biāo)志位:無影響標(biāo)志位:無(2)(2)SAHF AHSAHF AH送

40、標(biāo)志寄存器指令送標(biāo)志寄存器指令 格式:格式:SAHFSAHF 功能:為功能:為LAHFLAHF的反操作,即將的反操作,即將AHAH的內(nèi)容存入的內(nèi)容存入PSWPSW低低8 8位位 影響標(biāo)志位:影響標(biāo)志位:SFSF、ZFZF、AFAF、PFPF、CFCF電氣學(xué)院學(xué)習(xí)部資料庫33SFZFAFPFCF4、標(biāo)志傳送指令電氣學(xué)院學(xué)習(xí)部32(3)(3)標(biāo)志入棧、出棧指令標(biāo)志入棧、出棧指令 PUSHFPUSHF、POPFPOPF 格式:格式:PUSHF PUSHF、POPFPOPF 功能:功能:PUSHFPUSHF:PSWPSW內(nèi)容入棧,內(nèi)容入棧,SP-2 SP-2 SP SP POPF POPF:棧頂內(nèi)容棧

41、頂內(nèi)容彈到彈到PSW PSW,SP+2 SP+2 SPSP (當(dāng)前堆棧指針?biāo)傅囊粋€字)(當(dāng)前堆棧指針?biāo)傅囊粋€字)用途:用途:v 成對使用,常用于子程序調(diào)用和中斷服務(wù)子程序的開成對使用,常用于子程序調(diào)用和中斷服務(wù)子程序的開頭和結(jié)尾,對頭和結(jié)尾,對PSWPSW保護(hù)和恢復(fù)保護(hù)和恢復(fù)v 用于修改用于修改TFTF電氣學(xué)院學(xué)習(xí)部資料庫34(3)標(biāo)志入棧、出棧指令 PUSHF、POPF電氣33二、算術(shù)運(yùn)算指令 (都影響標(biāo)志位)(都影響標(biāo)志位)1 1、加法指令、加法指令(1)(1)ADD ADCADD ADC格式:格式:ADD ADD 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) ADC ADC功能:功能:A

42、DDADD:源:源+目的目的 目的目的 ADCADC:源:源+目的目的+CF CF 目的目的注意:注意:v目的操作數(shù)和源操作數(shù)不能同時為存儲器目的操作數(shù)和源操作數(shù)不能同時為存儲器v目的操作數(shù)和源操作數(shù)類型必須一致,同為目的操作數(shù)和源操作數(shù)類型必須一致,同為字字或或字字節(jié)節(jié)例例1 1:ADD AXADD AX,1000H1000H;(;(AXAX)+1000H+1000H AX AX ADD AL ADD AL,12H12H ADC AL ADC AL,0AH0AH電氣學(xué)院學(xué)習(xí)部資料庫35二、算術(shù)運(yùn)算指令 (都影響標(biāo)志位)電氣學(xué)院學(xué)習(xí)部資料庫34例例2 2:假設(shè)一個四字節(jié)數(shù):假設(shè)一個四字節(jié)數(shù)12

43、346678H12346678H存于起始地址存于起始地址0100H0100H中,一中,一個二字節(jié)數(shù)個二字節(jié)數(shù)A567HA567H存于存于0200H0200H中,要求進(jìn)行兩數(shù)求和,并把中,要求進(jìn)行兩數(shù)求和,并把結(jié)果存放于結(jié)果存放于0300H0300H起始地址的內(nèi)存中起始地址的內(nèi)存中 MOV SIMOV SI,0100H 0100H ;把四字節(jié)數(shù)首地址;把四字節(jié)數(shù)首地址 SISI MOV BX MOV BX,0300H 0300H ;存放求和結(jié)果內(nèi)存單元首地址;存放求和結(jié)果內(nèi)存單元首地址 BXBX MOV AX MOV AX,SI SI ;把四字節(jié)數(shù)低;把四字節(jié)數(shù)低1616位位 AX AX ADD

44、 AX ADD AX,0200H 0200H ;二字節(jié)數(shù);二字節(jié)數(shù) +四字節(jié)數(shù)低四字節(jié)數(shù)低1616位位 MOV BX MOV BX,AX AX ;(;(AXAX)BXBX MOV AX MOV AX,SI+2 SI+2 ;高;高1616位位 AXAX ADC AX ADC AX,0000H 0000H ;(;(AXAX)+0000H+CF+0000H+CF AX AX MOV BX+2 MOV BX+2,AXAX 電氣學(xué)院學(xué)習(xí)部資料庫36例2:假設(shè)一個四字節(jié)數(shù)12346678H存于起始地址035(2)(2)增量指令增量指令I(lǐng)NCINC格式:格式:INC INC 目的操作數(shù)目的操作數(shù)功能:目的功

45、能:目的+1+1 目的目的例例1 1:INC AL INC AL ;(;(ALAL)+1+1 AL AL INC AX INC AX ;(;(AXAX)+1+1 AX AX注意:注意:v執(zhí)行后影響執(zhí)行后影響AFAF、OFOF、PFPF、SFSF、ZFZF,但不影響,但不影響CFCF例例2 2:INC AXINC AX;若;若AX=FFFFHAX=FFFFH,按正常情況,加,按正常情況,加1 1后,后,CF=1CF=1,按此規(guī)定不影響,按此規(guī)定不影響CFCFv 由于該指令只有一個操作數(shù),如果操作數(shù)是內(nèi)存單元,則由于該指令只有一個操作數(shù),如果操作數(shù)是內(nèi)存單元,則必須用偽指令進(jìn)行類型說明必須用偽指令

46、進(jìn)行類型說明 偽指令格式:類型偽指令格式:類型 PTRPTR(類型說明符)(類型說明符)變量或地址表達(dá)式變量或地址表達(dá)式例例3 3:INC BYTE PTR BX+DI+500HINC BYTE PTR BX+DI+500H WORD PTR WORD PTR PWORD PTR PWORD PTR(定義一個四字節(jié)的內(nèi)存空間存儲一個數(shù))(定義一個四字節(jié)的內(nèi)存空間存儲一個數(shù))電氣學(xué)院學(xué)習(xí)部資料庫37(2)增量指令I(lǐng)NC電氣學(xué)院學(xué)習(xí)部資料庫362 2、減法指令、減法指令(1)(1)SUBSUB,SBBSBB格式:格式:SUB SUB 目的,源目的,源 SBB SBB功能:功能:SUBSUB:目的:

47、目的-源源目的目的 SBBSBB:目的:目的-源源-CFCF 目的目的 例:例:SUB AXSUB AX,2000H2000H SUB AL SUB AL,0ABH0ABH SBB AX SBB AX,2030H 2030H SBB WORD PTR DI+2 SBB WORD PTR DI+2,1000H1000H(2)(2)減量指令減量指令DECDEC格式:格式:DEC DEC 目的目的功能:目的功能:目的-1-1 目的,為目的,為INC INC 的反操作的反操作影響標(biāo)志位,但不影響影響標(biāo)志位,但不影響CFCF 例:例:DEC AXDEC AX DEC BYTE PTR BX DEC BY

48、TE PTR BX電氣學(xué)院學(xué)習(xí)部資料庫382、減法指令電氣學(xué)院學(xué)習(xí)部資料庫37(3)(3)求補(bǔ)指令求補(bǔ)指令NEGNEG 格式:格式:NEG NEG 目的目的 功能:對目的操作數(shù)求補(bǔ)功能:對目的操作數(shù)求補(bǔ)目的(目的(0-0-目的目的目的目的)例:若(例:若(AXAX)=1234H=1234H,NEG AX NEG AX ;執(zhí)行后,(;執(zhí)行后,(AXAX)=EDCCH=EDCCH,CF=1CF=1 只有當(dāng)目的操作數(shù)為只有當(dāng)目的操作數(shù)為0 0,CF=0CF=0(4)(4)比較指令比較指令 CMPCMP 格式:格式:CMP CMP 目的,源目的,源 功能:目的功能:目的-源,源,只進(jìn)行比較,不破壞兩個

49、操作數(shù)只進(jìn)行比較,不破壞兩個操作數(shù) 影響標(biāo)志位:影響標(biāo)志位:ZFZF、CFCF、SFSF、OFOF、PFPF、AFAFva a、目的、目的=源源 ,ZF=1ZF=1vb b、若目的、若目的源源 無符號數(shù)無符號數(shù) CF=0 CF=0 目的目的 源源 CF=1 CF=1 目的目的 源源 SF SF OF=1OF=1(即(即SFSF、OFOF不同)不同)目的目的 99或半進(jìn)位標(biāo)志或半進(jìn)位標(biāo)志AF=1AF=1,則則ALAL AL+6 AL+6調(diào)整高半字節(jié):上步調(diào)整后,若調(diào)整高半字節(jié):上步調(diào)整后,若ALAL中高中高4 4位位99或或CF=1CF=1,則則ALALAL+60HAL+60H,并使,并使CF=

50、1CF=1,否則,否則CF=0CF=0AAAAAA調(diào)整規(guī)則:調(diào)整規(guī)則:若若ALAL中低四位中低四位99或或AF=1AF=1 AL+6 AL+6 AL AL用與操作(用與操作()將)將ALAL高高4 4位清位清0 0AF=1AF=1,CF=1CF=1,AH+1 AH+1 AH AH電氣學(xué)院學(xué)習(xí)部資料庫45DAA調(diào)整規(guī)則:電氣學(xué)院學(xué)習(xí)部資料庫44例:編一段程序?qū)崿F(xiàn)組合例:編一段程序?qū)崿F(xiàn)組合BCDBCD相加指令,結(jié)果送入相加指令,結(jié)果送入BXBX 1945 1271 3216程序:程序:45+71組合組合BCD碼調(diào)整碼調(diào)整結(jié)果送結(jié)果送BL取取1945高高8位位高高8位位 19+12+CF 組合組合B

51、CD碼調(diào)整碼調(diào)整結(jié)果送結(jié)果送BH取取1945低低8位位電氣學(xué)院學(xué)習(xí)部資料庫46例:編一段程序?qū)崿F(xiàn)組合BCD相加指令,結(jié)果送入BX 445MOV ALMOV AL,45H 0100 0101 45H45H 0100 0101 45HADD ALADD AL,71H71H;(;(ALAL)=0B6H AF=0 CF=0 +0111 0001 71H=0B6H AF=0 CF=0 +0111 0001 71HDAA DAA ;(;(ALAL)=16H=16H,CF=1 1011 0110 CF=1 1011 0110 MOV BLMOV BL,AL +0110 AL +0110 調(diào)整調(diào)整MOV AL

52、MOV AL,19H 1,0001 0110 19H 1,0001 0110(BLBL)=16H=16HADADC C AL AL,12H12H;(;(ALAL)=2CH=2CH AF=0AF=0 CF=0 CF=0 DAA DAA ;(;(ALAL)=32H=32H,CF=0CF=0MOV BHMOV BH,AL AL ;(;(BXBX)=3216H=3216H 0001 1001 19H 0001 1001 19H 0001 0010 12H 0001 0010 12H +1 CF +1 CF 0010 1100 0010 1100 +0110 +0110 調(diào)整調(diào)整 0011 0010 0

53、011 0010 (BHBH)=32H=32H電氣學(xué)院學(xué)習(xí)部資料庫47MOV AL,45H 46減法的十進(jìn)制調(diào)整指令減法的十進(jìn)制調(diào)整指令 DASDAS:用于調(diào)整組合:用于調(diào)整組合BCDBCD碼碼 AASAAS:用于調(diào)整非組合:用于調(diào)整非組合BCDBCD碼碼乘法的十進(jìn)制調(diào)整指令乘法的十進(jìn)制調(diào)整指令 AAM AAM:用于調(diào)整:用于調(diào)整非壓縮非壓縮十進(jìn)制數(shù)十進(jìn)制數(shù)除法的十進(jìn)制調(diào)整指令除法的十進(jìn)制調(diào)整指令 AADAAD:用于調(diào)整:用于調(diào)整非壓縮非壓縮十進(jìn)制數(shù),在除法指令之前,把非壓十進(jìn)制數(shù),在除法指令之前,把非壓縮縮BCDBCD數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)80868086中乘除運(yùn)算不允許采用壓縮中

54、乘除運(yùn)算不允許采用壓縮BCDBCD數(shù),必須先化為非壓縮數(shù),必須先化為非壓縮BCDBCD數(shù)數(shù)電氣學(xué)院學(xué)習(xí)部資料庫48減法的十進(jìn)制調(diào)整指令電氣學(xué)院學(xué)習(xí)部資料庫47三、串操作指令三、串操作指令1 1、字符串傳送指令、字符串傳送指令 MOVSB/MOVSWMOVSB/MOVSWv格式:格式:REP MOVSBREP MOVSB MOVSW MOVSWv功能:把功能:把DSDS:SISI指出的源串指出的源串 ESES:DIDI指出的目的串中,指出的目的串中,且自動修改指針且自動修改指針SISI、DIDIv不影響標(biāo)志位不影響標(biāo)志位DF=0DF=1字節(jié)操作字節(jié)操作+1-1字操作字操作+2-2電氣學(xué)院學(xué)習(xí)部資

55、料庫49三、串操作指令DF=0DF=1字節(jié)操作+1-1字操作+248例:編一段程序,實現(xiàn)把起始地址為例:編一段程序,實現(xiàn)把起始地址為1000H1000H,長度為,長度為100100個字個字節(jié)的數(shù)據(jù)送到起始地址為節(jié)的數(shù)據(jù)送到起始地址為2000H2000H的存儲單元中的存儲單元中 MOV SI MOV SI,1000H1000H MOV DI MOV DI,2000H2000H MOV CX MOV CX,100 100 ;CXCX作串長度計數(shù)器,作串長度計數(shù)器,只能用只能用CXCX CLDCLD ;DF=0DF=0,地址增量(存儲數(shù)據(jù)存儲器地址方向增加,地址增量(存儲數(shù)據(jù)存儲器地址方向增加)RE

56、P MOVSB REP MOVSB ;DSDS:SI ESSI ES:DIDI SI+1 SI SI+1 SI,DI+1 DIDI+1 DI CX-1 CX-1 CX CX (當(dāng)有加前綴(當(dāng)有加前綴REPREP時執(zhí)行,重復(fù)傳送串中的字節(jié),直到時執(zhí)行,重復(fù)傳送串中的字節(jié),直到CX=0CX=0為為止止 )電氣學(xué)院學(xué)習(xí)部資料庫50例:編一段程序,實現(xiàn)把起始地址為1000H,長度為100492 2、字符串比較指令、字符串比較指令 CMPSB/CMPSWCMPSB/CMPSWv格式:格式:REPZREPZREPNZ CMPSBREPNZ CMPSB CMPSW CMPSWv功能:把功能:把DSDS:SI

57、SI與與ESES:DIDI指出的字符串進(jìn)行比較,且自動指出的字符串進(jìn)行比較,且自動修改指針修改指針SISI、DIDIv影響標(biāo)志位:影響標(biāo)志位:ZFZF、CFCF、OFOF、SFSFv比較指令,退出循環(huán),有兩個可能比較指令,退出循環(huán),有兩個可能 不滿足循環(huán)條件不滿足循環(huán)條件 計數(shù)器計數(shù)器CX=0CX=0 REPZ REPZ :ZF=1&CX0ZF=1&CX0 循環(huán)條件循環(huán)條件 REPNZ REPNZ:ZF=0&CX0ZF=0&CX0電氣學(xué)院學(xué)習(xí)部資料庫512、字符串比較指令 CMPSB/CMPSW電氣學(xué)院學(xué)習(xí)50例:編程,從兩個字符串中找出第一個不相同的字符例:編程,從兩個字符串中找出第一個不相

58、同的字符 STRING1 DB STRING1 DB ABCDEFABCDEF STRING2 DB STRING2 DB ABCDKFABCDKF ;定義兩個字符串;定義兩個字符串 MOV SI MOV SI,OFFSET STRING1 OFFSET STRING1;等效;等效 LEA SILEA SI,STRING1STRING1 MOV DI MOV DI,OFFSET STRING2OFFSET STRING2 MOV CX MOV CX,6 6 CLD CLD REPZREPZ CMPSB CMPSB ;循環(huán)條件;循環(huán)條件ZF=1ZF=1,若,若ZF=0ZF=0退出循環(huán),找到退出循

59、環(huán),找到第一個不相同的字符第一個不相同的字符 電氣學(xué)院學(xué)習(xí)部資料庫52例:編程,從兩個字符串中找出第一個不相同的字符電氣學(xué)院學(xué)51例:編程:比較兩個字符串,第一個是你在程序中例:編程:比較兩個字符串,第一個是你在程序中設(shè)定的口令串,第二個是從鍵盤輸入的字符串設(shè)定的口令串,第二個是從鍵盤輸入的字符串IN_WORDIN_WORD,若兩者相同,程序?qū)㈤_始執(zhí)行,否則,若兩者相同,程序?qū)㈤_始執(zhí)行,否則驅(qū)動驅(qū)動PCPC機(jī)的揚(yáng)聲器發(fā)聲警告,并拒絕往下執(zhí)行。機(jī)的揚(yáng)聲器發(fā)聲警告,并拒絕往下執(zhí)行。DATA SEGMENTDATA SEGMENTPASSWORD DB 750430LIPASSWORD DB 750

60、430LIIN_WORD DB 7504IN_WORD DB 75042424L LE ECOUNT EQU 8COUNT EQU 8DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENTASSUME DS:DATA,ES:DATAASSUME DS:DATA,ES:DATA MOV SI MOV SI,OFFSET PASSWORD OFFSET PASSWORD;等效;等效 LEA SILEA SI,PASSWORD PASSWORD MOV DI MOV DI,OFFSET IN_WORD OFFSET IN_WORD MOV CX,COUNT MOV CX

61、,COUNT CLD CLD REPZ CMPSB REPZ CMPSB ;循環(huán)條件;循環(huán)條件ZF=1JZF=1J及及 CX0 CX0。若。若ZF=0ZF=0,退出循環(huán),退出循環(huán) JNE SOUNDJNE SOUND ;若不相等,轉(zhuǎn)發(fā)聲程序;若不相等,轉(zhuǎn)發(fā)聲程序OKOK:;比完且相等,往下執(zhí)行;比完且相等,往下執(zhí)行SOUNDSOUND:CODE ENDSCODE ENDSPASSWORDSIPASSWORDSIIN_WORDDIIN_WORDDI計數(shù)值計數(shù)值CXCX(SI)=(DI)?SI+1SIDI+1DI CX-1CXCX=0?字符串相字符串相等?等?ZF=1?SOUNDOKNYYNYN電

62、氣學(xué)院學(xué)習(xí)部資料庫53例:編程:比較兩個字符串,第一個是你在程序中設(shè)定的口令串523 3、字符串檢索指令、字符串檢索指令 SCASBSCASBSCASWSCASWv格式:格式:REPZREPZREPNZ SCASBREPNZ SCASB SCASW SCASWv功能:從功能:從ESES:DIDI字符串中查找與字符串中查找與ALAL、AXAX不同或相同的不同或相同的字符;同時自動修改字符;同時自動修改DIDIv影響標(biāo)志位影響標(biāo)志位自學(xué)例自學(xué)例3 37777電氣學(xué)院學(xué)習(xí)部資料庫543、字符串檢索指令 SCASBSCASW電氣學(xué)院學(xué)習(xí)部53例:編程,實現(xiàn)某一數(shù)由格例:編程,實現(xiàn)某一數(shù)由格雷碼轉(zhuǎn)換為雷

63、碼轉(zhuǎn)換為ASCASC碼碼假設(shè):假設(shè):ASCASC碼存于表碼存于表T1T1中,中,格雷碼存于表格雷碼存于表T2T2中,中,ALAL中中為需要轉(zhuǎn)換的數(shù)的格雷碼為需要轉(zhuǎn)換的數(shù)的格雷碼格雷碼格雷碼ASC碼碼0000030H1000131H2001132H3001033H4011034H5011135H6010136H7010037H8110038H9110139H電氣學(xué)院學(xué)習(xí)部資料庫55例:編程,實現(xiàn)某一數(shù)由格雷碼轉(zhuǎn)換為ASC碼格雷碼ASC54取表取表T1T1首地址到首地址到BX BX*確定需轉(zhuǎn)換的格雷碼某數(shù)相對于表確定需轉(zhuǎn)換的格雷碼某數(shù)相對于表T1T1首首地址的偏移量地址的偏移量 ALAL(采用(采

64、用SCASBSCASB指令指令)執(zhí)行執(zhí)行XLATXLAT指令指令 格雷碼的表首地址入格雷碼的表首地址入DIDI 確定檢索字符個數(shù)(循環(huán)次數(shù))確定檢索字符個數(shù)(循環(huán)次數(shù))設(shè)定地址為增量設(shè)定地址為增量 字符串檢索,并求出轉(zhuǎn)換數(shù)的偏移量字符串檢索,并求出轉(zhuǎn)換數(shù)的偏移量 電氣學(xué)院學(xué)習(xí)部資料庫56取表T1首地址到BX*確定需轉(zhuǎn)換的格雷碼某數(shù)相對于表T55T1 DB 30HT1 DB 30H,31H31H,32H32H,33H33H,34H34H,35H35H,36H36H,37H37H,38H38H,39H39HT2 DB 00HT2 DB 00H,01H01H,03H03H,02H02H,06H06H

65、,07H07H,05H05H,04H04H,0CH0CH,0DH0DHMOV BXMOV BX,offset T1offset T1MOV DI,offset T2 ;MOV DI,offset T2 ;表表T2T2首地址首地址DIDIMOV CXMOV CX,0AH 0AH ;確定檢索字符個數(shù);確定檢索字符個數(shù)CLD CLD ;DF=0DF=0,地址增量,地址增量 REPNZ SCASB REPNZ SCASB ;不相等,循環(huán);相等則退出。;不相等,循環(huán);相等則退出。MOV AXMOV AX,DIDIMOV DIMOV DI,offset T2offset T2SUB AXSUB AX,DI

66、 DI ;(;(ALAL)=偏移量偏移量XLAT T1XLAT T1電氣學(xué)院學(xué)習(xí)部資料庫57T1 DB 30H,31H,32H,33H,34H,564 4、取字符串指令、取字符串指令 LODSBLODSBLODSWLODSWv格式:格式:LODSBLODSBLODSWLODSWv功能:把功能:把DSDS:SISI指出的字符串取到指出的字符串取到AL AL 或或AXAX,同時修改,同時修改SISIv不影響標(biāo)志位,該指令無重復(fù)前綴不影響標(biāo)志位,該指令無重復(fù)前綴例:編程實現(xiàn)將例:編程實現(xiàn)將0700H0700H開始開始5 5個字節(jié)內(nèi)容逐一取出,經(jīng)過一定處個字節(jié)內(nèi)容逐一取出,經(jīng)過一定處理,結(jié)果回送理,結(jié)果回送 MOV SIMOV SI,0700H0700H MOV CX MOV CX,5 5 CLD CLDLILI:LODSB LODSB ;DSDS:SI ALSI AL,(,(SI+1SI+1)SISI DEC CXDEC CX ;由于取字符串指令;由于取字符串指令LODSBLODSB無前綴無前綴Repeat,Repeat,所以必須手動設(shè)置所以必須手動設(shè)置-1-1 MOV MOV SISI1

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!