《指令系統(tǒng)轉(zhuǎn)移指令》PPT課件
《《指令系統(tǒng)轉(zhuǎn)移指令》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《指令系統(tǒng)轉(zhuǎn)移指令》PPT課件(71頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 控 制 轉(zhuǎn) 移 類 指 令 控制轉(zhuǎn)移類指令用于實現(xiàn)分支、循環(huán)、過程等程序結(jié)構(gòu),是僅次于傳送指令的常用指令重點掌握: JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常 用 系 統(tǒng) 功 能 調(diào) 用 控 制 轉(zhuǎn) 移 類 指 令 通 過 改 變 IP( 和 CS) 值 ,實 現(xiàn) 程 序 執(zhí) 行 順 序 的 改 變 目 標 地 址 的 尋 址 方 式相對尋址方式指 令 代 碼 中 提 供 目 的 地 址 相 對 于 當 前 IP的 位 移量 , 轉(zhuǎn) 移 到 的 目 的 地 址 ( 轉(zhuǎn) 移 后 的 IP值 ) 就 是當 前 IP值 加 上 位 移 量直接尋址方式指 令 代
2、碼 中 提 供 目 的 邏 輯 地 址 , 轉(zhuǎn) 移 后 的 CS和IP值 直 接 來 自 指 令 操 作 碼 后 的 目 的 地 址 操 作 數(shù)間接尋址方式指 令 代 碼 中 指 示 寄 存 器 或 存 儲 單 元 , 目 的 地 址從 寄 存 器 或 存 儲 單 元 中 間 接 獲 得 用 標 號 表 達用 標 號 表 達用 寄 存 器 或 存 儲 器 操 作 數(shù) 表 達 目 標 地 址 的 尋 址 范 圍 : 段 內(nèi) 尋 址段內(nèi)轉(zhuǎn)移近轉(zhuǎn)移(near)在 當 前 代 碼 段 64KB范 圍 內(nèi) 轉(zhuǎn) 移( 32KB范 圍 )不 需 要 更 改 CS段 地 址 , 只 要 改 變 IP偏移 地
3、址段內(nèi)轉(zhuǎn)移短轉(zhuǎn)移(short)轉(zhuǎn) 移 范 圍 可 以 用 一 個 字 節(jié) 表 達 , 在 段內(nèi) 128 127范 圍 的 轉(zhuǎn) 移 代碼段代碼段 目 標 地 址 的 尋 址 范 圍 : 段 間 尋 址段間轉(zhuǎn)移遠轉(zhuǎn)移(far)從 當 前 代 碼 段 跳 轉(zhuǎn) 到 另 一 個 代 碼 段 ,可 以 在 1MB范 圍需 要 更 改 CS段 地 址 和 IP偏 移 地 址目 標 地 址 必 須 用 一 個 32位 數(shù) 表 達 , 叫做 32位 遠 指 針 , 它 就 是 邏 輯 地 址 代碼段代碼段 實 際 編 程 時 , 匯 編 程 序 會 根 據(jù) 目 標 地 址 的屬 性 , 自 動 處 理 成 短
4、轉(zhuǎn) 移 、 近 轉(zhuǎn) 移 或 遠 轉(zhuǎn) 移 程 序 員 可 用 操 作 符 short、 near ptr 或 far ptr 強 制 成 為 需 要 的 轉(zhuǎn) 移 類 型 無 條 件 轉(zhuǎn) 移 指 令只要執(zhí)行無條件轉(zhuǎn)移指令JMP,就使程序轉(zhuǎn)到指定的目標地址,從目標地址處開始執(zhí)行指令操作數(shù)label是要轉(zhuǎn)移到的目標地址(目的地址、轉(zhuǎn)移地址)JMP指令分成4種類型: 段 內(nèi) 轉(zhuǎn) 移 、 相 對 尋 址 段 內(nèi) 轉(zhuǎn) 移 、 間 接 尋 址 段 間 轉(zhuǎn) 移 、 直 接 尋 址 段 間 轉(zhuǎn) 移 、 間 接 尋 址JMP label ; 程 序 轉(zhuǎn) 向 label標 號 指 定 的 地 址 無 條 件 轉(zhuǎn) 移
5、指 令 JMP( jump) JMP label ;段內(nèi)轉(zhuǎn)移、相對尋址;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í)行l(wèi)abel是一個標號、一個8位位移量,表示Jcc指令后的那條指令的偏移地址,到目標
6、指令的偏移地址的地址位移label只支持短轉(zhuǎn)移的相對尋址方式 Jcc指 令 的 分 類Jcc指令不影響標志,但要利用標志(表2-4)根據(jù)利用的標志位不同,分成三種情況: 判 斷 單 個 標 志 位 狀 態(tài) 比 較 無 符 號 數(shù) 高 低 比 較 有 符 號 數(shù) 大 小 Jcc指 令 實 際 雖 然 只 有 16條 , 但 卻 有 30個 助 記 符 采 用 多 個 助 記 符 , 目 的 是 為 了 方 便 記 憶 和 使 用 1. 判 斷 單 個 標 志 位 狀 態(tài) JZ/JE和 JNZ/JNE利 用 零 標 志 ZF, 判 斷 結(jié) 果 是 否 為 零 ( 或 相 等 ) JS和 JNS利
7、用 符 號 標 志 SF, 判 斷 結(jié) 果 是 正 是 負 JO和 JNO利 用 溢 出 標 志 OF, 判 斷 結(jié) 果 是 否 產(chǎn) 生 溢 出 JP/JPE和 JNP/JPO利 用 奇 偶 標 志 PF, 判 斷 結(jié) 果 中 “ 1”的 個 數(shù) 是 偶 是 奇 JC/JB/JNAE和 JNC/JNB/JAE利 用 進 位 標 志 CF, 判 斷 結(jié) 果 是 否 進 位 或 借 位 例 題 2題目:將AX中存放的無符號數(shù)除以2,如果是奇數(shù)則加1后除以2問題:如何判斷AX中的數(shù)據(jù)是奇數(shù)還是偶數(shù)?解答:判斷AX最低位是“0”(偶數(shù)),還是“1”(奇數(shù))??梢杂梦徊僮黝愔噶?:用邏輯與指令將除最低位
8、外的其他位變成0,保留最低位不變。判斷這個數(shù)據(jù)是0,AX就是偶數(shù);否則,為奇數(shù)2:將最低位用移位指令移至進位標志,判斷進位標志是0,AX就是偶數(shù);否則,為奇數(shù)3:將最低位用移位指令移至最高位(符號位),判斷符號標志是0,AX就是偶數(shù);否則,為奇數(shù) 例 題 2解 答 1 用 JZ指 令 實 現(xiàn)test ax,01h;測試AX的最低位D0(不用AND指令,以免改變AX)jz even;標志ZF1,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移add ax,1;標志ZF0,即D01:AX內(nèi)的奇數(shù),加1even: shr ax,1;AXAX2用 右 移 一 位 的 方 法 實 現(xiàn) 除 以 2。本 例 中 用 RCR
9、指 令 比 SHR指 令 更 好 。 例 題 2解 答 2 用 JNC指 令 實 現(xiàn)mov bx,axshr bx,1;將AX的最低位D0移進CFjnc even;標志CF0,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移add ax,1;標志CF1,即D01:AX內(nèi)的奇數(shù),加1even: shr ax,1;AXAX2還 可 用 SAR、 ROR和 RCR指 令 例 題 2解 答 3 用 JNS指 令 實 現(xiàn)mov bx,axror bx,1;將AX的最低位D0移進最高位(符號位SF)jns even;標志SF0,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移add ax,1;標志SF1,即D01:AX內(nèi)的奇數(shù),加1ev
10、en: shr ax,1;AXAX2錯 誤 ! 循 環(huán) 指 令 不 影 響 SF等 標 志ADD BX,0 ; 增 加 一 條 指 令 例 判 斷 是 否 為 字 母 Y;寄存器AL中是字母Y(含大小寫),則令AH0,否則令AH1cmp al,y;比較AL與小寫字母yje next;相等,轉(zhuǎn)移cmp al,Y ;不相等,;繼續(xù)比較AL與大寫字母Yje next;相等,轉(zhuǎn)移mov ah,-1;不相等,令AH1jmp done;無條件轉(zhuǎn)移指令next: mov ah,0;相等的處理:令AH0done: 例 偶 校 驗;對DL寄存器中8位數(shù)據(jù)進行偶校驗;校驗位存入CF標志test dl,0ffh;使
11、CF0,同時設置PF標志jpe done;DL中“1”的個數(shù)為偶數(shù);正好CF0,轉(zhuǎn)向donestc;DL中“1”的個數(shù)為奇數(shù),設置CF1done: ;完成 2. 比 較 無 符 號 數(shù) 高 低無符號數(shù)的大小用高(Above)、低(Below)表示,需要利用CF確定高低、利用ZF標志確定相等(Equal)兩數(shù)的高低分成4種關(guān)系,對應4條指令JB(JNAE):目的操作數(shù)(=)源操作數(shù)JBE(JNA):目的操作數(shù)()源操作數(shù) 3. 比 較 有 符 號 數(shù) 大 小判斷有符號數(shù)的大(Greater)、?。↙ess),需要組合OF、SF標志、并利用ZF標志確定相等與否兩數(shù)的大小分成4種關(guān)系,分別對應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存 放 的 是 有 符 號 數(shù) ,則 條 件 轉(zhuǎn) 移 指 令 應 采 用 JGE指 令 例 求 較 大 值 ( 另 解 )cmp ax,bx;比較AX和BXjae nextmov wmax, bx;若AXBX,wmaxBXjmp donenext: mov wmax,ax;若AXBX,wmaxAXdone: 例 求 較 大
13、值 ( 另 解 對 比 )cmp ax,bx;比較AX和BXjbe nextmov wmax, ax;若AXBX,wmaxAXjmp donenext: mov wmax,bx;若AXBX,wmaxBXdone: 循 環(huán) 指 令一段代碼序列多次重復執(zhí)行就是循環(huán)8088設計有針對CX計數(shù)器的計數(shù)循環(huán)指令LOOP label;循環(huán)指令;首先CXCX1;然后判斷;若CX0,轉(zhuǎn)移JCXZ label;如果CX0,則轉(zhuǎn)移label操作數(shù)采用相對短尋址方式還有LOOPZ/LOOPE和LOOPNZ/LOOPNE兩條指令dec cxjnz label LOOPELOOPZ指令 指令格式: LOOPE labe
14、l 或者 LOOPZ label 執(zhí)行 LOOPELOOPZ 指令,在進行循環(huán)次數(shù)的計數(shù)(即CX (CX)1后,若(CX)0且 ZF1,則轉(zhuǎn)移到目標單元label ,否則順序執(zhí)行 LOOPNELOOPNZ指令指令格式: LOOPNE label 或者 LOOPNZ label執(zhí)行LOOPNELOOPNZ指令,在進行循環(huán)次數(shù)的計數(shù)(即CX (CX)-1后,如(CX)0且ZF0,則轉(zhuǎn)移到目標單元label,否則順序執(zhí)行。 例 數(shù) 據(jù) 塊 傳 送 ( 字 節(jié) )mov cx,400h;設置循環(huán)次數(shù):1K1024400Hmov si,offset sbuf;設置循環(huán)初值:SI指向數(shù)據(jù)段源緩沖區(qū)開始mo
15、v di,offset dbuf;DI指向附加段目的緩沖區(qū)開始(附加段)again: mov al,si;循環(huán)體:實現(xiàn)數(shù)據(jù)傳送mov es:di,al;每次傳送一個字節(jié)inc si;SI和DI指向下一個單元inc diloop again;循環(huán)條件判定:循環(huán)次數(shù)減1,不為0轉(zhuǎn)移(循環(huán)) 例 數(shù) 據(jù) 塊 傳 送 ( 字 )mov cx,200h;設置循環(huán)次數(shù):1K2200Hmov si,offset sbuf;設置循環(huán)初值:SI指向數(shù)據(jù)段源緩沖區(qū)開始mov di,offset dbuf;DI指向附加段目的緩沖區(qū)開始(附加段)again: mov ax,si;循環(huán)體:實現(xiàn)數(shù)據(jù)傳送mov es:di
16、,ax;每次傳送一個字add si,2;指向下一個(字)單元add di,2loop again;循環(huán)條件判定:循環(huán)次數(shù)減1,不為0轉(zhuǎn)移(循環(huán)) 例 在存儲器的數(shù)據(jù)段中連續(xù)存放了100個8位帶符號數(shù),數(shù)據(jù)塊的首地址為2000H。試編寫程序統(tǒng)計其中負數(shù)的個數(shù) ,并將個數(shù)存放到字節(jié)單元MINUS中。分析: 為統(tǒng)計負數(shù)的個數(shù),可先將MINUS清零然后將數(shù)據(jù)塊中的帶符號數(shù)逐個取入AL寄存器并使其影響標志位,再利用JS或JNS條件轉(zhuǎn)移指令進行統(tǒng)計。 MOV MINUS, 0 ; MINUS單 元 清 零MOV SI, 2000H ; 將 數(shù) 據(jù) 塊 首 地 址 ( SI)MOV CX, 100 ; 數(shù)
17、據(jù) 塊 長 度 ( 循 環(huán) 次 數(shù) ) ( CX)AGAIN: MOV AL, SI ; 取 一 個 數(shù) 到 ALOR AL, AL ; 使 數(shù) 據(jù) 影 響 標 志 位 而 其 數(shù) 值 不 變JNS NO_M ; 若 不 為 負 數(shù) , 則 轉(zhuǎn) 移 到 NO_MINC MINUS ; 否 則 為 負 數(shù) , MINUS單 元 加 1NO_M :INC SI LOOP AGAIN ; CX減 1, 若 不 為 0, 則 轉(zhuǎn) 移 到 AGAINHLT ; 停 止 子 程 序 指 令子程序是完成特定功能的一段程序當主程序(調(diào)用程序)需要執(zhí)行這個功能時,采用CALL調(diào)用指令轉(zhuǎn)移到該子程序的起始處執(zhí)行當
18、運行完子程序功能后,采用RET返回指令回到主程序繼續(xù)執(zhí)行演 示 轉(zhuǎn) 移 指 令 有 去 無 回 子 程 序 調(diào) 用 需 要 返 回 ,其 中 利 用 堆 棧 保 存 返 回 地 址 1. 子 程 序 調(diào) 用 指 令 CALLCALL指 令 分 成 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指 令 需 要 保 存 返 回 地 址
19、 :n 段 內(nèi) 調(diào) 用 當 前 偏 移 地 址 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) 和 段 間 、 有 無 參 數(shù) , 分 成 4種 類 型RET ; 無 參 數(shù) 段 內(nèi) 返 回RET i16 ; 有 參 數(shù) 段 內(nèi) 返 回RET ; 無 參 數(shù) 段 間 返 回RET i16 ; 有 參 數(shù) 段 間 返 回需 要 彈 出 CALL指 令 壓 入 堆 棧 的 返 回 地 址n 段 內(nèi) 返 回 出 棧 偏 移 地 址 IPIPSS:SP, SPSP 2n 段 間 返 回 出 棧 偏 移 地 址 IP和 段 地 址 CSIPSS:SP, SPSP 2CSSS:SP, SPSP 2 例 十 六 進 制 轉(zhuǎn) 換 為 ASCII碼 的 子 程 序;子程序:將DL低4位的一
21、位16進制數(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個中斷,每
22、個中斷用一個編號(中斷向量號)區(qū)別中斷指令有3條:INT n IRET INTO本節(jié)主要掌握類似子程序調(diào)用指令的中斷調(diào)用指令I(lǐng)NT n,進而掌握系統(tǒng)功能調(diào)用 中 斷 指 令I(lǐng)NT n;中斷調(diào)用指令:產(chǎn)生n號中斷;主程序使用,其中n表示中斷向量號IRET;中斷返回指令:實現(xiàn)中斷返回;中斷服務程序使用 標 志 處 理 指 令 : CLC CF 0 CMC CF CF STC CF 1 CLD DF 0 STD DF 1 CLI IF 0 STI IF 1 注 意 : * 只 影 響 本 指 令 指 定 的 標 志處 理 機 控 制 指 令 其 他 處 理 機 控 制 指 令 : NOP 無 操 作
23、 (機 器 碼 占 一 個 字 節(jié) ) HLT 暫 停 機 (等 待 一 次 外 中 斷 , 之 后 繼 續(xù) 執(zhí) 行 程 序 ) WAIT 等 待 (等 待 外 中 斷 , 之 后 仍 繼 續(xù) 等 待 ) ESC mem 換 碼 ( (mem) 數(shù) 據(jù) 總 線 ) LOCK 封 鎖 (維 持 總 線 的 鎖 存 信 號 , 直 到 其 后 的 指 令 執(zhí) 行 完 ) 注 意 : * 不 影 響 條 件 標 志 調(diào) 用 的 一 般 過 程 : 功 能 編 號 AH, 置 入 口 參 數(shù) 執(zhí) 行 軟 中 斷 語 句 INT 21H常 用 的 dos系 統(tǒng) 功 能 調(diào) 用 :1.鍵 盤 輸 入 (
24、調(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,0DH MOV AH,2 INT 21H MOV DL,0AH INT 21H 顯 示
25、回 車顯 示 換 行 3.顯 示 字 符 串 ( 功 能 調(diào) 用 號 9)功 能 : 將 當 前 數(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
26、 INT 21H 輸 出 字 符 串 HOW DO YOU DO? 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)
27、 ;第 一 個 字 節(jié) 存 放 緩 沖 區(qū) 大 小 , 不 能 為 0, 用 戶 確 定;第 二 個 字 節(jié) 存 放 實 際 輸 入 的 字 符 個 數(shù) , 系 統(tǒng) 填 入;從 鍵 盤 上 輸 入 字 符 串 從 第 三 個 字 節(jié) 存 放 ( 如 果 超 過 則 多 余 去 掉 , 響 鈴 告 警 ) 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上 機 演 示在 屏 幕 上 顯 示 一 行 提 示 信 息 : “ WHAT IS YOUR NAME?” 串操作指令 串傳送指令 存入串指令 從串取指令 串比較指令 串掃描指令 1.MOVS 串 傳 送 指 令MOVS DEST, SRC可 以 用 無 操 作 數(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 方向標志DF=0時用 +,DF=1時用 - 。 REP MOVS:將數(shù)據(jù)段中的整串數(shù)據(jù)傳送到附加段中。 源串(數(shù)據(jù)段) 目的串(附加段) 執(zhí)行REP MOVS之前,應先做好: ( 1) 源 串 首 地 址 SI ( 2) 目 的 串 首 地 址 DI ( 3) 串 長 度 CX ( 4) 建 立 方 向 標 志 ( 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) 重復(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ù) 長 度 17個 字 節(jié) cld ; DF=0 rep movsb ;開 始 傳 送 字 節(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é) 果 設 置 條 件 標 志 位 : 相 等 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) 重復(1) (3) 例: 比較兩個字符串,找出它們不相匹配的字節(jié)位置 lea si, mess1lea di, mess2mov cx, 8cldrepe cmpsb;找 到 不 相 匹 配 的 字 節(jié) 時 停
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、 重 復 (1) (3) 例 :從 一 個 字 符 串 中 查 找 一 個 指 定 的 字 符mess db COMPUTERlea di, messmov al, Tmov cx, 8cldrepne scasb; 不 是 T則 重 復(DI): 相 匹 配 字 符 的 下 一 個 地 址 (CX): 剩 下 還 未 比 較 的 字 符 個 數(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) 重 復 (1) (3)5.STOS存 串 指 令 例:把mess2緩沖區(qū)的5個字節(jié)置為20Hlea di,
36、 mess2mov al, 20Hmov cx, 5cldrep stosb; cx=0時 停 止 教 學 要 求了解8088/8086微處理器基本結(jié)構(gòu)掌握8088/8086的寄存器結(jié)構(gòu)、存儲器結(jié)構(gòu)和尋址方式熟悉匯編語言的語句格式,掌握8088/8086基本指令:數(shù)據(jù)傳送:MOVXCHGXLAT、PUSHPOP、LEA加減運算:ADDSUB、ADCSBB、CMP、INCDEC邏輯運算:ANDORXORNOTTEST、移位指令:SHLSHRSAR、ROLRORRCLRCR控制轉(zhuǎn)移:JMPJccLOOP、CALLRET、INT n 總 結(jié)本章展開了8088CPU16位指令系統(tǒng)的常用指令希望大家就如
37、下幾個方面進行一下總結(jié):操 作 數(shù) 尋 址 方 式 和 目 的 地 址 尋 址 方 式指 令 支 持 的 操 作 數(shù) 形 式常 用 指 令 的 助 記 符 和 功 能指 令 對 標 志 的 影 響通過復習整理,形成指令系統(tǒng)的整體概念,進而掌握常用指令 指 令 執(zhí) 行 指 令 執(zhí) 行 演 示 舉 例設CS=1000H,DS=1492HMOV AX,0064HADD AX,0100HMOV 2000H,AX指令執(zhí)行 目 的 地 址 相 對 尋 址 方 式 目 的 地 址 寄 存 器 段 內(nèi) 間 接 尋 址 方 式 目 的 地 址 存 儲 器 段 內(nèi) 間 接 尋 址 方 式 目 的 地 址 段 間
38、直 接 尋 址 方 式 目 的 地 址 存 儲 器 段 間 間 接 尋 址 方 式 條 件 轉(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 奇 偶 校 驗奇偶校驗是計算機中最常使用的校驗方法,因為不論用硬件還是用軟件都很容易實現(xiàn)偶校驗:如果數(shù)據(jù)中“1”的個數(shù)不是偶數(shù),則校驗位是1,使得包括校驗位在內(nèi)的數(shù)據(jù)中“1”的個數(shù)為偶數(shù);否則,校驗位為0奇校驗:如果數(shù)據(jù)中“1”的個數(shù)不是奇數(shù),則校驗位是1,使得包括校驗位在內(nèi)的數(shù)據(jù)中“1”的個數(shù)為奇數(shù);否則,校驗位為0 主 程 序 與 子 程 序CALL label主 程 序 RET子 程 序回 到 CALL指 令 后 的 指 令處 返 回 地 址 十 六 進 制 數(shù) 轉(zhuǎn) 換 為 ASCII碼 的 原 理 主 程 序 與 中 斷 服 務 程 序主 程 序 IRET中 斷 服 務 程 序斷 點 中 斷 請 求 中 斷 請 求 可 以 來 自 處 理 器 外 部 的 中 斷 源 ,也 可 以 由 處 理 器 執(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高分級膠質(zhì)瘤的放化綜合治療
- 痙攣和攣縮專題知識講座
- 駕考上海梅隴考場科目二注意事項
- 神經(jīng)系統(tǒng)病例分析
- 幼兒園環(huán)境衛(wèi)生
- 中小企業(yè)境內(nèi)外上市相關(guān)準備
- 中小企業(yè)信息化服務包MAS類業(yè)務推廣演示材料
- 2022年績效考核指標設計
- _SSL_VN賣點與競爭策略
- 建筑工程識圖與構(gòu)造 第章 樓板與地面
- TP3創(chuàng)建及管理數(shù)據(jù)庫表課件
- TACE術(shù)后并發(fā)肝膿腫課件
- S技術(shù)的集成及其應用上課改良版課件
- (呂昂凱)存款產(chǎn)品的創(chuàng)新
- 運城—侯馬—臨汾沿途講解課件