《《微型計算機原理與接口技術》第3章8088指令系統(tǒng)4邏輯運算和移位指令》由會員分享,可在線閱讀,更多相關《《微型計算機原理與接口技術》第3章8088指令系統(tǒng)4邏輯運算和移位指令(39頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1 1.邏 輯 運 算 指 令 (與 /或 /異 或 /非 ) 運 算 規(guī) 則 : 按 位 操 作 , 無 進 /借 位 可 對 8位 或 16位 的 寄 存 器 或 存 儲 器 中 的 內(nèi) 容 進行 按 位 操 作 對 標 志 位 的 影 響 (除 NOT指 令 外 ): CF OF SF ZF PF AF 0 0 * * * 不定 根據(jù)運算結果設置 注意: 非 指 令 NOT對標志無影響 2 3 (1) 邏 輯 ” 與 ” AND對 兩 個 操 作 數(shù) 進 行 按 位 邏 輯 “ 與 ” 操 作 。格 式 : AND dest, src用 途 : 實 現(xiàn) 兩 操 作 數(shù) 按 位 相 與 。
2、 保 留 操 作 數(shù) 的 某 幾 位 , 清 零 其 他 位 。 使 操 作 數(shù) 不 變 , 得 影 響 6個 標 志 位 , 并 使 CF=OF=O 。例 1: 保 留 AL中 低 4位 , 高 4位 清 0。 AND AL, 0FH例 2: 4 例 3: 測 試 AL的 bit7,bit5,bit2是 否 都 是 1。AND AL, 10100100BCMP AL, 10100100B JZ YES ; if match, go to YES ; if not matchYES: ; goes here if all 1 5 格 式 : OR dest, src用 途 : 實 現(xiàn) 兩 操
3、作 數(shù) 按 位 相 或 。 例 : OR BX, AL 保 留 操 作 數(shù) 的 某 幾 位 , 其 他 位 置 1。 例 : OR AL, 20H; 將 AL的 BIT5位 置 1。 使 操 作 數(shù) 不 變 , 但 影 響 6個 標 志 位 ,并 使 CF=OF=O 。 例 : OR AX, AX; AX中 的 內(nèi) 容 不 變 , 但 影響 6個 狀 態(tài) 標 志 位(2) 邏 輯 ” 或 ” OR 6 格 式 NOT mem/reg(3) 邏 輯 “ 非 ” (取 反 ) NOT 7 (4) 邏 輯 ” 異 或 ” XOR 8 (5) 測 試 指 令 TEST 9 表 3-4 移 位 操 作
4、類 指 令2.移 位 指 令 10移 位 指 令 功 能 示 意C M SAR C M SHR 0 C M SAL 0 C M SHL 0 C RCR C RCL C ROR C ROL C進位標志;M最高位(符號位) 11 2.移 位 指 令 CL ;移 位 位 數(shù) 1時1 ;移 位 位 數(shù) =1時 12 最 低 位最 高 位CF 0(a)算 術 /邏 輯 左 移 SAL/SHL最 低 位最 高 位CF (b)算 術 右 移 SAR 最 低 位最 高 位CF (c)邏 輯 右 移 SHR0非 循 環(huán) 移 位 指 令 功 能 示 意 圖 13 14 15 16 最 低 位最 高 位 (a) R
5、OLCF 最 低 位最 高 位 (c) RCLCF最 低 位最 高 位 (b) RORCF 最 低 位最 高 位 (d) RCRCF循 環(huán) 移 位 指 令 功 能 示 意 圖 17 CF 18 CF 19 1000 1110 0 20 CF 21 22 23自 動 循 環(huán) -加 前 綴REP REPE/REPZ REPNE/REPNZ(a) 方 向 標 志 DF=0 (b)方 向 標 志 位 DF=1 24REP CX0 時 重 復 執(zhí) 行REPE/REPZ CX0 ZF=1時 重 復 執(zhí) 行REPNE/REPNZ CX0 ZF=0時 重 復 執(zhí) 行 25 表 3 5 串 操 作 指 令 26
6、 串指令使用的一般方法:設 置 源 串 地 址設 置 目 標 串 地 址設 置 串 長 度設 置 操 作 方 向 DF串 指 令 MOV SI, 源 串 首 地 址( 或 LEA SI, 源 串 )MOV DI, 目 的 串 首 地 址( 或 LEA DI, 目 的 串 )MOV CX, 串 長 度CLD( 或 STD)串 指 令注 意 : DS與 ES一 般 在 完 整 程 序 的 開 始 處 設 置 , 在 此 串 指 令 的 程 序 段 中 不 必 重 復 設 置 27 28 29 指 令 執(zhí) 行 的 操 作 為 :CMPSB: CMPSW: 比 較 的 結 果 只 反 映 在 標 志
7、位 上 , 串 本 身 無 變 化 。本 指 令 可 用 來 檢 查 兩 個 串 是 否 相 等 。格 式 : CMPS OPRD1, OPRD2 CMPSB CMPSW 30 JZ STOP ; 若 ZF=1, 表 示 兩 數(shù) 據(jù) 串 相 等 , 轉 STOP DEC SI ; 否 則 SI-1, 指 向 不 相 等 單 元 MOV BX, SI ; BX 不 相 等 單 元 的 地 址 MOV AL, SI ; AL 不 相 等 單 元 內(nèi) 容STOP: HLT LEA SI, MEM1 ;SI 源 串 首 地 址LEA DI, MEM2 ; DI 目 標 串 首 地 址MOV CX, 2
8、00 ; CX 串 長 度CLD ; DF=0, 使 地 址 指 針 按 增 量 方 向 修 改REPE CMPSB ; 若 相 等 則 重 復 比 較 31 執(zhí) 行 的 操 作 : 對 字 節(jié) : AL ES:DI DIDI 對 字 : AX ES:DI 1DI DI DI 搜 索 指 令 執(zhí) 行 的 仍 是 比 較 (減 法 )操 作 ,結 果 只影 響 標 志 位 。 要 搜 索 的 關 鍵 字 放 在 AL(字 節(jié) )或 AX(字 )中 。格 式 : SCAS OPRD SCASB SCASW 32 進 行 連 續(xù) 掃描 比 較 :若 前 綴 為 REPZ, 則 表 示 比 較 結 果
9、 相 等 且(ZF=1)且 串 未 結 束 (CX 0),則 繼 續(xù) 比 較 。若 前 綴 為 REPNZ, 則 表 示 比 較 結 果 不 相 等(ZF=0)且 串 未 結 束 (CX 0)就 繼 續(xù) 比 較 。 33 例 : 在 ES段 的 偏 移 1000H開 始 處 存 有 10個 ASCII碼 。搜 索 E, 若 找 到 則 記 下 搜 索 次 數(shù) 及 存 放 地 址 , 并在 屏 幕 上 顯 示 Y; 若 未 找 到 則 顯 示 N。 (見 右圖 ) 1000H 414243444546 A B CDF. . .ES段 E 34 MOV DI, 1000H ; (DI)串 偏 移
10、地 址 MOV CX, 0AH ; (CX)串 長 度 MOV AL, E ; 搜 索 關 鍵 字 =E CLD ; 從 低 地 址 到 高 地 址 進 行 搜 索 REPNZ SCASB ; 若 未 找 到 , 繼 續(xù) 搜 索 JZ FOUND ; 找 到 , 轉 至 FOUND MOV DL, N ; 串 中 無 E, (DL)N JMP DONE ; 轉 至 DONEFOUND:DEC DI ; 指 針 回 退 MOV ADDR, DI ; ADDRE的 地 址 SUB DI, 1000H MOV NUM, DI ; NUM搜 索 次 數(shù) MOV DL, Y ; (DL)YDONE: M
11、OV AH, 2 INT 21H ; 顯 示 字 符 HLT 35 格 式 : LODS OPRD LODSB LODSW 36 LEA SI,SUM+3 ; (SI)SUM+3 MOV CX,4 ; (CX)和 長 度 STD ; 置 DF=1,減 量 修 改 SI MOV AH,02 ; (AH)功 能 號LP: LODSB ; 取 BCD碼 至 AL,且 SISI-1 ADD AL,30H ; 轉 換 為 ASCII碼 MOV DL,AL ; (DL)字 符 INT 21H ; 顯 示 字 符 DEC CX JNZ LP 37 格 式 : STOS OPRD STOSB STOSW 38 39 例 2: 把 1000H開 始 的 100個 存 儲 單 元 填 入 ASCII碼 2AH(*)。 MOV DI, 1000H MOV CX, 64H MOV AL, 2AHAGAIN: MOV DI, AL INC DI DEC CX JNZ AGAIN HLT請 對 比