《單片機原理》第二章
《《單片機原理》第二章》由會員分享,可在線閱讀,更多相關《《單片機原理》第二章(159頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、目 錄 第 2章 MCS-51指 令 系 統(tǒng) 與 匯 編 語 言 程 序 設 計2.1 概 述2.2 尋 址 方 式2.3 MCS-51指 令 系 統(tǒng)2.4 匯 編 語 言 程 序 設 計2.5 高 級 語 言 Keil C51簡 介 目 錄 2.1 概 述2.1.1 單 片 機 程 序 設 計 語 言 的 種 類2.1.2 匯 編 語 言 指 令 格 式 及 常 用 偽 指 令2.1.3 MCS-51指 令 的 分 類2.1.4 MCS-51指 令 中 常 用 的 符 號 目 錄 2.1 概 述2.1.1 單 片 機 程 序 設 計 語 言 的 種 類按 照 語 言 的 結(jié) 構 及 其 功
2、能 可 以 分 為 三 種 :( 1) 機 器 語 言 ( Machine Language) 直 接 用 機 器 碼 ( 0、 1代 碼 ) 編 寫 程 序 、 能 夠 為 計 算 機 直接 執(zhí) 行 的 機 器 級 語 言 。 機 器 碼 是 一 串 由 二 進 制 代 碼 “ 0”和 “ 1”組 成 的 二 進 制 數(shù)據(jù) , 其 執(zhí) 行 速 度 快 , 但 是 可 讀 性 極 差 。 機 器 語 言 一 般 只 在 簡單 的 開 發(fā) 裝 置 中 使 用 , 程 序 的 設 計 、 輸 入 、 修 改 和 調(diào) 試 都 很 麻 煩 。 機 器 語 言匯 編 語 言高 級 語 言 目 錄 2.1
3、 概 述( 2) 匯 編 語 言 ( Assembly Language) 指 用 指 令 助 記 符 代 替 機 器 碼 的 編 程 語 言 。 匯 編 語 言 程 序 結(jié) 構 簡 單 , 執(zhí) 行 速 度 快 , 程 序 易 優(yōu) 化 , 編譯 后 占 用 存 儲 空 間 小 , 是 單 片 機 應 用 系 統(tǒng) 開 發(fā) 中 最 常 用 的 程序 設 計 語 言 。 匯 編 語 言 的 缺 點 是 可 讀 性 比 較 差 , 只 有 熟 悉 單 片 機 的 指 令 系 統(tǒng) , 并 具 有 一 定 的 程 序 設 計 經(jīng) 驗 , 才 能 研 制 出功 能 復 雜 的 應 用 程 序 。2.1.1
4、單 片 機 程 序 設 計 語 言 的 種 類按 照 語 言 的 結(jié) 構 及 其 功 能 可 以 分 為 三 種 :機 器 語 言匯 編 語 言高 級 語 言 目 錄 2.1 概 述( 3) 高 級 語 言 ( High-Level Language) 在 匯 編 語 言 的 基 礎 上 用 接 近 人 的 自 然 語 言 的 語 句 來 編 寫程 序 , 例 如 PL/M-51、 C51等 , 程 序 可 讀 性 強 , 通 用 性 好 ,適 用 于 不 熟 悉 單 片 機 指 令 系 統(tǒng) 的 的 用 戶 。 高 級 語 言 是 面 向 過 程 而 獨 立 于 機 器 的 通 用 語 言 。
5、 缺 點 是 實 時 性 不 高 , 結(jié) 構 不 緊 湊 , 編 譯 后 占 用 存 儲 空 間 比 較 大 , 這一 點 在 存 儲 器 有 限 的 單 片 機 應 用 系 統(tǒng) 中 沒 有 優(yōu) 勢 。 單 片 機 的 匯 編 語 言 不 但不 會 被 高 級 語 言 完 全 取 代 ,甚 至 還 將 繼 續(xù) 占 據(jù) 重 要 地 位 。2.12.1.1 單 片 機 程 序 設 計 語 言 的 種 類按 照 語 言 的 結(jié) 構 及 其 功 能 可 以 分 為 三 種 :機 器 語 言匯 編 語 言高 級 語 言 目 錄 2.1 概 述2.1.2 匯 編 語 言 指 令 格 式 及 常 用 偽 指
6、 令1、 常 用 單 位 與 術 語 位 ( bit) : 位 是 計 算 機 所 能 表 示 的 最 小 的 、 最 基 本 的 數(shù) 據(jù) 單 位 , 通 常 是 指 一 個 二 進 制 位 。 字 節(jié) ( Byte) : 一 個 連 續(xù) 的 8位 二 進 制 數(shù) 碼 稱 為 一 個 字 節(jié) , 即 1Byte=8bit。 字 ( Word) : 通 常 由 16位 二 進 制 數(shù) 碼 組 成 , 即 1Word=2Byte。 字 長 : 字 長 是 指 計 算 機 一 次 處 理 二 進 制 數(shù) 碼 位 的 多 少 。 MCS-51型 單 片 機 是 8位 機 , 即 它 的 字 長 為 8
7、位 。 目 錄 2、 匯 編 語 言 指 令 格 式 標 號 : 操 作 碼 操 作 數(shù) ,操 作 數(shù) ;注 釋 2.1 概 述2.1.2 匯 編 語 言 指 令 格 式 及 常 用 偽 指 令其 中 : 項 是 可 選 項 。標 號 : 指 本 條 指 令 起 始 地 址 的 符 號 , 也 稱 為 指 令 的 符 號 地 址 。 代 表 該 條 指 令 在 程 序 編 譯 時 的 具 體 地 址 。操 作 碼 : 又 稱 助 記 符 , 它 是 由 對 應 的 英 文 縮 寫 構 成 的 , 是 指 令 語 句 的 關 鍵 。 它 規(guī) 定 了 指 令 具 體 的 操 作 功 能 , 是 一
8、 條 指 令 中 不 可 缺 少 的 內(nèi) 容 。操 作 數(shù) : 它 既 可 以 是 一 個 具 體 的 數(shù) 據(jù) , 也 可 以 是 存 放 數(shù) 據(jù) 的 地 址 。Start: MOV A, #0FH; 將 循 環(huán) 次 數(shù) 初 值 送 累 加 器 目 錄 3、 常 用 偽 指 令 2.1 概 述2.1.2 匯 編 語 言 指 令 格 式 及 常 用 偽 指 令 偽 指 令 ( 也 稱 為 匯 編 程 序 的 控 制 命 令 ) 是 程 序 員 發(fā) 給匯 編 程 序 的 命 令 , 用 來 設 置 符 號 值 、 保 留 和 初 始 化 存 儲 空間 、 控 制 用 戶 程 序 代 碼 的 位 置
9、 。 偽 指 令 只 出 現(xiàn) 在 匯 編 前 的 源 程 序 中 , 僅 提 供 匯 編 用 的某 些 控 制 信 息 , 不 產(chǎn) 生 可 執(zhí) 行 的 目 標 代 碼 , 是 CPU不 能 執(zhí)行 的 指 令 。 目 錄 ( 2) 結(jié) 束 匯 編 偽 指 令 END 格 式 : 標 號 : END 表 達 式 功 能 : 放 在 源 程 序 的 末 尾 , 表 明 源 程 序 的 匯 編 到 此 結(jié) 束 。 2.1 概 述 ( 1) 定 位 偽 指 令 ORG 格 式 : ORG n 其 中 : n為 絕 對 地 址 , 可 以 是 十 六 進 制 數(shù) 、 標 號 或 表 達 式 。例 ORG
10、1000H START: MOV A, #20H MOV R0, #30H MOVX DPTR, A END3、 常 用 偽 指 令 2.1.2 匯 編 語 言 指 令 格 式 及 常 用 偽 指 令 目 錄 ( 3) 賦 值 偽 指 令 EQU 格 式 : 字 符 名 稱 x EQU 賦 值 項 n 功 能 : 將 賦 值 項 n的 值 賦 予 字 符 名 稱 x。2.1 概 述 ORG 1000HLEDMAP: DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h DB 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h;LEDBuf
11、 EQU 60h ; 顯 示 緩 沖( 4) 定 義 字 節(jié) 偽 指 令 DB 格 式 : 標 號 : DB x1, x2, xn 功 能 : 將 8位 數(shù) 據(jù) ( 或 8位 數(shù) 據(jù) 組 ) x1, x2, xn順 序 存 放 在 從 當 前 程 序 存 儲 器 地 址 開 始 的 存 儲 單 元 中 。 2.1 3、 常 用 偽 指 令 2.1.2 匯 編 語 言 指 令 格 式 及 常 用 偽 指 令 目 錄 1、 按 指 令 字 節(jié) 數(shù) 分 類 單 字 節(jié) 指 令 、 雙 字 節(jié) 指 令 和 三 字 節(jié) 指 令 。2.1 概 述字 節(jié) 執(zhí) 行 時 間單 字 節(jié) 指 令 49條 1個 機
12、器 周 期 指 令 64條雙 字 節(jié) 指 令 46條 2個 機 器 周 期 指 令 45條三 字 節(jié) 指 令 16條 4個 機 器 周 期 指 令 2條2.1.3 MCS-51指 令 的 分 類 MCS-51指 令 系 統(tǒng) 有 111條 指 令 , 可 按 下 列 3種 方 式 分 類 :2、 按 指 令 執(zhí) 行 時 間 分 類 單 機 器 周 期 指 令 、 雙 機 器 周 期 指 令 和 四 機 器 周 期 指 令 。 目 錄 1、 按 指 令 字 節(jié) 數(shù) 分 類 2.1 概 述2、 按 指 令 執(zhí) 行 時 間 分 類 3、 按 指 令 功 能 分 類 序 號 功 能 數(shù) 量1 數(shù) 據(jù) 傳
13、 送 指 令 28條2 算 術 運 算 指 令 24條3 邏 輯 運 算 與 移 位 指 令 25條4 控 制 轉(zhuǎn) 移 指 令 17條5 位 操 作 指 令 17條2.12.1.3 MCS-51指 令 的 分 類 MCS-51指 令 系 統(tǒng) 有 111條 指 令 , 可 按 下 列 3種 方 式 分 類 : 目 錄 2.1.4 指 令 中 的 常 用 符 號 Rn( n=07) : 表 示 當 前 工 作 寄 存 器 R0R7中 的 任 一 個 。 Ri( i=0或 1) : 表 示 當 前 寄 存 器 組 中 用 于 間 址 的 R0或 R1。 #data: 表 示 8位 立 即 數(shù) 。 #
14、data16: 表 示 16位 立 即 數(shù) 。 direct: 表 示 片 內(nèi) RAM的 8位 單 元 地 址 。 addr11: 表 示 11位 目 的 地 址 , 用 于 ACALL和 AJMP指 令 中 。 addr16: 表 示 16位 目 的 地 址 , 用 于 LCALL和 LJMP指 令 中 。 rel: 用 補 碼 形 式 表 示 的 8位 二 進 制 地 址 偏 移 量 , 取 值 范 圍 為 128 +127, 主 要 用 于 相 對 轉(zhuǎn) 移 指 令 。 2.1 概 述 目 錄 bit: 表 示 片 內(nèi) RAM的 位 尋 址 區(qū) , 或 者 是 可 以 位 尋 址 的 SF
15、R的 位 地 址 。 A( 或 ACC) 、 B : 表 示 累 加 器 、 B寄 存 器 。 C: 表 示 PSW中 的 進 位 標 志 位 Cy。 : 在 間 接 尋 址 方 式 中 , 是 間 址 寄 存 器 指 針 的 前 綴 標 志 。 $: 表 示 當 前 的 指 令 地 址 。( X) : 表 示 由 X所 指 定 的 某 寄 存 器 或 某 單 元 中 的 內(nèi) 容 。 (X): 表 示 由 X間 接 尋 址 單 元 中 的 內(nèi) 容 。 2.1.4 指 令 中 的 常 用 符 號 2.1 概 述 2.1 目 錄 2.2.1 寄 存 器 尋 址 2.2.2 直 接 尋 址2.2.3
16、 立 即 數(shù) 尋 址 2.2.4 寄 存 器 間 接 尋 址2.2.5 變 址 尋 址 2.2.6 相 對 尋 址2.2.7 位 尋 址2.2 尋 址 方 式 在 指 令 的 操 作 數(shù) 位 置 上 , 用 于 表 征 尋 找 操 作 數(shù) 的 方 法定 義 為 “ 尋 址 方 式 ” 。 正 確 地 理 解 、 掌 握 尋 址 方 式 , 是 學 習 、 使 用 指 令 的 關鍵 。 在 MCS-51單 片 機 中 , 共 使 用 了 以 下 7種 尋 址 方 式 目 錄 2.2.1 寄 存 器 尋 址指 令 中 含 有 一 個 存 有 操 作 數(shù) 的 寄 存 器 Rn( n=0 7)2.2
17、尋 址 方 式【 特 點 】 寄 存 器 尋 址 方 式 的 指 令 大 多 是 單 字 節(jié) 指 令 。 寄 存 器 的 3位 代 碼 與 操 作 碼 OP共 同 占 用 一 個 指 令 字 節(jié) 。 例 : MOV A, Rn ;將 寄 存 器 Rn中 的 內(nèi) 容 送 累 加 器 A中 MOV Rn, A ;將 累 加 器 A中 的 數(shù) 據(jù) 送 寄 存 器 Rn 以 MOV A, R7為 例 , 使 用 R7寄 存 器 , 所 以 r r r =111,即 指 令 的 機 器 碼 為 : 0EFH1 1 1 0 1 r r r 操 作 碼 OP 寄 存 器 代 碼 111E8H EFHMOV
18、A, RnROM的一 個 字 節(jié) 2.2 目 錄 2.2.2 直 接 尋 址指 令 本 身 直 接 給 出 操 作 數(shù) 在 RAM中 存 放 的 地 址 。2.2 尋 址 方 式MOV A , direct ;將 內(nèi) 存 地 址 direct中 的 內(nèi) 容 送 入 累 加 器MOV direct1, direct2 ;將 內(nèi) 存 地 址 direct2的 內(nèi) 容 送 入 direct1中例 如 : MOV A, 30H ;將 RAM 30H單 元 數(shù) 據(jù) 送 累 加 器 A【 特 點 】 直 接 尋 址 方 式 的 指 令 為 23字 節(jié) 指 令 。 每 個 直 接 地 址 自 身 占 用 一
19、 個 指 令 字 節(jié) 。 程 序 ROMOP30H 數(shù) 據(jù) RAM操 作 數(shù) xnn+1 30H累 加 器 AX 目 錄 使 用 直 接 尋 址 應 注 意 的 兩 個 問 題 :1、 當 地 址 恰 好 在 SFR區(qū) 域 時 , 地 址 也 可 用 寄 存 器 名 來 表 示 。 2.2.2 直 接 尋 址 2.2 尋 址 方 式 如 : MOV A, 80H 可 以 寫 成 MOV A, P0 后 者 用 SFR中 寄 存 器 的 名 字 取 代 它 的 物 理 地 址 80H。后 者 更 容 易 閱 讀 和 交 流 , 所 以 提 倡 使 用 SFR中 寄 存 器 名 稱來 代 替 直
20、接 地 址 。 如 : MOV A, SBUF ; 串 口 數(shù) 據(jù) 緩 沖 器 數(shù) 據(jù) 送 A MOV TH1, #0FEH ; 為 定 時 器 1賦 初 值 目 錄 MOV A, 00H ;將 RAM中 00H單 元 數(shù) 據(jù) 送 累 加 器 AMOV A, R0 ;將 工 作 寄 存 器 R0的 內(nèi) 容 送 累 加 器 A 返 回2.2.2 直 接 尋 址 2.2 尋 址 方 式2、 當 直 接 地 址 是 在 工 作 寄 存 器 區(qū) 中 時 , 可 以 使 用 兩 種 尋址 方 式 來 訪 問 。 如 : 使 用 了 不 同 的 尋 址 方 式 , 指 令 的 結(jié) 構 與 字 節(jié) 數(shù) 也
21、不 相 同 。 前 者 是 : 11100101(0E5H)、 00000000( 00H) 雙 字 節(jié) 。 后 者 是 : 11101000(0E8H) 單 字 節(jié) ; 最 好 用 寄 存 器 尋 址 方 式 來 訪 問類 似 的 還 有 累 加 器 A: INC A 寄 存 器 尋 址 方 式 ( 單 字 節(jié) ) ; INC ACC 直 接 尋 址 方 式 ( 雙 字 節(jié) ) ; INC 0E0H 直 接 尋 址 方 式 ( 雙 字 節(jié) ) 。 2.2 目 錄 2.2.3 立 即 尋 址指 令 中 直 接 含 有 所 需 要 的 操 作 數(shù) data。2.2 尋 址 方 式MOV A, #
22、data ; 將 8位 立 即 數(shù) 送 累 加 器 A MOV DPTR, #data16 ; 16位 立 即 數(shù) 送 DPTR寄 存 器【 特 點 】 立 即 數(shù) 尋 址 的 指 令 長 度 為 2或 3個 字 節(jié) 。90H20H00HROMDPTR例 : MOV DPTR, #2000Hnn+1n+2注 : 對 于 16位 立 即 數(shù) 指 令 , 匯 編 時 高 8位 在 前 , 低 8位 在 后 。 目 錄 【 注 意 】 MOV A, #30H與 MOV A, 30H 兩 者 的 區(qū) 別 。74H30Hnn+1 ROM 累 加 器 AMOV A, #30H E5H30Hnn+1 ROM
23、 累 加 器 AMOV A, 30H XX30H RAM2.2.3 立 即 尋 址 2.2 尋 址 方 式 2.2 目 錄 2.2.4 寄 存 器 間 接 尋 址 指 令 中 含 有 保 存 操 作 數(shù) 地 址 的 寄 存 器 ( Ri或 DPTR) 。CPU首 先 從 寄 存 器 中 找 到 操 作 數(shù) 地 址 , 然 后 再 從 該 地 址 中找 到 操 作 數(shù) 。 2.2 尋 址 方 式MOV A , Ri;MOVX A, Ri; MOVX DPTR, A 尋 址 范 圍 : 內(nèi) 部 RAM低 128B( 只 能 使 用 R0或 R1作 間 址 寄 存 器 ) 、外 部 RAM。 對 于
24、 外 部 低 256單 元 RAM的 訪 問 , 除 可 以 使 用DPTR外 , 還 可 以 使 用 R0或 R1作 間 址 寄 存 器 。下 列 的 程 序 正 確 嗎 MOV R1, #80H MOV A, R1 目 錄 MOV R0, #30H ; 立 即 數(shù) 送 R0寄 存 器 MOV A, R0 ; 從 RAM的 30H單 元 取 數(shù) 送 累 加 器 AROM11100110 RAMx30H30H R000H累 加 器 A1 232.2.4 寄 存 器 間 接 尋 址【 注 意 】 MOV A, R0 和 MOV A, R0 指 令 的 區(qū) 別 。 2.2 2.2 尋 址 方 式
25、MOV A, R0 執(zhí) 行 過 程 示 意 圖 目 錄 指 令 使 用 DPTR或 PC中 的 內(nèi) 容 作 為 基 地 址 , 再 與 累 加器 A的 內(nèi) 容 相 加 , 其 和 作 為 操 作 數(shù) 地 址 。 如 : MOVC A, A+PC ; PC內(nèi) 容 為 基 地 址 與 A的 內(nèi) 容 相 加 得 操 作 數(shù) 地 址 , 并 將 此 操 作 數(shù) 送 A MOVC A, A+DPTR ;DPTR內(nèi) 容 為 基 地 址 與 A的 內(nèi) 容 相 加 得 操 作 數(shù) 地 址 并 將 此 操 作 數(shù) 送 A2.2.5 變 址 尋 址這 是 訪 問 程 序 存 儲 器 ROM中 數(shù) 據(jù) 的 唯 一
26、的 尋 址 方 式 。 變 址 尋 址 方 式 用 于 查 表 操 作 , 而 數(shù) 據(jù) 表 是 建 立 在 程 序存 儲 器 ROM中 。 2.2 尋 址 方 式 目 錄 【 例 】 已 知 ROM中 的 0300H-0309H 為 0 9的 平 方 表 , 編 程 求 A中 數(shù) 據(jù) 的 平 方 ( 設 A=02H) 。02H 0300H 8164493625169 4100302H累 加 器 A DPTR 0300H ( DPTR)+ 02H ( A) 0302HMOVC A,A+DPTR 0300H 平方表ALU解 : MOV DPTR, #0300H ; 指 針 DPTR賦 表 頭 地
27、址 MOVC A, A+DPTR ; 從 0302H單 元 取 數(shù) 4送 A 變 址 尋 址 2.2 2.2 尋 址 方 式 目 錄 相 對 轉(zhuǎn) 移 指 令 使 用 的 一 種 尋 址 方 式 。2.2.6 相 對 尋 址 SJMP short_lable2.2 尋 址 方 式無 條 件 轉(zhuǎn) 向 短 標 號 short_lable地 址 該 指 令 操 作 碼 為 80H, 操 作 數(shù) 為 偏 移 量 rel( +127 -128) ,它 由 匯 編 程 序 匯 編 時 自 動 計 算 填 入 。 計 算 公 式 為 : rel= short_lable地 址 -PC值 , 或 :rel=sh
28、ort_lable地 址 -相 對 轉(zhuǎn) 移 指 令 地 址 -相 對 轉(zhuǎn) 移 指 令 字 節(jié) 數(shù)即 相 對 轉(zhuǎn) 移 指 令 中 給 出 一 個 轉(zhuǎn) 移 地 址 的 偏 移 量 rel。 在 執(zhí) 行 中 將當 前 PC值 ( 執(zhí) 行 當 前 指 令 后 的 PC值 ) 與 偏 移 量 rel( 補 碼 ) 相加 , 形 成 實 際 轉(zhuǎn) 移 的 目 標 地 址 相 對 尋 址 方 式 。 目 錄 【 例 】 ORG 0100H S1: CLR A MOV R0, #45H SJMP S2 SETB C SETB 00H S2: MOV A, #0FH . . . E4H78H45H80H03HD3
29、HD2H00H74H0FH 0100H0106H0103H0105H0108HShort_lablePC值rel值 0105H+ 03H0108HALU03H 0105HA PC 2.2 尋 址 方 式 2.2 目 錄 指 令 的 形 式 同 直 接 尋 址 相 似 , 不 同 的 是 : 指 令 中 的 地址 是 “ 位 地 址 ” , 而 不 是 字 節(jié) 地 址 。 MOV C, bit2.2.7 位 尋 址如 : MOV C, 02H; 將 位 地 址 為 02H中 的 內(nèi) 容 送 Cy中類 似 的 還 有 邏 輯 運 算 指 令 等 。 除 了 RAM中 的 位 尋 址 區(qū) 外 , 大
30、 多 SFR( 地 址 能 夠 被 8整 除 的 ) 都 可 以 按 位 尋 址 , 這 對 編 程 尤 為 重 要 。2.2 尋 址 方 式 目 錄 作 為 嵌 入 式 控 制 器 , CPU更 多 的 是 處 理 “ 開 關 量 ” 而 不單 純 是 字 節(jié) 結(jié) 構 的 數(shù) 據(jù) 。 因 此 MCS-51在 指 令 設 計 上 刻 意 設計 了 大 量 的 “ 布 爾 操 作 ” 即 位 操 作 , 這 為 系 統(tǒng) 應 用 帶 來 了很 大 的 方 便 。 MCS-51單 片 機控 制 、 檢 測系 統(tǒng) 驅(qū) 動 器 電 動 機外 設 1外 設 2狀 態(tài) 信 號狀 態(tài) 信 號控 制 信 號2.
31、2.7 位 尋 址 2.2 尋 址 方 式 目 錄 【 舉 例 】 : SETB 90H ;將 P1口 的 D0位 置 1 為 了 增 加 程 序 的 可 讀 性 , 凡 在 SFR中 的 位 地 址 都可 以 使 用 符 號 來 替 代 。 如 本 例 中 , 完 全 可 以 使 用 下面 的 指 令 格 式 : SETB P1.0 ;將 P0口 的 D0位 置 1又 如 : SETB EA ( SETB 0AFH) ; 開 中 斷 SETB TR0 ( SETB 8CH) ; 啟 動 定 時 器 這 種 指 令 在 編 譯 時 , 是 要 先 將 符 號 地 址 進 行 轉(zhuǎn) 換 的 。2.
32、22.2.7 位 尋 址 2.2 尋 址 方 式 目 錄 2.3 MCS-51指 令 系 統(tǒng)2.3.0 預 備 知 識 : WAVE仿 真 開 發(fā) 軟 件 安 裝 與 使 用2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.2 算 邏 運 算 與 移 位 指 令2.3.3 控 制 轉(zhuǎn) 移 和 位 操 作 指 令 目 錄 WAVE仿 真 開 發(fā) 軟 件 把 源 程 序 編 輯 、 編 譯 、 下 載 、調(diào) 試 等 操 作 全 部 集 中 在 一 個 環(huán) 境 下 進 行 , 支 持 MCS-51、PIC兩 大 系 列 、 不 同 種 類 的 單 片 機 。 具 有 軟 件 模 擬 執(zhí) 行 功 能 , 除
33、輸 入 、 輸 出 操 作 外 ,均 可 在 軟 件 模 擬 環(huán) 境 下 完 成 絕 大 部 分 應 用 程 序 的 調(diào) 試。 2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 2.3 MCS-51指 令 系 統(tǒng)1、 WAVE仿 真 軟 件 功 能 簡 介 目 錄 2.3 MCS-51指 令 系 統(tǒng)2、 WAVE仿 真 軟 件 的 安 裝 1) 從 WAVE網(wǎng) 站 http:/www.wave- ( 南 京 偉 福 實 業(yè) 有 限 公 司 ) 下 載 WAVE6000 for Windows ( 支持 LAB2000) 仿 真 開 發(fā) 軟 件 ( ZIP壓 縮 文 件 格 式 ) ,
34、 經(jīng) ZIP解壓 后 , 運 行 其 中 的 SETUP.EXE文 件 即 可 , 該 安 裝 程 序 將 引 導用 戶 完 成 WAVE 6000仿 真 開 發(fā) 軟 件 的 安 裝 過 程 。 2) 從 課 件 郵 箱 下 載 應 用 程 序 文 件 “ wave6000_G”, 雙 擊安 裝 即 可 。2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 1、 WAVE仿 真 軟 件 功 能 簡 介 目 錄 1) 安 裝 后 , 從 “ WAVE6000_GBIN”子 目 錄 下 雙 擊wave圖 標 進 入 界 面 ; 2.3 MCS-51指 令 系 統(tǒng)3、 WAVE仿 真 軟 件
35、 的 使 用2、 WAVE仿 真 軟 件 的 安 裝 2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 1、 WAVE仿 真 軟 件 功 能 簡 介 2) 新 建 一 個 匯 編 語 言 的 源 程 序 ( 如 : f1.asm) ; 3) 編 譯 、 調(diào) 試 。 目 錄完 成 安 裝 后 , 首 次 啟 動 看 到 的 界 面 2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 2.3 MCS-51指 令 系 統(tǒng) 2.3 目 錄 2.3.1 數(shù) 據(jù) 傳 送 指 令 2.3 MCS-51指 令 系 統(tǒng) 2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 類 指 令 2.3.1.2 外 部
36、 數(shù) 據(jù) 傳 送 類 指 令 2.3.1.3 堆 棧 操 作 指 令 2.3.1.4 數(shù) 據(jù) 交 換 指 令數(shù) 據(jù) 傳 送 是 編 程 中 使 用 最 多 、 最 主 要 的 操 作 。在 傳 送 過 程 中 , 源 地 址 的 內(nèi) 容 不 被 改 變 ( COPY) 。傳 送 類 指 令 除 了 以 累 加 器 A為 目 標 的 傳 送 對 PSW的 P有 影 響外 , 其 余 的 傳 送 類 指 令 對 PSW一 概 無 影 響 。操 作 碼 數(shù) 據(jù) 的 目 標 地 址 數(shù) 據(jù) 的 源 地 址指 令 通 式 : MOV , 2.3 目 錄 特 點 : 單 片 機 內(nèi) 部 各 單 元 之 間
37、 的 內(nèi) 部 數(shù) 據(jù) 傳 送 , 指 令的 源 操 作 數(shù) 和 目 的 操 作 數(shù) 都 在 單 片 機 內(nèi) 部 。1、 立 即 尋 址 型 傳 送 指 令2、 直 接 尋 址 型 傳 送 指 令3、 寄 存 器 尋 址 型 傳 送 指 令4、 寄 存 器 間 址 型 傳 送 指 令5、 內(nèi) 部 數(shù) 據(jù) 傳 送 類 指 令 的 使 用2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 2.3 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 1、 立 即 尋 址 型 傳 送 指 令【 特 點 】 源 操 作 數(shù) 是 立 即 數(shù) , 處 在 指 令 的 第 二 或 第 三 字 節(jié) ,所 以 這 類 指 令
38、都 是 多 字 節(jié) 指 令 , 有 如 下 4條 。 MOV A ,#data ; A data ( 雙 字 節(jié) 指 令 ) MOV Rn ,#data ; Rn data ( 雙 字 節(jié) 指 令 ) MOV Ri ,#data ; ( Ri) data( 雙 字 節(jié) 指 令 ) MOV direct ,#data ; direct data ( 三 字 節(jié) 指 令 ) 這 類 指 令 多 用 于 程 序 的 初 始 化 。 如 : MOV R0, #20H ; R0 #20H MOV A, #00H ; 累 加 器 A清 零2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳
39、 送 指 令 目 錄 【 例 】 已 知 : R0=20H, 試 問 單 片 機 執(zhí) 行 如 下 指 令 后 ,累 加 器 A、 R7、 20H和 21H單 元 中 的 內(nèi) 容 各 是 什 么 。 MOV A, #18H MOV R7, #28H MOV R0, #38HMOV 21H, #48H 2.3.1.1 2.3.1 數(shù) 據(jù) 傳 送 指 令1、 立 即 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 目 錄 【 特 點 】 指 令 中 至 少 含 有 一 個 源 操 作 數(shù) 或 目 的 操 作 數(shù) 的 地址 。 是 2個 或 3個 字 節(jié) 的 指 令 格 式
40、, 其 中 直 接 地 址 在 第 2或第 3個 字 節(jié) 上 。 這 類 指 令 有 如 下 5條 :2、 直 接 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 MOV A , directMOV direct , AMOV Rn , directMOV Ri , directMOV direct2 , direct1 【 注 意 】 direct為 內(nèi) 部 RAM和 SFR的 地 址 , 即 direct 適用 于 片 內(nèi) 所 有 的 地 址 。2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 MOV A, 30H ; 內(nèi) 存 RAM30h單 元 數(shù) 據(jù) 送 AMOV
41、50H, A ; A中 內(nèi) 容 送 RAM的 50h單 元MOV R6, 31H ; RAM的 30h 內(nèi) 容 送 R6寄 存 器MOV Ri, 30H ; RAM30h內(nèi) 容 送 Ri指 定 的 RAM單 元MOV P1, 32H ; RAM32h內(nèi) 容 送 P1口 ( p1:符 號 地 址 )MOV 90H, 32H ; ( 同 上 , 試 比 較 兩 種 表 示 方 法 , 一 個 指 令 兩 種 寫 法 ) 2.3.1.1 2.3.1 數(shù) 據(jù) 傳 送 指 令2、 直 接 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 目 錄 【 特 點 】 指 令 中 含 有
42、 存 放 操 作 數(shù) 的 寄 存 器 名 Rn, 其 中 ( n 0, 1, 2, 3, 4, 5, 6, 7)。 共 有 如 下 4條 : MOV A ,RnMOV Rn ,AMOV direct ,Rn MOV Rn, direct3、 寄 存 器 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 2.3.1.1 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 【 特 點 】 指 令 中 Ri中 存 放 的 不 是 操 作 數(shù) 本 身 , 而 是 操 作 數(shù) 在 RAM中 的 地 址 ( i=0、 1) 。 格 式 如 下 : MOV A ,RiMOV Ri ,AMOV
43、 direct ,Ri 【 注 意 】 Ri中 存 放 操 作 數(shù) 的 地 址 是 有 所 選 擇 的 , 只 有 非 SFR的 RAM單 元 才 能 使 用 這 種 尋 址 方 式 。4、 寄 存 器 間 接 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 【 例 】 已 知 ( 40h) =11h, ( 41h) =22h, R0=40h和R1=41h。 試 問 : 下 面 的 指 令 執(zhí) 行 后 , 累 加 器 A、 RAM的 40h、 41h和 42h單 元 中 的 內(nèi) 容 各 是 什 么 。 MOV A , R0
44、MOV R1, A MOV 42H, R1 2.3.1.1 2.3.1 數(shù) 據(jù) 傳 送 指 令4、 寄 存 器 間 接 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 目 錄 ( 1) 不 能 根 據(jù) 主 觀 意 愿 去 “ 創(chuàng) 造 ” 指 令 。 5、 內(nèi) 部 數(shù) 據(jù) 傳 送 類 指 令 的 使 用2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 例 如 : 要 將 R0中 的 數(shù) 據(jù) 傳 送 到 R1中 。 如 何 使 用 指 令去 完 成 上 述 的 操 作 ? MOV R1, R0 是 否 可 以 ? 回 答 是 否 定 的 ! 因 為 在 MCS-51的 指
45、令 系 統(tǒng) 中 沒 有 此條 指 令 ! 只 能 使 用 : MOV A, R0 或 : MOV 01h, 00h MOV R1, A 因 此 , 必 須 從 MCS-51的 指 令 表 中 選 擇 使 用 指 令 。2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄MCS-51內(nèi) 部 數(shù) 據(jù) 傳 送 類 指 令 方 式 圖 累 加 器 Adirect直 接 尋 址 Ri間 址Rn寄 存 器 Data立 即 數(shù)2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 2.3.1 數(shù) 據(jù) 傳 送 指 令 返 回 目 錄 ( 2) 會 正 確 地 估 計 指 令 的 字 節(jié) 。 凡 是 包 含 有 立 即 數(shù) 、直
46、 接 地 址 的 指 令 , 都 應 當 在 原 有 的 基 礎 上 加 1或 2。 【 舉 例 】 mov a ,Ri ( ) 個 字 節(jié) mov a ,direct ( ) 個 字 節(jié) mov direct ,data ( ) 個 字 節(jié) mov direct2 ,direct1 ( ) 個 字 節(jié)( 3) 養(yǎng) 成 一 個 好 的 、 合 理 的 編 程 習 慣 。( 4) 注 意 給 程 序 進 行 適 當 的 注 釋 , 這 對 于 閱 讀 、 編寫 和 修 改 程 序 都 是 非 常 重 要 的 。( 1) 不 能 根 據(jù) 主 觀 意 愿 去 “ 創(chuàng) 造 ” 指 令 。 2.3.1
47、數(shù) 據(jù) 傳 送 指 令2.3.15、 內(nèi) 部 數(shù) 據(jù) 傳 送 類 指 令 的 使 用2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 目 錄 1、 16位 數(shù) 傳 送 指 令2、 外 部 ROM的 字 節(jié) 傳 送 指 令3、 外 部 RAM的 字 節(jié) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送 指 令 【 特 點 】 單 片 機 內(nèi) 部 與 外 部 之 間 的 外 部 數(shù) 據(jù) 傳 送 。2.3.12.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 1、 16位 數(shù) 傳 送 指 令 MCS-51指 令 系 統(tǒng) 中 唯 一 的 一 條 16位 數(shù) 據(jù) 傳 送 類 指 令 。 MOV DPTR,#d
48、ata16 DPTR是 單 片 機 內(nèi) 部 SFR中 的 兩 個 寄 存 器 DPH、DPL組 合 而 成 。 其 中 DPH為 高 八 位 , DPL為 低 八 位 。 DPTR是 一 個 專 門 用 于 訪 問 外 部 存 儲 器 的 間 址 寄 存 器 。尋 址 能 力 為 64K ( 0 65535) 。 2.3.1.2 2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送 指 令 目 錄 這 類 指 令 有 兩 條 , 都 屬 于 變 址 尋 址 指 令 。 MOVC A,A+DPTR ; A (A+DPTR) MOVC A,A+PC ; PC PC+1, A (
49、A+PC) ROM單 元 地 址 由 A和 DPTR或 PC內(nèi) 容 相 加 獲 得 。 該 指 令 稱 為 “ 查 表 ” 指 令 。 前 者 用 DPTR作 為 基 地 址 ; 后 者 是 以 程 序 計 數(shù) 器 PC為 基 地 址 。 由 于 PC的 內(nèi) 容 與 該 指 令 在 ROM中 的 位 置 有關 , 并 且 PC的 值 是 不 能 隨 便 修 改 的 , 所 以 選 擇 PC作 基地 址 時 , 往 往 要 通 過 累 加 器 A進 行 “ 查 表 修 正 ” 。2、 外 部 ROM的 字 節(jié) 傳 送 指 令2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送
50、 指 令 目 錄 【 例 】 已 知 累 加 器 A中 存 有 0 9范 圍 內(nèi) 的數(shù) , 試 用 查 表 指 令 編 寫 出 查 找 出 該 數(shù)平 方 的 程 序 。1) 采 用 DPTR作 基 址 寄 存 器 : MOV DPTR,#2000H ;指 針 賦 值 MOVC A,A+DPTR;查 表 得 平 方 值 送 A ROM01491625364964812000h2009h2008h2007h2006h2005h2004h2003h2002h2001h2、 外 部 ROM的 字 節(jié) 傳 送 指 令2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送 指 令 目 錄
51、 2) 采 用 PC作 基 址 寄 存 器 ORG 1FFBH1FFBH 74 data ADD A , #data; data=02h1FFDH 83H MOVC A,A+PC;PC=1FFE1FFEH 80FEH SJMP $2000H 00H DB 0 ;平 方 表 首 址2001H 01H DB 12002H 04H DB 42003H 09H DB 92004H 10H DB 162005H 19H DB 25 : : :2009H 51H DB 81 ENDdata為 MOVC指 令 對 表 頭 地 址 之 間 的 單 元 數(shù) 。 74hdata83h80hFEh014916253
52、649 64812000h2009h2008h2007h2006h2005h2004h2003h2002h2001h1FFFh1FFEh1FFDh 1FFCh1FFBh通 過 A進行 修 正2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 使 用 MOVC A,A+PC 指 令 的 特 點 :1) 與 使 用 MOVC A,A+DPTR 指 令 不 同 , 使 用 前 應 當對 A中 的 偏 移 量 加 一 個 “ 修 正 值 ” , 修 正 值 的 大 小為 : MOVC指 令 與 表 頭 之 間 的 字 節(jié) 數(shù) ;2) 程 序 與 數(shù) 據(jù) 表 在 ROM中 的 位 置 是 可 以 浮 動 的 。
53、 只 要 MOVC指 令 與 表 之 間 的 距 離 不 變 , 則 程 序 可 以在 ROM中 的 任 意 位 置 上 “ 浮 動 ” , 程 序 具 有 可 修 改性 。 2.3.1.22.3.1 數(shù) 據(jù) 傳 送 指 令2、 外 部 ROM的 字 節(jié) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送 指 令 目 錄 實 現(xiàn) 外 部 RAM和 累 加 器 A之 間 的 數(shù) 據(jù) 傳 送 。 只 能 使 用 寄 存 器 間 址 的 尋 址 方 式 。 在 MOVX指 令 模 式 下 , 單 片 機 的 P0、 P2口 做 訪 問 外 部 數(shù)據(jù) 的 地 址 和 數(shù) 據(jù) 的 總 線 。 其 中
54、:P0口 做 低 8位 地 址 和 數(shù) 據(jù) 的 復 用 總 線 ; P2口 做 高 8位 地 址 總 線 。3、 外 部 RAM的 字 節(jié) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送 指 令 MOVX A ,Ri 使 用 Ri寄 存 器 間 址 尋 址 范 圍 0 255MOVX Ri ,A 在 硬 件 電 路 中 P2口 不 用 。MOVX A,DPTR ; 使 用 DPTR間 址 , 尋 址 范 圍 0 65535MOVX DPTR,A ;在 硬 件 電 路 中 , 使 用 P0口 輸 出 低 8位 , P2口 輸 出 高 8位 外 部 RAM地 址 。2.3.1 數(shù) 據(jù) 傳 送
55、 指 令 目 錄 【 例 】 已 知 外 部 RAM的 88H單 元 有 一 個 數(shù) x, 試 編 程 將 x送外 部 RAM的 1818H單 元 ?!?解 】 : 外 部 RAM中 的 數(shù) 據(jù) 是 不 能 直 接 傳 送 的 , 因 此 必 須使 用 兩 次 MOVX 指 令 完 成 此 操 作 。ORG 2000HMOV R0, #88H ; 為 8位 指 針 賦 值MOV DPTR, #1818H; 為 16位 指 針 賦 值MOVX A, R0 ; 取 x 到 累 加 器 AMOVX DPTR, A ; x 送 RAM的 1818h單 元SJMP $ ; 停 機END2.3.1.2 外
56、 部 數(shù) 據(jù) 傳 送 指 令 返 回2.3.1.2 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 堆 棧 操 作 是 一 種 特 殊 的 保 護 數(shù) 據(jù) 的 傳 送 指 令 。 堆 棧 : 一 個 用 來 保 存 程 序 斷 點 、 數(shù) 據(jù) 的 存 儲 區(qū) 域 。 在51單 片 機 中 , 棧 區(qū) 可 以 使 用 片 內(nèi) RAM的 任 意 位 置 , 具體 位 置 由 指 針 SP來 確 定 ( 系 統(tǒng) 上 電 時 , SP=07h) 。 1) 進 棧 操 作 : PUSH direct ; sp+1sp, (direct)(sp) 2) 出 棧 操 作 : POP direct ; (sp)
57、(direct), sp-1sp2.3.1.3 堆 棧 操 作 指 令 2.3.1 數(shù) 據(jù) 傳 送 指 令“先 加 后 壓 ” 、 “ 先 彈 后 減 ” 目 錄 org 0800hdelay: push 00hpush 01hmov r0, #00hLoop1: mov r1, #00hLoop2: djnz r1, loop2djnz r0, loop1pop 01hpop 00hret RAMr1r0棧 底SP思 考 : 為 什 么 R0、 R1的 內(nèi) 容 要 進 棧 ?【 例 】 產(chǎn) 生 延 時 的 子 程 序 delay。2.3.1.3 堆 棧 操 作 指 令 2.3.1 數(shù) 據(jù) 傳
58、 送 指 令 目 錄 PUSH、 POP 指 令 使 用 的 尋 址 方 式 為 直 接 尋 址 , 所 以 push a X( 有 的 編 譯 系 統(tǒng) 識 別 , 將 a轉(zhuǎn) 換 為 acc) push acc push 0e0h push r0 X push 00h 進 棧 操 作 是 堆 棧 向 上 “ 生 長 ” 的 過 程 , 即 sp+1; 出 棧 則 相反 。 系 統(tǒng) 上 電 時 , SP=07h。 SP的 值 可 以 根 據(jù) 需 要 進 行 修 改 ,在 確 定 SP值 時 要 考 慮 對 棧 區(qū) 對 數(shù) 據(jù) 區(qū) 的 影 響 , 以 避 免 兩 者沖 突 。 如 : 在 程 序
59、的 初 始 化 時 加 一 條 :MOV SP, 60H 使 用 PUSH、 POP 指 令 的 注 意 事 項 2.3.1 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 一 種 方 便 的 累 加 器 和 寄 存 器 /RAM之 間 的 數(shù) 據(jù) 交 換 。 避 免了 使 用 MOV 指 令 交 換 時 的 不 便 。 格 式 : XCH a ,Rn ; a Rn XCH a ,direct ; a (direct) XCH a ,Ri ; a (Ri) XCHD a ,Ri ; a 3 0 (Ri) 3 0低 四位 交 換 舉 例 : 將 R1和 R2的 內(nèi) 容 交 換 。 MOV A, R1
60、 ; 取 數(shù) 據(jù) 送 A XCH A, R0 ; 與 R0交 換 MOV R2, A ; 送 回 到 R12.3.1.4 數(shù) 據(jù) 交 換 指 令 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 【 例 】 已 知 , 片 外 RAM20h單 元 、 內(nèi) 部 RAM20h單 元 分 別 有數(shù) x和 y, 試 編 程 將 兩 數(shù) 相 互 交 換 。mov R1, #20h ; 指 針 賦 初 值movx a, R1 ; x axch a, R1 ; 交 換 a(20h),ya movx R1, a ; y(20h)片 外 RAM片 內(nèi) RAMy (x) 片 外 RAMx (y)(y) x20h 20h
61、累 加 器 A 12 3 跳 過 例 2 2.3.1.4 數(shù) 據(jù) 交 換 指 令 2.3.1 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 【 例 】 已 知 RAM50h單 元 有 一 個 0 9范 圍 內(nèi) 的 數(shù) , 試 編 程 將它 變 成 相 應 的 ASCII碼 。 【 解 】 : 0 9的 ASCII碼 是 30h 39h, 兩 者 相 差 30h。 方 法 一 : 對 50h單 元 的 數(shù) 據(jù) 高 四 位 組 裝 一 個 30h。mov r0,#50h ; 指 針 賦 值mov a,#30h ; 30hAxchd a,r0 ; A3 0(r0)3 0,在 A中 組 成 ASCII碼
62、mov r0,a ; A中 的 ASCII碼 送 回 50h單 元 0000010150h00110101A=30h交 換 后 A=35h 12方 法 二 : 把 50H的 內(nèi) 容直 接 與 30H相 加 , 形 成相 應 的 ASCII碼 ( 略 )2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.1.4 數(shù) 據(jù) 交 換 指 令 2.3.1 目 錄 功 能 : 完 成 算 術 運 算 、 邏 輯 運 算 和 循 環(huán) 移 位 三 大 功 能 。特 點 : 大 多 指 令 都 要 由 累 加 器 A來 存 放 一 個 源 操 作 數(shù) , 并 把 操 作 結(jié) 果 放 回 累 加 器 A中 。2.3.2.1
63、 算 術 運 算 指 令2.3.2.2 邏 輯 運 算 指 令2.3.2.3 移 位 指 令 2.3 2.3.2 算 邏 運 算 和 移 位 指 令 目 錄 2.3.2.1 算 術 運 算 指 令 不 帶 進 位 的 加 法 指 令 ( ADD )1、 加 法 指 令 : 帶 進 位 的 加 法 指 令 ( ADDC ) 加 1指 令 ( INC ) ( 編 程 舉 例 )2、 減 法 指 令 : 帶 進 位 的 減 法 指 令 ( SUBB ) 減 1指 令 ( DEC )3、 十 進 制 調(diào) 整 指 令 : ( DA A )4、 乘 法 和 除 法 指 令 : ( MUL DIV) 2.3
64、.2 2.3.2 算 邏 運 算 和 移 位 指 令 目 錄 1、 加 法 指 令 ( 之 一 ) : 不 帶 進 位 的 加 法 指 令 格 式 : ADD A ,Rn ; A +Rn AADD A ,direct ; A +(direct) AADD A ,Ri ; A +(Ri) AADD A ,#data ; A +data A 【 注 意 】 參 加 運 算 的 數(shù) 據(jù) 都 應 是 8位 的 , 結(jié) 果 也 是 8位 并 影 響 PSW。 根 據(jù) 編 程 者 的 需 要 , 8位 數(shù) 據(jù) 可 以 是 無 符 號 數(shù) ( 0 255) ,也 可 以 是 有 符 號 數(shù) ( -128 +
65、127) 。 不 論 編 程 者 使 用 的 數(shù) 據(jù) 是 有 符 號 數(shù) 還 是 無 符 號 數(shù) , CPU都將 它 們 視 為 有 符 號 數(shù) ( 補 碼 ) 進 行 運 算 并 影 響 PSW。2.3.2.1 算 術 運 算 指 令2.3.2 算 邏 運 算 和 移 位 指 令 2.3.2.1 目 錄 【 例 】 分 析 執(zhí) 行 下 列 指 令 后 累 加 器 A和 PSW中 各 標 志 的 變 化 。MOV A,#19H Cy=0;ADD A,#66H AC=0 OV=CP CS=0 25 A= 0 0 0 1 1 0 0 1 B P=1 + 102 data= 0 1 1 0 0 1
66、1 0 B 127 0 0 1 1 1 1 1 1 1 B 1) 若 兩 數(shù) 都 是 無 符 號 數(shù) , 則 因 Cy=0無 溢 出 , 25+102=127。 2) 若 兩 個 數(shù) 是 有 符 號 數(shù) , 則 因 OV=0無 溢 出 。cy 0 0 0 CP CS AC 2.3.2.1 1、 加 法 指 令 ( 之 一 ) : 不 帶 進 位 的 加 法 指 令2.3.2.1 算 術 運 算 指 令2.3.2 算 邏 運 算 和 移 位 指 令 目 錄 【 例 】 分 析 執(zhí) 行 下 列 指 令 后 累 加 器 A和 PSW中 各 標 志 的 變 化 。MOV A,#5AH Cy=0;ADD A,#6BH AC=1; OV=CPCS=1 90 A= 0 1 0 1 1 0 1 0 B P=0 + 107 data=0 1 1 0 1 0 1 1 B 197 0 1 1 0 0 0 1 0 1 B CP CS AC 1) 若 兩 數(shù) 是 無 符 號 數(shù) , 因 Cy=0無 溢 出 : 90+107=197 2) 若 兩 數(shù) 是 有 符 號 數(shù) , 因 OV=1, 故 有 溢 出 , 兩
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。