指令系統(tǒng)轉(zhuǎn)移指令.ppt

上傳人:max****ui 文檔編號:14850830 上傳時間:2020-07-31 格式:PPT 頁數(shù):71 大?。?.38MB
收藏 版權(quán)申訴 舉報(bào) 下載
指令系統(tǒng)轉(zhuǎn)移指令.ppt_第1頁
第1頁 / 共71頁
指令系統(tǒng)轉(zhuǎn)移指令.ppt_第2頁
第2頁 / 共71頁
指令系統(tǒng)轉(zhuǎn)移指令.ppt_第3頁
第3頁 / 共71頁

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

14.9 積分

下載資源

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

資源描述:

《指令系統(tǒng)轉(zhuǎn)移指令.ppt》由會員分享,可在線閱讀,更多相關(guān)《指令系統(tǒng)轉(zhuǎn)移指令.ppt(71頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、控制轉(zhuǎn)移類指令,控制轉(zhuǎn)移類指令用于實(shí)現(xiàn)分支、循環(huán)、過程等程序結(jié)構(gòu),是僅次于傳送指令的常用指令 重點(diǎn)掌握: JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系統(tǒng)功能調(diào)用,控制轉(zhuǎn)移類指令通過改變IP(和CS)值,實(shí)現(xiàn)程序執(zhí)行順序的改變,目標(biāo)地址的尋址方式,相對尋址方式 指令代碼中提供目的地址相對于當(dāng)前IP的位移量,轉(zhuǎn)移到的目的地址(轉(zhuǎn)移后的IP值)就是當(dāng)前IP值加上位移量 直接尋址方式 指令代碼中提供目的邏輯地址,轉(zhuǎn)移后的CS和IP值直接來自指令操作碼后的目的地址操作數(shù) 間接尋址方式 指令代碼中指示寄存器或存儲單元,目的地址從寄存器或存儲單元中間接獲得,用標(biāo)號表達(dá),

2、用標(biāo)號表達(dá),用寄存器或存儲器操作數(shù)表達(dá),目標(biāo)地址的尋址范圍:段內(nèi)尋址,段內(nèi)轉(zhuǎn)移近轉(zhuǎn)移(near) 在當(dāng)前代碼段64KB范圍內(nèi)轉(zhuǎn)移( 32KB范圍) 不需要更改CS段地址,只要改變IP偏移地址 段內(nèi)轉(zhuǎn)移短轉(zhuǎn)移(short) 轉(zhuǎn)移范圍可以用一個字節(jié)表達(dá),在段內(nèi)128127范圍的轉(zhuǎn)移,目標(biāo)地址的尋址范圍:段間尋址,段間轉(zhuǎn)移遠(yuǎn)轉(zhuǎn)移(far) 從當(dāng)前代碼段跳轉(zhuǎn)到另一個代碼段,可以在1MB范圍 需要更改CS段地址和IP偏移地址 目標(biāo)地址必須用一個32位數(shù)表達(dá),叫做32位遠(yuǎn)指針,它就是邏輯地址,代碼段,,,代碼段,實(shí)際編程時,匯編程序會根據(jù)目標(biāo)地址的屬性,自動處理成短轉(zhuǎn)移、近轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移 程序員可用操作符s

3、hort、near ptr 或far ptr 強(qiáng)制成為需要的轉(zhuǎn)移類型,無條件轉(zhuǎn)移指令,只要執(zhí)行無條件轉(zhuǎn)移指令JMP,就使程序轉(zhuǎn)到指定的目標(biāo)地址,從目標(biāo)地址處開始執(zhí)行指令 操作數(shù)label是要轉(zhuǎn)移到的目標(biāo)地址(目的地址、轉(zhuǎn)移地址) JMP指令分成4種類型: 段內(nèi)轉(zhuǎn)移、相對尋址 段內(nèi)轉(zhuǎn)移、間接尋址 段間轉(zhuǎn)移、直接尋址 段間轉(zhuǎn)移、間接尋址,JMP label;程序轉(zhuǎn)向label標(biāo)號指定的地址,無條件轉(zhuǎn)移指令JMP(jump),JMP label;段內(nèi)轉(zhuǎn)移、相對尋址 ;IPIP位移量 JMP r16/m16;段內(nèi)轉(zhuǎn)移、間接尋址 ;IPr16/m16 JMP far ptr label;段間轉(zhuǎn)移、直接尋

4、址 ;IP偏移地址,CS段地址 JMP far ptr mem;段間轉(zhuǎn)移,間接尋址 ;IPmem,CSmem2,演示,演示,演示,演示,演示,條件轉(zhuǎn)移指令,條件轉(zhuǎn)移指令Jcc根據(jù)指定的條件確定程序是否發(fā)生轉(zhuǎn)移。其通用格式為: Jcc label;條件滿足,發(fā)生轉(zhuǎn)移 ;IPIP8位位移量; ;否則,順序執(zhí)行 label是一個標(biāo)號、一個8位位移量,表示Jcc指令后的那條指令的偏移地址,到目標(biāo)指令的偏移地址的地址位移 label只支持短轉(zhuǎn)移的相對尋址方式,Jcc指令的分類,Jcc指令不影響標(biāo)志,但要利用標(biāo)志(表2-4) 根據(jù)利用的標(biāo)志位不同,分成三種情況: 判斷單個標(biāo)志位狀態(tài) 比較無符號數(shù)高低 比較

5、有符號數(shù)大小,Jcc指令實(shí)際雖然只有16條,但卻有30個助記符 采用多個助記符,目的是為了方便記憶和使用,1. 判斷單個標(biāo)志位狀態(tài), 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”的個數(shù)是偶是奇 JC/JB/JNAE和JNC/JNB/JAE 利用進(jìn)位標(biāo)志CF,判斷結(jié)果是否進(jìn)位或借位,例題2,題目:將AX中存放的無符號數(shù)除以2,如果是奇數(shù)則加1后除以2 問題:如何判斷AX中的數(shù)據(jù)是奇數(shù)還是偶數(shù)? 解答:判

6、斷AX最低位是“0”(偶數(shù)),還是“1”(奇數(shù))。可以用位操作類指令 1:用邏輯與指令將除最低位外的其他位變成0,保留最低位不變。判斷這個數(shù)據(jù)是0,AX就是偶數(shù);否則,為奇數(shù) 2:將最低位用移位指令移至進(jìn)位標(biāo)志,判斷進(jìn)位標(biāo)志是0,AX就是偶數(shù);否則,為奇數(shù) 3:將最低位用移位指令移至最高位(符號位),判斷符號標(biāo)志是0,AX就是偶數(shù);否則,為奇數(shù),例題2解答1 用JZ指令實(shí)現(xiàn),test ax,01h ;測試AX的最低位D0(不用AND指令,以免改變AX) jz even ;標(biāo)志ZF1,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移 add ax,1 ;標(biāo)志ZF0,即D01:AX內(nèi)的奇數(shù),加1 even:shr

7、 ax,1;AXAX2,用右移一位的方法實(shí)現(xiàn)除以2。 本例中用RCR指令比SHR指令更好。,例題2解答2 用JNC指令實(shí)現(xiàn),mov bx,ax shr bx,1 ;將AX的最低位D0移進(jìn)CF jnc even ;標(biāo)志CF0,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移 add ax,1 ;標(biāo)志CF1,即D01:AX內(nèi)的奇數(shù),加1 even:shr ax,1;AXAX2,還可用SAR、ROR和RCR指令,例題2解答3 用JNS指令實(shí)現(xiàn),mov bx,ax ror bx,1 ;將AX的最低位D0移進(jìn)最高位(符號位SF) jns even ;標(biāo)志SF0,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移 add ax,1 ;標(biāo)志

8、SF1,即D01:AX內(nèi)的奇數(shù),加1 even:shr ax,1;AXAX2,錯誤!循環(huán)指令不影響SF等標(biāo)志,例 判斷是否為字母Y,;寄存器AL中是字母Y(含大小寫),則令A(yù)H0,否則令A(yù)H1 cmp al,y;比較AL與小寫字母y je next;相等,轉(zhuǎn)移 cmp al,Y ;不相等, ;繼續(xù)比較AL與大寫字母Y je next;相等,轉(zhuǎn)移 mov ah,-1;不相等,令A(yù)H1 jmp done;無條件轉(zhuǎn)移指令 next:mov ah,0;相等的處理:令A(yù)H0 done:,例 偶校驗(yàn),;對DL寄存器中8位數(shù)據(jù)進(jìn)行偶校驗(yàn) ;校驗(yàn)位存入CF標(biāo)志 test dl,0ffh ;使CF0,同時設(shè)置P

9、F標(biāo)志 jpe done ;DL中“1”的個數(shù)為偶數(shù) ;正好CF0,轉(zhuǎn)向done stc ;DL中“1”的個數(shù)為奇數(shù),設(shè)置CF1 done:;完成,2. 比較無符號數(shù)高低,無符號數(shù)的大小用高(Above)、低(Below)表示,需要利用CF確定高低、利用ZF標(biāo)志確定相等(Equal) 兩數(shù)的高低分成4種關(guān)系,對應(yīng)4條指令 JB(JNAE):目的操作數(shù)(=)源操作數(shù) JBE(JNA):目的操作數(shù)()源操作數(shù),3. 比較有符號數(shù)大小,判斷有符號數(shù)的大(Greater)、小(Less),需要組合OF、SF標(biāo)志、并利用ZF標(biāo)志確定相等與否 兩數(shù)的大小分成4種關(guān)系,分別對應(yīng)4條指令 JL(JNGE):目

10、的操作數(shù)(=)源操作數(shù) JLE(JNG):目的操作數(shù)()源操作數(shù),例 求較大值 wmax,cmp ax,bx;比較AX和BX jae next;若AXBX,轉(zhuǎn)移 xchg ax,bx;若AXBX,交換 next:mov wmax,ax,如果AX和BX存放的是有符號數(shù), 則條件轉(zhuǎn)移指令應(yīng)采用JGE指令,,例 求較大值(另解),cmp ax,bx;比較AX和BX jae next mov wmax, bx ;若AXBX,wmaxBX jmp done next:mov wmax,ax ;若AXBX,wmaxAX done:,例 求較大值(另解對比),cmp ax,bx;比較AX和BX jbe

11、next mov wmax, ax ;若AXBX,wmaxAX jmp done next:mov wmax,bx ;若AXBX,wmaxBX done:,循環(huán)指令,一段代碼序列多次重復(fù)執(zhí)行就是循環(huán) 8088設(shè)計(jì)有針對CX計(jì)數(shù)器的計(jì)數(shù)循環(huán)指令 LOOP label;循環(huán)指令 ;首先CXCX1;然后判斷;若CX0,轉(zhuǎn)移 JCXZ label;如果CX0,則轉(zhuǎn)移 label操作數(shù)采用相對短尋址方式 還有LOOPZ/LOOPE和LOOPNZ/LOOPNE兩條指令,,LOOPELOOPZ指令 指令格式: LOOPE label 或者 LOOPZ label 執(zhí)行 LOOPELOOPZ 指令,在進(jìn)行

12、循環(huán)次數(shù)的計(jì)數(shù)(即CX (CX)1后,若(CX)0且 ZF1,則轉(zhuǎn)移到目標(biāo)單元label ,否則順序執(zhí)行,LOOPNELOOPNZ指令 指令格式: LOOPNE label 或者 LOOPNZ label 執(zhí)行LOOPNELOOPNZ指令,在進(jìn)行循環(huán)次數(shù)的計(jì)數(shù)(即CX (CX)-1后,如(CX)0且ZF0,則轉(zhuǎn)移到目標(biāo)單元label ,否則順序執(zhí)行。,例 數(shù)據(jù)塊傳送(字節(jié)),mov cx,400h ;設(shè)置循環(huán)次數(shù):1K1024400H mov si,offset sbuf ;設(shè)置循環(huán)初值:SI指向數(shù)據(jù)段源緩沖區(qū)開始 mov di,offset dbuf ;DI指向附加段目的緩沖區(qū)開始(附

13、加段) again:mov al,si;循環(huán)體:實(shí)現(xiàn)數(shù)據(jù)傳送 mov es:di,al;每次傳送一個字節(jié) inc si;SI和DI指向下一個單元 inc di loop again ;循環(huán)條件判定:循環(huán)次數(shù)減1,不為0轉(zhuǎn)移(循環(huán)),例 數(shù)據(jù)塊傳送(字),mov cx,200h ;設(shè)置循環(huán)次數(shù):1K2200H mov si,offset sbuf ;設(shè)置循環(huán)初值:SI指向數(shù)據(jù)段源緩沖區(qū)開始 mov di,offset dbuf ;DI指向附加段目的緩沖區(qū)開始(附加段) again:mov ax,si;循環(huán)體:實(shí)現(xiàn)數(shù)據(jù)傳送 mov es:di,ax;每次傳送一個字 add si,2;指向下一個(字

14、)單元 add di,2 loop again ;循環(huán)條件判定:循環(huán)次數(shù)減1,不為0轉(zhuǎn)移(循環(huán)),例 在存儲器的數(shù)據(jù)段中連續(xù)存放了100個8位帶符號數(shù),數(shù)據(jù)塊的首地址為2000H。試編寫程序統(tǒng)計(jì)其中負(fù)數(shù)的個數(shù) ,并將個數(shù)存放到字節(jié)單元MINUS中。 分析: 為統(tǒng)計(jì)負(fù)數(shù)的個數(shù),可先將MINUS清零然后將數(shù)據(jù)塊中的帶符號數(shù)逐個取入AL寄存器并使其影響標(biāo)志位,再利用JS或JNS條件轉(zhuǎn)移指令進(jìn)行統(tǒng)計(jì)。,MOV MINUS, 0;MINUS單元清零 MOV SI,2000H;將數(shù)據(jù)塊首地址(SI) MOV CX, 100;數(shù)據(jù)塊長度(循環(huán)次數(shù))(CX) AGAIN: MOV AL, SI;取一個數(shù)到AL

15、 OR AL,AL;使數(shù)據(jù)影響標(biāo)志位而其數(shù)值不變 JNS NO_M;若不為負(fù)數(shù),則轉(zhuǎn)移到NO_M INC MINUS;否則為負(fù)數(shù),MINUS單元加1 NO_M :INC SI LOOP AGAIN;CX減1,若不為0,則轉(zhuǎn)移到AGAIN HLT ;停止,子程序指令,子程序是完成特定功能的一段程序 當(dāng)主程序(調(diào)用程序)需要執(zhí)行這個功能時,采用CALL調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行 當(dāng)運(yùn)行完子程序功能后,采用RET返回指令回到主程序繼續(xù)執(zhí)行,演示,轉(zhuǎn)移指令有去無回 子程序調(diào)用需要返回, 其中利用堆棧保存返回地址,1. 子程序調(diào)用指令CALL,CALL指令分成4種類型(類似JMP) CALL l

16、abel;段內(nèi)調(diào)用、直接尋址 CALL r16/m16;段內(nèi)調(diào)用、間接尋址 CALL far ptr label;段間調(diào)用、直接尋址 CALL far ptr mem;段間調(diào)用、間接尋址 CALL指令需要保存返回地址: 段內(nèi)調(diào)用當(dāng)前偏移地址IP入棧 (SP)(SP)2,SS:SP(IP) 段間調(diào)用偏移地址IP和段地址CS入棧 (SP)(SP)2,SS:SP(CS) (SP)(SP)2,SS:SP(IP),段內(nèi)調(diào)用 call near ptr subp (1) 保存返回地址 (2) 轉(zhuǎn)子程序 (IP) subp的偏移地址 段間調(diào)用 call far ptr subp (1) 保

17、存返回地址 (2) 轉(zhuǎn)子程序 (CS) subp的段地址 (IP) subp的偏移地址,2. 子程序返回指令RET,根據(jù)段內(nèi)和段間、有無參數(shù),分成4種類型 RET;無參數(shù)段內(nèi)返回 RET i16;有參數(shù)段內(nèi)返回 RET;無參數(shù)段間返回 RET i16;有參數(shù)段間返回 需要彈出CALL指令壓入堆棧的返回地址 段內(nèi)返回出棧偏移地址IP IPSS:SP, SPSP2 段間返回出棧偏移地址IP和段地址CS IPSS:SP,SPSP2 CSSS:SP,SPSP2,例 十六進(jìn)制轉(zhuǎn)換為ASCII碼的子程序,;子程序:將DL低4位的一位16進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼 htoascproc and dl,

18、0fh;只取DL的低4位 or dl,30h;DL高4位變成3 cmp dl,39h;是09,還是0Ah0Fh ? jbe htoend;是09,轉(zhuǎn)移 add dl,7;是0Ah0Fh,加上7 htoend:ret;子程序返回 htoascendp,轉(zhuǎn)換原理,;主程序:調(diào)用子程序 mov dl,28h call htoasc,中斷指令和系統(tǒng)功能調(diào)用,中斷(Interrupt)是又一種改變程序執(zhí)行順序的方法 8088CPU支持256個中斷,每個中斷用一個編號(中斷向量號)區(qū)別 中斷指令有3條: INT n IRET INTO 本節(jié)主要掌握類似子程序調(diào)用指令的中斷調(diào)用指令I(lǐng)NT n,進(jìn)而掌握系

19、統(tǒng)功能調(diào)用,中斷指令,INT n ;中斷調(diào)用指令:產(chǎn)生n號中斷 ;主程序使用,其中n表示中斷向量號 IRET ;中斷返回指令:實(shí)現(xiàn)中斷返回 ;中斷服務(wù)程序使用,,標(biāo)志處理指令: CLC CF0 CMC CFCF STC CF1 CLD DF0 STD DF1 CLI IF0 STI IF1 注意: * 只影響本指令指定的標(biāo)志,,,,處理機(jī)控制指令,其他處理機(jī)控制指令: NOP 無操作 (機(jī)器碼占一個字節(jié)) HLT 暫停機(jī) (等待一次外中斷,之后繼續(xù)執(zhí)行程序) WAIT 等待 (等待外中斷,之后仍繼續(xù)等待) ESC mem 換碼 ( (mem) 數(shù)據(jù)總線 ) LOCK 封鎖

20、(維持總線的鎖存信號,直到其后的指令執(zhí)行完) 注意: * 不影響條件標(biāo)志,調(diào)用的一般過程: 功能編號 AH, 置入口參數(shù) 執(zhí)行軟中斷語句INT 21H,,常用的dos系統(tǒng)功能調(diào)用: 1.鍵盤輸入(調(diào)用功能號1) 調(diào)用格式:MOV AH,1 INT 21H 功能:等待從鍵盤輸入一個字符并將輸入字符的 ASCII碼AL,若按CTRL+BREAK退出,,DOS系統(tǒng)功能調(diào)用,2.單字符顯示輸出(調(diào)用功能號2) 調(diào)用格式:MOV DL,a ;待顯示字符(如a)的ASCII碼 DL MOV AH,2 INT 21H,功能:將DL中的字符送屏幕。 例:MOV DL,

21、0DH MOV AH,2 INT 21H MOV DL,0AH INT 21H,顯示回車,顯示換行,,,,,3.顯示字符串(功能調(diào)用號9) 功能:將當(dāng)前數(shù)據(jù)區(qū)中DS:DX所指向的以$結(jié)尾的字符串送 屏幕顯示。 注:若字符串中包含字符串$,則不能采用本調(diào)用,只能循環(huán) 地使用2號調(diào)用。 例:DATA SEGMENT BUF DB HOW DO YOU DO?$ DATA ENDS : MOV DX,SEG BUF;存放字符串的段地址 MOV DS,DX LEA DX,BUF;存放字符串的首偏移地址 MOV AH,9 INT 21H,輸出字符串HOW DO YOU DO?,

22、,5.鍵盤輸入字符串:(功能調(diào)用號:10(或0AH)) 調(diào)用格式:MOV DX,SEG BUF;存放字符串的段地址 MOV DS,DX LEA DX,BUF;存放字符串的首偏移地址 MOV AH,10 INT 21H 功能:從鍵盤上往DS:DX所指的輸入緩沖區(qū)輸入以回車鍵結(jié)束 的字符串,并送顯示器顯示。 對緩沖區(qū)的要求: BUF DB 80 DB ? DB 80 DUP(0),;第一個字節(jié)存放緩沖區(qū)大小,不能 為0,用戶確定 ;第二個字節(jié)存放實(shí)際輸入的字符個數(shù), 系統(tǒng)填入 ;從鍵盤上輸入字符串從第三個字節(jié)存 放(如果超過則多余去掉,響鈴告警),DATA SEGMENT P

23、 DB 100 DB ? DB 100 DUP(?) M DB WHAT IS YOUR NAME?$ DATA ENDS STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,S:MOV AX,DATA MOV DS,AX LEA DX,M MOV AH,9 INT 21H MOV DX,0FFSET P MOV AH,10 INT 21H MOV AH,4CH INT 21H CODE ENDS END S,上機(jī)演示 在屏幕上顯示一行提示信息:“WHAT

24、IS YOUR NAME?”,串操作指令 串傳送指令 存入串指令 從串取指令 串比較指令 串掃描指令,1.MOVS 串傳送指令 MOVS DEST, SRC 可以用無操作數(shù)指令代替: MOVSB (字節(jié)) MOVSW (字),例:MOVS ES: BYTE PTR DI, DS: SI 執(zhí)行操作:(1) ((DI)) ((SI)) (2) 字節(jié)操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2 方向標(biāo)志DF=0時用 +,DF=1時用 - 。 REP MOVS

25、:將數(shù)據(jù)段中的整串?dāng)?shù)據(jù)傳送到附加段中。 源串(數(shù)據(jù)段) 目的串(附加段) 執(zhí)行REP MOVS之前,應(yīng)先做好: (1)源串首地址 SI (2)目的串首地址 DI (3)串長度 CX (4)建立方向標(biāo)志(CLD使DF=0,STD使DF=1),,,,,,,,(SI),,,,,,,,低地址,高地址,數(shù)據(jù)段,附加段,(SI),,,,,(DI),(DI),DF=0,DF=0,,,,,,,,,,與REP配合工作的 MOVS REP MOVS 執(zhí)行操作:(1) 如(CX)= 0則退出REP,否則轉(zhuǎn)(2) (2) (CX) (CX) -1 (3) 執(zhí)行MOVS (4) 重復(fù)

26、(1) (3),例datarea segment mess1 db personal_computer;源數(shù)據(jù)段 datarea ends extra segment mess2 db 17 dup (?);目的段 extra ends code segment lea si, mess1 ;源數(shù)據(jù)段首地址 lea di, mess2 ;目的數(shù)據(jù)段首地址 mov cx, 17 ;數(shù)據(jù)長度17個字節(jié) cld ;DF=0 rep movsb ;開始傳送字節(jié) code ends,lea si, mess1+16 lea di, mess2+16 mov cx,

27、 17 std ; DF=1 rep movsb,2.CMPS串比較指令 CMPS SRC, DST CMPSB (字節(jié)) CMPSW (字) 執(zhí)行操作: (1) ((SI)) - ((DI)) 根據(jù)比較結(jié)果設(shè)置條件標(biāo)志位:相等 ZF=1 不等 ZF=0 (2) 字節(jié)操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2,與REPE/REPZ和REPNE/REPNZ配合工作的CMPS REPE/REPZ (REPNE/REPNZ) CMPS 執(zhí)行操作:(1) 如(

28、CX)=0或ZF=0 (ZF=1)則退出, 否則轉(zhuǎn)(2) (2) (CX)(CX)-1 (3) 執(zhí)行CMPS (4) 重復(fù)(1) (3),例: 比較兩個字符串,找出它們不相匹配的字節(jié)位置 lea si, mess1 lea di, mess2 mov cx, 8 cld repe cmpsb;找到不相匹配的字節(jié)時停止 ;(di)、(si)為不匹配字符位置,SCASB (字節(jié)) SCASW (字) 執(zhí)行操作: 字節(jié)操作:(AL) - ((DI)), (DI)(DI)1 字操作:(AX) - ((DI)), (DI)(DI)2,3.

29、SCAS串掃描指令,與REPE/REPZ和REPNE/REPNZ配合工作的SCAS REPE/REPZ (REPNE/REPNZ) SCAS 執(zhí)行操作:(1) 如(CX)=0或ZF=0 (ZF=1)則退出, 否則轉(zhuǎn)(2) (2) (CX)(CX)-1 (3) 執(zhí)行 SCAS (4) 重復(fù)(1) (3),例:從一個字符串中查找一個指定的字符 mess db COMPUTER lea di, mess mov al, T mov cx, 8 cld repne scasb;不是T則重復(fù),(DI): 相匹配字符的下一個地址 (CX):剩下還未比

30、較的字符個數(shù),4.LODS取串指令 LODSB (字節(jié)) LODSW (字) 執(zhí)行操作: 字節(jié)操作:(AL)((SI)), (SI)(SI)1 字操作: (AX)((SI)), (SI)(SI)2,注意: * LODS指令一般不與REP聯(lián)用,STOSB (字節(jié)) STOSW (字) 執(zhí)行操作: 字節(jié)操作:((DI))(AL), (DI)(DI)1 字操作: ((DI))(AX), (DI)(DI)2 與REP配合工作的STOS REP STOS 執(zhí)行操作:(1) 如(CX)= 0則退出REP,否則轉(zhuǎn)(2) (2) (CX) (CX) -1 (3

31、) 執(zhí)行STOS (4) 重復(fù)(1) (3),5.STOS存串指令,,例:把mess2緩沖區(qū)的5個字節(jié)置為20H lea di, mess2 mov al, 20H mov cx, 5 cld rep stosb;cx=0時停止,教學(xué)要求,了解8088/8086微處理器基本結(jié)構(gòu) 掌握8088/8086的寄存器結(jié)構(gòu)、存儲器結(jié)構(gòu)和尋址方式 熟悉匯編語言的語句格式,掌握8088/8086基本指令: 數(shù)據(jù)傳送:MOVXCHGXLAT、PUSHPOP、LEA 加減運(yùn)算:ADDSUB、ADCSBB、CMP、INCDEC 邏輯運(yùn)算:ANDORXORNOTTEST、 移位指令:SHLSHRSAR、ROLROR

32、RCLRCR 控制轉(zhuǎn)移:JMPJccLOOP、CALLRET、INT n,總結(jié),本章展開了8088CPU16位指令系統(tǒng)的常用指令 希望大家就如下幾個方面進(jìn)行一下總結(jié): 操作數(shù)尋址方式和目的地址尋址方式 指令支持的操作數(shù)形式 常用指令的助記符和功能 指令對標(biāo)志的影響 通過復(fù)習(xí)整理,形成指令系統(tǒng)的整體概念,進(jìn)而掌握常用指令,指令執(zhí)行,指令執(zhí)行演示舉例,設(shè)CS=1000H,DS=1492H MOV AX,0064H ADD AX,0100H MOV 2000H,AX,指令執(zhí)行,目的地址相對尋址方式,,目的地址寄存器段內(nèi)間接尋址方式,,目的地址存儲器段內(nèi)間接尋址方式,,目的地址段間直接尋址方式,,目的

33、地址存儲器段間間接尋址方式,,條件轉(zhuǎn)移指令的含義,JZ/JEJump on Zero/Equal JNZ/JNEJump on Not Zero/Equal JSJump on Sign JNSJump on Not Sign JP/JPEJump on Parity/Parity Even JNP/JPOJump on Not Parity/Parity Odd JOJump on Overflow JNOJump on Not Overflow JC/JB/JNAEJump on Carry/Below/Not Above or Equal JNC/JNB/JAEJump on Not C

34、arry/Not Below/Above or Equal JBE/JNAJump on Below or Equal/Not Above JNBE/JAJump on Not Below or Equal/Above JL/JNGEJump on Less/Not Greater or Equal JNL/JGEJump on Not Less/Greater or Equal JLE/JNGJump on Less or Equal/Not Greater JNLE/JGJump on Not Less or Equal/Greater,,奇偶校驗(yàn),奇偶校驗(yàn)是計(jì)算機(jī)中最常使用的校驗(yàn)方法,因

35、為不論用硬件還是用軟件都很容易實(shí)現(xiàn) 偶校驗(yàn):如果數(shù)據(jù)中“1”的個數(shù)不是偶數(shù),則校驗(yàn)位是1,使得包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中“1”的個數(shù)為偶數(shù);否則,校驗(yàn)位為0 奇校驗(yàn):如果數(shù)據(jù)中“1”的個數(shù)不是奇數(shù),則校驗(yàn)位是1,使得包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中“1”的個數(shù)為奇數(shù);否則,校驗(yàn)位為0,,主程序與子程序,CALL label,主程序,,,,,RET,子程序,,回到CALL指令后的指令處返回地址,,十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼的原理,,主程序與中斷服務(wù)程序,,主程序,,,,,IRET,中斷服務(wù)程序,,斷點(diǎn),,中斷請求,中斷請求可以來自處理器外部的中斷源, 也可以由處理器執(zhí)行指令引起: 例如執(zhí)行INT i8指令。,8088的指令執(zhí)行,,

展開閱讀全文
溫馨提示:
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),我們立即給予刪除!