《指令系統(tǒng)轉(zhuǎn)移指令》PPT課件
《《指令系統(tǒng)轉(zhuǎn)移指令》PPT課件》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《《指令系統(tǒng)轉(zhuǎn)移指令》PPT課件(71頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 控 制 轉(zhuǎn) 移 類(lèi) 指 令 控制轉(zhuǎn)移類(lèi)指令用于實(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) 移 類(lèi) 指 令 通 過(guò) 改 變 IP( 和 CS) 值 ,實(shí) 現(xiàn) 程 序 執(zhí) 行 順 序 的 改 變 目 標(biāo) 地 址 的 尋 址 方 式相對(duì)尋址方式指 令 代 碼 中 提 供 目 的 地 址 相 對(duì) 于 當(dāng) 前 IP的 位 移量 , 轉(zhuǎn) 移 到 的 目 的 地 址 ( 轉(zhuǎn) 移 后 的 IP值 ) 就 是當(dāng) 前 IP值 加 上 位 移 量直接尋址方式指 令 代
2、碼 中 提 供 目 的 邏 輯 地 址 , 轉(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偏移 地
3、址段內(nèi)轉(zhuǎn)移短轉(zhuǎn)移(short)轉(zhuǎn) 移 范 圍 可 以 用 一 個(gè) 字 節(jié) 表 達(dá) , 在 段內(nèi) 128 127范 圍 的 轉(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) 處 理 成 短
4、轉(zhuǎn) 移 、 近 轉(zhuǎn) 移 或 遠(yuǎn) 轉(zhuǎn) 移 程 序 員 可 用 操 作 符 short、 near ptr 或 far ptr 強(qiáng) 制 成 為 需 要 的 轉(zhuǎn) 移 類(lèi) 型 無(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種類(lèi)型: 段 內(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) 移
5、指 令 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;條件滿(mǎn)足,發(fā)生轉(zhuǎn)移;IPIP8位位移量;否則,順序執(zhí)行l(wèi)abel是一個(gè)標(biāo)號(hào)、一個(gè)8位位移量,表示Jcc指令后的那條指令的偏移地址,到目標(biāo)
6、指令的偏移地址的地址位移label只支持短轉(zhuǎn)移的相對(duì)尋址方式 Jcc指 令 的 分 類(lèi)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利
7、用 符 號(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ù))??梢杂梦徊僮黝?lèi)指令1:用邏輯與指令將除最低位
8、外的其他位變成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ù),加1even: shr ax,1;AXAX2用 右 移 一 位 的 方 法 實(shí) 現(xiàn) 除 以 2。本 例 中 用 RCR
9、指 令 比 SHR指 令 更 好 。 例 題 2解 答 2 用 JNC指 令 實(shí) 現(xiàn)mov bx,axshr bx,1;將AX的最低位D0移進(jìn)CFjnc even;標(biāo)志CF0,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移add ax,1;標(biāo)志CF1,即D01:AX內(nèi)的奇數(shù),加1even: shr ax,1;AXAX2還 可 用 SAR、 ROR和 RCR指 令 例 題 2解 答 3 用 JNS指 令 實(shí) 現(xiàn)mov bx,axror 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ù),加1ev
10、en: shr ax,1;AXAX2錯(cuò) 誤 ! 循 環(huán) 指 令 不 影 響 SF等 標(biāo) 志ADD BX,0 ; 增 加 一 條 指 令 例 判 斷 是 否 為 字 母 Y;寄存器AL中是字母Y(含大小寫(xiě)),則令A(yù)H0,否則令A(yù)H1cmp al,y;比較AL與小寫(xiě)字母yje next;相等,轉(zhuǎn)移cmp al,Y ;不相等,;繼續(xù)比較AL與大寫(xiě)字母Yje next;相等,轉(zhuǎn)移mov ah,-1;不相等,令A(yù)H1jmp done;無(wú)條件轉(zhuǎn)移指令next: mov ah,0;相等的處理:令A(yù)H0done: 例 偶 校 驗(yàn);對(duì)DL寄存器中8位數(shù)據(jù)進(jìn)行偶校驗(yàn);校驗(yàn)位存入CF標(biāo)志test dl,0ffh;使
11、CF0,同時(shí)設(shè)置PF標(biāo)志jpe done;DL中“1”的個(gè)數(shù)為偶數(shù);正好CF0,轉(zhuǎn)向donestc;DL中“1”的個(gè)數(shù)為奇數(shù),設(shè)置CF1done: ;完成 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條指
12、令JL(JNGE):目的操作數(shù)(=)源操作數(shù)JLE(JNG):目的操作數(shù)()源操作數(shù) 例 求 較 大 值 wmaxcmp ax,bx;比較AX和BXjae 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和BXjae nextmov wmax, bx;若AXBX,wmaxBXjmp donenext: mov wmax,ax;若AXBX,wmaxAXdone: 例 求 較 大
13、值 ( 另 解 對(duì) 比 )cmp ax,bx;比較AX和BXjbe nextmov wmax, ax;若AXBX,wmaxAXjmp donenext: mov wmax,bx;若AXBX,wmaxBXdone: 循 環(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兩條指令dec cxjnz label LOOPELOOPZ指令 指令格式: LOOPE labe
14、l 或者 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ù):1K1024400Hmov si,offset sbuf;設(shè)置循環(huán)初值:SI指向數(shù)據(jù)段源緩沖區(qū)開(kāi)始mo
15、v 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 diloop again;循環(huán)條件判定:循環(huán)次數(shù)減1,不為0轉(zhuǎn)移(循環(huán)) 例 數(shù) 據(jù) 塊 傳 送 ( 字 )mov cx,200h;設(shè)置循環(huán)次數(shù):1K2200Hmov 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
16、,ax;每次傳送一個(gè)字add si,2;指向下一個(gè)(字)單元add di,2loop 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。試編寫(xiě)程序統(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ù)
17、據(jù) 塊 長(zhǎng) 度 ( 循 環(huán) 次 數(shù) ) ( CX)AGAIN: MOV AL, SI ; 取 一 個(gè) 數(shù) 到 ALOR AL, AL ; 使 數(shù) 據(jù) 影 響 標(biāo) 志 位 而 其 數(shù) 值 不 變JNS NO_M ; 若 不 為 負(fù) 數(shù) , 則 轉(zhuǎn) 移 到 NO_MINC MINUS ; 否 則 為 負(fù) 數(shù) , MINUS單 元 加 1NO_M :INC SI LOOP AGAIN ; CX減 1, 若 不 為 0, 則 轉(zhuǎn) 移 到 AGAINHLT ; 停 止 子 程 序 指 令子程序是完成特定功能的一段程序當(dāng)主程序(調(diào)用程序)需要執(zhí)行這個(gè)功能時(shí),采用CALL調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行當(dāng)
18、運(yùn)行完子程序功能后,采用RET返回指令回到主程序繼續(xù)執(zhí)行演 示 轉(zhuǎn) 移 指 令 有 去 無(wú) 回 子 程 序 調(diào) 用 需 要 返 回 ,其 中 利 用 堆 棧 保 存 返 回 地 址 1. 子 程 序 調(diào) 用 指 令 CALLCALL指 令 分 成 4種 類(lèi) 型 ( 類(lèi) 似 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指 令 需 要 保 存 返 回 地 址
19、 :n 段 內(nèi) 調(diào) 用 當(dāng) 前 偏 移 地 址 IP入 棧(SP)(SP) 2, SS:SP(IP)n 段 間 調(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
20、根 據(jù) 段 內(nèi) 和 段 間 、 有 無(wú) 參 數(shù) , 分 成 4種 類(lèi) 型RET ; 無(wú) 參 數(shù) 段 內(nèi) 返 回RET i16 ; 有 參 數(shù) 段 內(nèi) 返 回RET ; 無(wú) 參 數(shù) 段 間 返 回RET i16 ; 有 參 數(shù) 段 間 返 回需 要 彈 出 CALL指 令 壓 入 堆 棧 的 返 回 地 址n 段 內(nèi) 返 回 出 棧 偏 移 地 址 IPIPSS:SP, SPSP 2n 段 間 返 回 出 棧 偏 移 地 址 IP和 段 地 址 CSIPSS:SP, SPSP 2CSSS:SP, SPSP 2 例 十 六 進(jìn) 制 轉(zhuǎn) 換 為 ASCII碼 的 子 程 序;子程序:將DL低4位的一
21、位16進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼htoasc procand dl,0fh ; 只 取 DL的 低 4位or dl,30h ; DL高 4位 變 成 3cmp dl,39h ; 是 0 9, 還 是 0Ah 0Fh ?jbe htoend ; 是 0 9, 轉(zhuǎn) 移add dl,7 ; 是 0Ah 0Fh, 加 上 7htoend: ret ; 子 程 序 返 回htoasc endp ; 主 程 序 : 調(diào) 用 子 程 序mov dl,28hcall htoasc 中 斷 指 令 和 系 統(tǒng) 功 能 調(diào) 用中斷(Interrupt)是又一種改變程序執(zhí)行順序的方法8088CPU支持256個(gè)中斷,每
22、個(gè)中斷用一個(gè)編號(hào)(中斷向量號(hào))區(qū)別中斷指令有3條:INT n IRET INTO本節(jié)主要掌握類(lèi)似子程序調(diào)用指令的中斷調(diào)用指令I(lǐng)NT n,進(jìn)而掌握系統(tǒng)功能調(diào)用 中 斷 指 令I(lǐng)NT n;中斷調(diào)用指令:產(chǎn)生n號(hào)中斷;主程序使用,其中n表示中斷向量號(hào)IRET;中斷返回指令:實(shí)現(xiàn)中斷返回;中斷服務(wù)程序使用 標(biāo) 志 處 理 指 令 : CLC CF 0 CMC CF CF STC CF 1 CLD DF 0 STD DF 1 CLI IF 0 STI IF 1 注 意 : * 只 影 響 本 指 令 指 定 的 標(biāo) 志處 理 機(jī) 控 制 指 令 其 他 處 理 機(jī) 控 制 指 令 : NOP 無(wú) 操 作
23、 (機(jī) 器 碼 占 一 個(gè) 字 節(jié) ) HLT 暫 停 機(jī) (等 待 一 次 外 中 斷 , 之 后 繼 續(xù) 執(zhí) 行 程 序 ) WAIT 等 待 (等 待 外 中 斷 , 之 后 仍 繼 續(xù) 等 待 ) ESC mem 換 碼 ( (mem) 數(shù) 據(jù) 總 線(xiàn) ) LOCK 封 鎖 (維 持 總 線(xiàn) 的 鎖 存 信 號(hào) , 直 到 其 后 的 指 令 執(zhí) 行 完 ) 注 意 : * 不 影 響 條 件 標(biāo) 志 調(diào) 用 的 一 般 過(guò) 程 : 功 能 編 號(hào) AH, 置 入 口 參 數(shù) 執(zhí) 行 軟 中 斷 語(yǔ) 句 INT 21H常 用 的 dos系 統(tǒng) 功 能 調(diào) 用 :1.鍵 盤(pán) 輸 入 (
24、調(diào) 用 功 能 號(hào) 1) 調(diào) 用 格 式 : MOV AH,1 INT 21H 功 能 : 等 待 從 鍵 盤(pán) 輸 入 一 個(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 顯 示
25、回 車(chē)顯 示 換 行 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
26、 INT 21H 輸 出 字 符 串 HOW DO YOU DO? 5.鍵 盤(pán) 輸 入 字 符 串 : ( 功 能 調(diào) 用 號(hào) : 10( 或 0AH) )調(diào) 用 格 式 : MOV DX,SEG BUF;存 放 字 符 串 的 段 地 址 MOV DS,DX LEA DX,BUF;存 放 字 符 串 的 首 偏 移 地 址 MOV AH,10 INT 21H功 能 : 從 鍵 盤(pán) 上 往 DS:DX所 指 的 輸 入 緩 沖 區(qū) 輸 入 以 回 車(chē) 鍵 結(jié) 束的 字 符 串 , 并 送 顯 示 器 顯 示 。對(duì) 緩 沖 區(qū) 的 要 求 :BUF DB 80 DB ? DB 80 DUP(0)
27、 ;第 一 個(gè) 字 節(jié) 存 放 緩 沖 區(qū) 大 小 , 不 能 為 0, 用 戶(hù) 確 定;第 二 個(gè) 字 節(jié) 存 放 實(shí) 際 輸 入 的 字 符 個(gè) 數(shù) , 系 統(tǒng) 填 入;從 鍵 盤(pán) 上 輸 入 字 符 串 從 第 三 個(gè) 字 節(jié) 存 放 ( 如 果 超 過(guò) 則 多 余 去 掉 , 響 鈴 告 警 ) DATA SEGMENT P DB 100 DB ? DB 100 DUP(?) M DB WHAT IS YOUR NAME?$DATA ENDSSTACK SEGMENT STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS
28、: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 21HCODE ENDS END S上 機(jī) 演 示在 屏 幕 上 顯 示 一 行 提 示 信 息 : “ WHAT IS YOUR NAME?” 串操作指令 串傳送指令 存入串指令 從串取指令 串比較指令 串掃描指令 1.MOVS 串 傳 送 指 令MOVS DEST, SRC可 以 用 無(wú) 操 作 數(shù) 指 令 代 替 :MOVSB ( 字 節(jié) )MOVSW ( 字 )
29、 例 : 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) 低 地
30、址高 地 址數(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 segmentmess1 db personal_computer;源 數(shù) 據(jù) 段datarea endsextra segmentmess2 db 17 dup (?); 目 的 段extra endscode segmentlea si, mess1 ; 源 數(shù) 據(jù) 段 首 地 址 lea di
31、, 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, DSTCMPSB ( 字 節(jié) )CMPSW ( 字 ) 執(zhí) 行 操 作 : (1) (SI) - (DI) 根 據(jù) 比 較 結(jié) 果 設(shè) 置 條 件 標(biāo) 志 位 : 相 等 ZF=1 不 等 ZF=0 (2) 字 節(jié) 操
32、 作 : (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, mess1lea di, mess2mov cx, 8cldrepe cmpsb;找 到 不 相 匹 配 的 字 節(jié) 時(shí) 停
33、 止;(di)、 (si)為 不 匹 配 字 符 位 置 SCASB ( 字 節(jié) )SCASW ( 字 ) 執(zhí) 行 操 作 : 字 節(jié) 操 作 : (AL) - (DI), (DI) (DI) 1 字 操 作 : (AX) - (DI), (DI) (DI) 23.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)
34、 重 復(fù) (1) (3) 例 :從 一 個(gè) 字 符 串 中 查 找 一 個(gè) 指 定 的 字 符mess db COMPUTERlea di, messmov al, Tmov cx, 8cldrepne scasb; 不 是 T則 重 復(fù)(DI): 相 匹 配 字 符 的 下 一 個(gè) 地 址 (CX): 剩 下 還 未 比 較 的 字 符 個(gè) 數(shù)COMPUTER(di) COMPUTER(di) 4.LODS取 串 指 令LODSB ( 字 節(jié) )LODSW ( 字 ) 執(zhí) 行 操 作 : 字 節(jié) 操 作 : (AL) (SI), (SI) (SI) 1 字 操 作 : (AX) (SI),
35、(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é)置為20Hlea di,
36、 mess2mov al, 20Hmov cx, 5cldrep 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)的常用指令希望大家就如
37、下幾個(gè)方面進(jìn)行一下總結(jié):操 作 數(shù) 尋 址 方 式 和 目 的 地 址 尋 址 方 式指 令 支 持 的 操 作 數(shù) 形 式常 用 指 令 的 助 記 符 和 功 能指 令 對(duì) 標(biāo) 志 的 影 響通過(guò)復(fù)習(xí)整理,形成指令系統(tǒng)的整體概念,進(jìn)而掌握常用指令 指 令 執(zhí) 行 指 令 執(zhí) 行 演 示 舉 例設(shè)CS=1000H,DS=1492HMOV AX,0064HADD AX,0100HMOV 2000H,AX指令執(zhí)行 目 的 地 址 相 對(duì) 尋 址 方 式 目 的 地 址 寄 存 器 段 內(nèi) 間 接 尋 址 方 式 目 的 地 址 存 儲(chǔ) 器 段 內(nèi) 間 接 尋 址 方 式 目 的 地 址 段 間
38、直 接 尋 址 方 式 目 的 地 址 存 儲(chǔ) 器 段 間 間 接 尋 址 方 式 條 件 轉(zhuǎn) 移 指 令 的 含 義JZ/JE Jump on Zero/EqualJNZ/JNE Jump on Not Zero/EqualJS Jump on SignJNS Jump on Not SignJP/JPE Jump on Parity/Parity EvenJNP/JPO Jump on Not Parity/Parity OddJO Jump on OverflowJNO Jump on Not OverflowJC/JB/JNAE Jump on Carry/Below/Not Abov
39、e or EqualJNC/JNB/JAE Jump on Not Carry/Not Below/Above or EqualJBE/JNA Jump on Below or Equal/Not AboveJNBE/JA Jump on Not Below or Equal/Above JL/JNGE Jump on Less/Not Greater or EqualJNL/JGE Jump on Not Less/Greater or EqualJLE/JNG Jump on Less or Equal/Not GreaterJNLE/JG Jump on Not Less or Equa
40、l/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í) 行
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案