歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

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

  • 資源ID:14850830       資源大小:1.38MB        全文頁(yè)數(shù):71頁(yè)
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

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

控制轉(zhuǎn)移類指令,控制轉(zhuǎn)移類指令用于實(shí)現(xiàn)分支、循環(huán)、過(guò)程等程序結(jié)構(gòu),是僅次于傳送指令的常用指令 重點(diǎn)掌握: JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系統(tǒng)功能調(diào)用,控制轉(zhuǎn)移類指令通過(guò)改變IP(和CS)值,實(shí)現(xiàn)程序執(zhí)行順序的改變,目標(biāo)地址的尋址方式,相對(duì)尋址方式 指令代碼中提供目的地址相對(duì)于當(dāng)前IP的位移量,轉(zhuǎn)移到的目的地址(轉(zhuǎn)移后的IP值)就是當(dāng)前IP值加上位移量 直接尋址方式 指令代碼中提供目的邏輯地址,轉(zhuǎn)移后的CS和IP值直接來(lái)自指令操作碼后的目的地址操作數(shù) 間接尋址方式 指令代碼中指示寄存器或存儲(chǔ)單元,目的地址從寄存器或存儲(chǔ)單元中間接獲得,用標(biāo)號(hào)表達(dá),用標(biāo)號(hào)表達(dá),用寄存器或存儲(chǔ)器操作數(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)移范圍可以用一個(gè)字節(jié)表達(dá),在段內(nèi)128127范圍的轉(zhuǎn)移,目標(biāo)地址的尋址范圍:段間尋址,段間轉(zhuǎn)移遠(yuǎn)轉(zhuǎn)移(far) 從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段,可以在1MB范圍 需要更改CS段地址和IP偏移地址 目標(biāo)地址必須用一個(gè)32位數(shù)表達(dá),叫做32位遠(yuǎn)指針,它就是邏輯地址,代碼段,代碼段,實(shí)際編程時(shí),匯編程序會(huì)根據(jù)目標(biāo)地址的屬性,自動(dòng)處理成短轉(zhuǎn)移、近轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移 程序員可用操作符short、near ptr 或far ptr 強(qiáng)制成為需要的轉(zhuǎn)移類型,無(wú)條件轉(zhuǎn)移指令,只要執(zhí)行無(wú)條件轉(zhuǎn)移指令JMP,就使程序轉(zhuǎn)到指定的目標(biāo)地址,從目標(biāo)地址處開(kāi)始執(zhí)行指令 操作數(shù)label是要轉(zhuǎn)移到的目標(biāo)地址(目的地址、轉(zhuǎn)移地址) JMP指令分成4種類型: 段內(nèi)轉(zhuǎn)移、相對(duì)尋址 段內(nèi)轉(zhuǎn)移、間接尋址 段間轉(zhuǎn)移、直接尋址 段間轉(zhuǎn)移、間接尋址,JMP label;程序轉(zhuǎn)向label標(biāo)號(hào)指定的地址,無(wú)條件轉(zhuǎn)移指令JMP(jump),JMP label;段內(nèi)轉(zhuǎn)移、相對(duì)尋址 ;IPIP位移量 JMP r16/m16;段內(nèi)轉(zhuǎn)移、間接尋址 ;IPr16/m16 JMP far ptr label;段間轉(zhuǎn)移、直接尋址 ;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是一個(gè)標(biāo)號(hào)、一個(gè)8位位移量,表示Jcc指令后的那條指令的偏移地址,到目標(biāo)指令的偏移地址的地址位移 label只支持短轉(zhuǎn)移的相對(duì)尋址方式,Jcc指令的分類,Jcc指令不影響標(biāo)志,但要利用標(biāo)志(表2-4) 根據(jù)利用的標(biāo)志位不同,分成三種情況: 判斷單個(gè)標(biāo)志位狀態(tài) 比較無(wú)符號(hào)數(shù)高低 比較有符號(hào)數(shù)大小,Jcc指令實(shí)際雖然只有16條,但卻有30個(gè)助記符 采用多個(gè)助記符,目的是為了方便記憶和使用,1. 判斷單個(gè)標(biāo)志位狀態(tài), JZ/JE和JNZ/JNE 利用零標(biāo)志ZF,判斷結(jié)果是否為零(或相等) JS和JNS 利用符號(hào)標(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/JB/JNAE和JNC/JNB/JAE 利用進(jìn)位標(biāo)志CF,判斷結(jié)果是否進(jìn)位或借位,例題2,題目:將AX中存放的無(wú)符號(hào)數(shù)除以2,如果是奇數(shù)則加1后除以2 問(wèn)題:如何判斷AX中的數(shù)據(jù)是奇數(shù)還是偶數(shù)? 解答:判斷AX最低位是“0”(偶數(shù)),還是“1”(奇數(shù))??梢杂梦徊僮黝愔噶?1:用邏輯與指令將除最低位外的其他位變成0,保留最低位不變。判斷這個(gè)數(shù)據(jù)是0,AX就是偶數(shù);否則,為奇數(shù) 2:將最低位用移位指令移至進(jìn)位標(biāo)志,判斷進(jìn)位標(biāo)志是0,AX就是偶數(shù);否則,為奇數(shù) 3:將最低位用移位指令移至最高位(符號(hào)位),判斷符號(hào)標(biāo)志是0,AX就是偶數(shù);否則,為奇數(shù),例題2解答1 用JZ指令實(shí)現(xiàn),test ax,01h ;測(cè)試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 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)最高位(符號(hào)位SF) jns even ;標(biāo)志SF0,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移 add ax,1 ;標(biāo)志SF1,即D01:AX內(nèi)的奇數(shù),加1 even:shr ax,1;AXAX2,錯(cuò)誤!循環(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;無(wú)條件轉(zhuǎn)移指令 next:mov ah,0;相等的處理:令A(yù)H0 done:,例 偶校驗(yàn),;對(duì)DL寄存器中8位數(shù)據(jù)進(jìn)行偶校驗(yàn) ;校驗(yàn)位存入CF標(biāo)志 test dl,0ffh ;使CF0,同時(shí)設(shè)置PF標(biāo)志 jpe done ;DL中“1”的個(gè)數(shù)為偶數(shù) ;正好CF0,轉(zhuǎn)向done stc ;DL中“1”的個(gè)數(shù)為奇數(shù),設(shè)置CF1 done:;完成,2. 比較無(wú)符號(hào)數(shù)高低,無(wú)符號(hào)數(shù)的大小用高(Above)、低(Below)表示,需要利用CF確定高低、利用ZF標(biāo)志確定相等(Equal) 兩數(shù)的高低分成4種關(guān)系,對(duì)應(yīng)4條指令 JB(JNAE):目的操作數(shù)(=)源操作數(shù) JBE(JNA):目的操作數(shù)()源操作數(shù),3. 比較有符號(hào)數(shù)大小,判斷有符號(hào)數(shù)的大(Greater)、?。↙ess),需要組合OF、SF標(biāo)志、并利用ZF標(biāo)志確定相等與否 兩數(shù)的大小分成4種關(guān)系,分別對(duì)應(yīng)4條指令 JL(JNGE):目的操作數(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存放的是有符號(hào)數(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:,例 求較大值(另解對(duì)比),cmp ax,bx;比較AX和BX jbe next mov wmax, ax ;若AXBX,wmaxAX jmp done next:mov wmax,bx ;若AXBX,wmaxBX done:,循環(huán)指令,一段代碼序列多次重復(fù)執(zhí)行就是循環(huán) 8088設(shè)計(jì)有針對(duì)CX計(jì)數(shù)器的計(jì)數(shù)循環(huán)指令 LOOP label;循環(huán)指令 ;首先CXCX1;然后判斷;若CX0,轉(zhuǎn)移 JCXZ label;如果CX0,則轉(zhuǎn)移 label操作數(shù)采用相對(duì)短尋址方式 還有LOOPZ/LOOPE和LOOPNZ/LOOPNE兩條指令,LOOPELOOPZ指令 指令格式: LOOPE label 或者 LOOPZ label 執(zhí)行 LOOPELOOPZ 指令,在進(jìn)行循環(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ū)開(kāi)始 mov di,offset dbuf ;DI指向附加段目的緩沖區(qū)開(kāi)始(附加段) again:mov al,si;循環(huán)體:實(shí)現(xiàn)數(shù)據(jù)傳送 mov es:di,al;每次傳送一個(gè)字節(jié) inc si;SI和DI指向下一個(gè)單元 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ū)開(kāi)始 mov di,offset dbuf ;DI指向附加段目的緩沖區(qū)開(kāi)始(附加段) again:mov ax,si;循環(huán)體:實(shí)現(xiàn)數(shù)據(jù)傳送 mov es:di,ax;每次傳送一個(gè)字 add si,2;指向下一個(gè)(字)單元 add di,2 loop again ;循環(huán)條件判定:循環(huán)次數(shù)減1,不為0轉(zhuǎn)移(循環(huán)),例 在存儲(chǔ)器的數(shù)據(jù)段中連續(xù)存放了100個(gè)8位帶符號(hào)數(shù),數(shù)據(jù)塊的首地址為2000H。試編寫程序統(tǒng)計(jì)其中負(fù)數(shù)的個(gè)數(shù) ,并將個(gè)數(shù)存放到字節(jié)單元MINUS中。 分析: 為統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù),可先將MINUS清零然后將數(shù)據(jù)塊中的帶符號(hào)數(shù)逐個(gè)取入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ù)塊長(zhǎng)度(循環(huán)次數(shù))(CX) AGAIN: MOV AL, SI;取一個(gè)數(shù)到AL 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í)行這個(gè)功能時(shí),采用CALL調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行 當(dāng)運(yùn)行完子程序功能后,采用RET返回指令回到主程序繼續(xù)執(zhí)行,演示,轉(zhuǎn)移指令有去無(wú)回 子程序調(diào)用需要返回, 其中利用堆棧保存返回地址,1. 子程序調(diào)用指令CALL,CALL指令分成4種類型(類似JMP) CALL label;段內(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) 保存返回地址 (2) 轉(zhuǎn)子程序 (CS) subp的段地址 (IP) subp的偏移地址,2. 子程序返回指令RET,根據(jù)段內(nèi)和段間、有無(wú)參數(shù),分成4種類型 RET;無(wú)參數(shù)段內(nèi)返回 RET i16;有參數(shù)段內(nèi)返回 RET;無(wú)參數(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,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個(gè)中斷,每個(gè)中斷用一個(gè)編號(hào)(中斷向量號(hào))區(qū)別 中斷指令有3條: INT n IRET INTO 本節(jié)主要掌握類似子程序調(diào)用指令的中斷調(diào)用指令I(lǐng)NT n,進(jìn)而掌握系統(tǒng)功能調(diào)用,中斷指令,INT n ;中斷調(diào)用指令:產(chǎn)生n號(hào)中斷 ;主程序使用,其中n表示中斷向量號(hào) 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 無(wú)操作 (機(jī)器碼占一個(gè)字節(jié)) HLT 暫停機(jī) (等待一次外中斷,之后繼續(xù)執(zhí)行程序) WAIT 等待 (等待外中斷,之后仍繼續(xù)等待) ESC mem 換碼 ( (mem) 數(shù)據(jù)總線 ) LOCK 封鎖 (維持總線的鎖存信號(hào),直到其后的指令執(zhí)行完) 注意: * 不影響條件標(biāo)志,調(diào)用的一般過(guò)程: 功能編號(hào) AH, 置入口參數(shù) 執(zhí)行軟中斷語(yǔ)句INT 21H,常用的dos系統(tǒng)功能調(diào)用: 1.鍵盤輸入(調(diào)用功能號(hào)1) 調(diào)用格式:MOV AH,1 INT 21H 功能:等待從鍵盤輸入一個(gè)字符并將輸入字符的 ASCII碼AL,若按CTRL+BREAK退出,DOS系統(tǒng)功能調(diào)用,2.單字符顯示輸出(調(diào)用功能號(hào)2) 調(diào)用格式:MOV DL,a ;待顯示字符(如a)的ASCII碼 DL MOV AH,2 INT 21H,功能:將DL中的字符送屏幕。 例:MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH INT 21H,顯示回車,顯示換行,3.顯示字符串(功能調(diào)用號(hào)9) 功能:將當(dāng)前數(shù)據(jù)區(qū)中DS:DX所指向的以$結(jié)尾的字符串送 屏幕顯示。 注:若字符串中包含字符串$,則不能采用本調(diào)用,只能循環(huán) 地使用2號(hào)調(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?,5.鍵盤輸入字符串:(功能調(diào)用號(hào):10(或0AH) 調(diào)用格式:MOV DX,SEG BUF;存放字符串的段地址 MOV DS,DX LEA DX,BUF;存放字符串的首偏移地址 MOV AH,10 INT 21H 功能:從鍵盤上往DS:DX所指的輸入緩沖區(qū)輸入以回車鍵結(jié)束 的字符串,并送顯示器顯示。 對(duì)緩沖區(qū)的要求: BUF DB 80 DB ? DB 80 DUP(0),;第一個(gè)字節(jié)存放緩沖區(qū)大小,不能 為0,用戶確定 ;第二個(gè)字節(jié)存放實(shí)際輸入的字符個(gè)數(shù), 系統(tǒng)填入 ;從鍵盤上輸入字符串從第三個(gè)字節(jié)存 放(如果超過(guò)則多余去掉,響鈴告警),DATA SEGMENT P 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 IS YOUR NAME?”,串操作指令 串傳送指令 存入串指令 從串取指令 串比較指令 串掃描指令,1.MOVS 串傳送指令 MOVS DEST, SRC 可以用無(wú)操作數(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時(shí)用 +,DF=1時(shí)用 - 。 REP MOVS:將數(shù)據(jù)段中的整串?dāng)?shù)據(jù)傳送到附加段中。 源串(數(shù)據(jù)段) 目的串(附加段) 執(zhí)行REP MOVS之前,應(yīng)先做好: (1)源串首地址 SI (2)目的串首地址 DI (3)串長(zhǎng)度 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ù)(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ù)長(zhǎng)度17個(gè)字節(jié) cld ;DF=0 rep movsb ;開(kāi)始傳送字節(jié) code ends,lea si, mess1+16 lea di, mess2+16 mov cx, 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) 如(CX)=0或ZF=0 (ZF=1)則退出, 否則轉(zhuǎn)(2) (2) (CX)(CX)-1 (3) 執(zhí)行CMPS (4) 重復(fù)(1) (3),例: 比較兩個(gè)字符串,找出它們不相匹配的字節(jié)位置 lea si, mess1 lea di, mess2 mov cx, 8 cld repe cmpsb;找到不相匹配的字節(jié)時(shí)停止 ;(di)、(si)為不匹配字符位置,SCASB (字節(jié)) SCASW (字) 執(zhí)行操作: 字節(jié)操作:(AL) - (DI), (DI)(DI)1 字操作:(AX) - (DI), (DI)(DI)2,3.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),例:從一個(gè)字符串中查找一個(gè)指定的字符 mess db COMPUTER lea di, mess mov al, T mov cx, 8 cld repne scasb;不是T則重復(fù),(DI): 相匹配字符的下一個(gè)地址 (CX):剩下還未比較的字符個(gè)數(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) 執(zhí)行STOS (4) 重復(fù)(1) (3),5.STOS存串指令,例:把mess2緩沖區(qū)的5個(gè)字節(jié)置為20H lea di, mess2 mov al, 20H mov cx, 5 cld rep stosb;cx=0時(shí)停止,教學(xué)要求,了解8088/8086微處理器基本結(jié)構(gòu) 掌握8088/8086的寄存器結(jié)構(gòu)、存儲(chǔ)器結(jié)構(gòu)和尋址方式 熟悉匯編語(yǔ)言的語(yǔ)句格式,掌握8088/8086基本指令: 數(shù)據(jù)傳送:MOVXCHGXLAT、PUSHPOP、LEA 加減運(yùn)算:ADDSUB、ADCSBB、CMP、INCDEC 邏輯運(yùn)算:ANDORXORNOTTEST、 移位指令:SHLSHRSAR、ROLRORRCLRCR 控制轉(zhuǎn)移:JMPJccLOOP、CALLRET、INT n,總結(jié),本章展開(kāi)了8088CPU16位指令系統(tǒng)的常用指令 希望大家就如下幾個(gè)方面進(jìn)行一下總結(jié): 操作數(shù)尋址方式和目的地址尋址方式 指令支持的操作數(shù)形式 常用指令的助記符和功能 指令對(duì)標(biāo)志的影響 通過(guò)復(fù)習(xí)整理,形成指令系統(tǒng)的整體概念,進(jìn)而掌握常用指令,指令執(zhí)行,指令執(zhí)行演示舉例,設(shè)CS=1000H,DS=1492H MOV AX,0064H ADD AX,0100H MOV 2000H,AX,指令執(zhí)行,目的地址相對(duì)尋址方式,目的地址寄存器段內(nèi)間接尋址方式,目的地址存儲(chǔ)器段內(nèi)間接尋址方式,目的地址段間直接尋址方式,目的地址存儲(chǔ)器段間間接尋址方式,條件轉(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 Carry/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)方法,因?yàn)椴徽撚糜布€是用軟件都很容易實(shí)現(xiàn) 偶校驗(yàn):如果數(shù)據(jù)中“1”的個(gè)數(shù)不是偶數(shù),則校驗(yàn)位是1,使得包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中“1”的個(gè)數(shù)為偶數(shù);否則,校驗(yàn)位為0 奇校驗(yàn):如果數(shù)據(jù)中“1”的個(gè)數(shù)不是奇數(shù),則校驗(yàn)位是1,使得包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中“1”的個(gè)數(shù)為奇數(shù);否則,校驗(yàn)位為0,主程序與子程序,CALL label,主程序,RET,子程序,回到CALL指令后的指令處返回地址,十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼的原理,主程序與中斷服務(wù)程序,主程序,IRET,中斷服務(wù)程序,斷點(diǎn),中斷請(qǐng)求,中斷請(qǐng)求可以來(lái)自處理器外部的中斷源, 也可以由處理器執(zhí)行指令引起: 例如執(zhí)行INT i8指令。,8088的指令執(zhí)行,

注意事項(xiàng)

本文(指令系統(tǒng)轉(zhuǎn)移指令.ppt)為本站會(huì)員(max****ui)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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