《單片機(jī)原理》第二章
《《單片機(jī)原理》第二章》由會(huì)員分享,可在線閱讀,更多相關(guān)《《單片機(jī)原理》第二章(159頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、目 錄 第 2章 MCS-51指 令 系 統(tǒng) 與 匯 編 語(yǔ) 言 程 序 設(shè) 計(jì)2.1 概 述2.2 尋 址 方 式2.3 MCS-51指 令 系 統(tǒng)2.4 匯 編 語(yǔ) 言 程 序 設(shè) 計(jì)2.5 高 級(jí) 語(yǔ) 言 Keil C51簡(jiǎn) 介 目 錄 2.1 概 述2.1.1 單 片 機(jī) 程 序 設(shè) 計(jì) 語(yǔ) 言 的 種 類2.1.2 匯 編 語(yǔ) 言 指 令 格 式 及 常 用 偽 指 令2.1.3 MCS-51指 令 的 分 類2.1.4 MCS-51指 令 中 常 用 的 符 號(hào) 目 錄 2.1 概 述2.1.1 單 片 機(jī) 程 序 設(shè) 計(jì) 語(yǔ) 言 的 種 類按 照 語(yǔ) 言 的 結(jié) 構(gòu) 及 其 功
2、能 可 以 分 為 三 種 :( 1) 機(jī) 器 語(yǔ) 言 ( Machine Language) 直 接 用 機(jī) 器 碼 ( 0、 1代 碼 ) 編 寫 程 序 、 能 夠 為 計(jì) 算 機(jī) 直接 執(zhí) 行 的 機(jī) 器 級(jí) 語(yǔ) 言 。 機(jī) 器 碼 是 一 串 由 二 進(jìn) 制 代 碼 “ 0”和 “ 1”組 成 的 二 進(jìn) 制 數(shù)據(jù) , 其 執(zhí) 行 速 度 快 , 但 是 可 讀 性 極 差 。 機(jī) 器 語(yǔ) 言 一 般 只 在 簡(jiǎn)單 的 開 發(fā) 裝 置 中 使 用 , 程 序 的 設(shè) 計(jì) 、 輸 入 、 修 改 和 調(diào) 試 都 很 麻 煩 。 機(jī) 器 語(yǔ) 言匯 編 語(yǔ) 言高 級(jí) 語(yǔ) 言 目 錄 2.1
3、 概 述( 2) 匯 編 語(yǔ) 言 ( Assembly Language) 指 用 指 令 助 記 符 代 替 機(jī) 器 碼 的 編 程 語(yǔ) 言 。 匯 編 語(yǔ) 言 程 序 結(jié) 構(gòu) 簡(jiǎn) 單 , 執(zhí) 行 速 度 快 , 程 序 易 優(yōu) 化 , 編譯 后 占 用 存 儲(chǔ) 空 間 小 , 是 單 片 機(jī) 應(yīng) 用 系 統(tǒng) 開 發(fā) 中 最 常 用 的 程序 設(shè) 計(jì) 語(yǔ) 言 。 匯 編 語(yǔ) 言 的 缺 點(diǎn) 是 可 讀 性 比 較 差 , 只 有 熟 悉 單 片 機(jī) 的 指 令 系 統(tǒng) , 并 具 有 一 定 的 程 序 設(shè) 計(jì) 經(jīng) 驗(yàn) , 才 能 研 制 出功 能 復(fù) 雜 的 應(yīng) 用 程 序 。2.1.1
4、單 片 機(jī) 程 序 設(shè) 計(jì) 語(yǔ) 言 的 種 類按 照 語(yǔ) 言 的 結(jié) 構(gòu) 及 其 功 能 可 以 分 為 三 種 :機(jī) 器 語(yǔ) 言匯 編 語(yǔ) 言高 級(jí) 語(yǔ) 言 目 錄 2.1 概 述( 3) 高 級(jí) 語(yǔ) 言 ( High-Level Language) 在 匯 編 語(yǔ) 言 的 基 礎(chǔ) 上 用 接 近 人 的 自 然 語(yǔ) 言 的 語(yǔ) 句 來(lái) 編 寫程 序 , 例 如 PL/M-51、 C51等 , 程 序 可 讀 性 強(qiáng) , 通 用 性 好 ,適 用 于 不 熟 悉 單 片 機(jī) 指 令 系 統(tǒng) 的 的 用 戶 。 高 級(jí) 語(yǔ) 言 是 面 向 過(guò) 程 而 獨(dú) 立 于 機(jī) 器 的 通 用 語(yǔ) 言 。
5、 缺 點(diǎn) 是 實(shí) 時(shí) 性 不 高 , 結(jié) 構(gòu) 不 緊 湊 , 編 譯 后 占 用 存 儲(chǔ) 空 間 比 較 大 , 這一 點(diǎn) 在 存 儲(chǔ) 器 有 限 的 單 片 機(jī) 應(yīng) 用 系 統(tǒng) 中 沒(méi) 有 優(yōu) 勢(shì) 。 單 片 機(jī) 的 匯 編 語(yǔ) 言 不 但不 會(huì) 被 高 級(jí) 語(yǔ) 言 完 全 取 代 ,甚 至 還 將 繼 續(xù) 占 據(jù) 重 要 地 位 。2.12.1.1 單 片 機(jī) 程 序 設(shè) 計(jì) 語(yǔ) 言 的 種 類按 照 語(yǔ) 言 的 結(jié) 構(gòu) 及 其 功 能 可 以 分 為 三 種 :機(jī) 器 語(yǔ) 言匯 編 語(yǔ) 言高 級(jí) 語(yǔ) 言 目 錄 2.1 概 述2.1.2 匯 編 語(yǔ) 言 指 令 格 式 及 常 用 偽 指
6、 令1、 常 用 單 位 與 術(shù) 語(yǔ) 位 ( bit) : 位 是 計(jì) 算 機(jī) 所 能 表 示 的 最 小 的 、 最 基 本 的 數(shù) 據(jù) 單 位 , 通 常 是 指 一 個(gè) 二 進(jìn) 制 位 。 字 節(jié) ( Byte) : 一 個(gè) 連 續(xù) 的 8位 二 進(jìn) 制 數(shù) 碼 稱 為 一 個(gè) 字 節(jié) , 即 1Byte=8bit。 字 ( Word) : 通 常 由 16位 二 進(jìn) 制 數(shù) 碼 組 成 , 即 1Word=2Byte。 字 長(zhǎng) : 字 長(zhǎng) 是 指 計(jì) 算 機(jī) 一 次 處 理 二 進(jìn) 制 數(shù) 碼 位 的 多 少 。 MCS-51型 單 片 機(jī) 是 8位 機(jī) , 即 它 的 字 長(zhǎng) 為 8
7、位 。 目 錄 2、 匯 編 語(yǔ) 言 指 令 格 式 標(biāo) 號(hào) : 操 作 碼 操 作 數(shù) ,操 作 數(shù) ;注 釋 2.1 概 述2.1.2 匯 編 語(yǔ) 言 指 令 格 式 及 常 用 偽 指 令其 中 : 項(xiàng) 是 可 選 項(xiàng) 。標(biāo) 號(hào) : 指 本 條 指 令 起 始 地 址 的 符 號(hào) , 也 稱 為 指 令 的 符 號(hào) 地 址 。 代 表 該 條 指 令 在 程 序 編 譯 時(shí) 的 具 體 地 址 。操 作 碼 : 又 稱 助 記 符 , 它 是 由 對(duì) 應(yīng) 的 英 文 縮 寫 構(gòu) 成 的 , 是 指 令 語(yǔ) 句 的 關(guān) 鍵 。 它 規(guī) 定 了 指 令 具 體 的 操 作 功 能 , 是 一
8、 條 指 令 中 不 可 缺 少 的 內(nèi) 容 。操 作 數(shù) : 它 既 可 以 是 一 個(gè) 具 體 的 數(shù) 據(jù) , 也 可 以 是 存 放 數(shù) 據(jù) 的 地 址 。Start: MOV A, #0FH; 將 循 環(huán) 次 數(shù) 初 值 送 累 加 器 目 錄 3、 常 用 偽 指 令 2.1 概 述2.1.2 匯 編 語(yǔ) 言 指 令 格 式 及 常 用 偽 指 令 偽 指 令 ( 也 稱 為 匯 編 程 序 的 控 制 命 令 ) 是 程 序 員 發(fā) 給匯 編 程 序 的 命 令 , 用 來(lái) 設(shè) 置 符 號(hào) 值 、 保 留 和 初 始 化 存 儲(chǔ) 空間 、 控 制 用 戶 程 序 代 碼 的 位 置
9、 。 偽 指 令 只 出 現(xiàn) 在 匯 編 前 的 源 程 序 中 , 僅 提 供 匯 編 用 的某 些 控 制 信 息 , 不 產(chǎn) 生 可 執(zhí) 行 的 目 標(biāo) 代 碼 , 是 CPU不 能 執(zhí)行 的 指 令 。 目 錄 ( 2) 結(jié) 束 匯 編 偽 指 令 END 格 式 : 標(biāo) 號(hào) : END 表 達(dá) 式 功 能 : 放 在 源 程 序 的 末 尾 , 表 明 源 程 序 的 匯 編 到 此 結(jié) 束 。 2.1 概 述 ( 1) 定 位 偽 指 令 ORG 格 式 : ORG n 其 中 : n為 絕 對(duì) 地 址 , 可 以 是 十 六 進(jìn) 制 數(shù) 、 標(biāo) 號(hào) 或 表 達(dá) 式 。例 ORG
10、1000H START: MOV A, #20H MOV R0, #30H MOVX DPTR, A END3、 常 用 偽 指 令 2.1.2 匯 編 語(yǔ) 言 指 令 格 式 及 常 用 偽 指 令 目 錄 ( 3) 賦 值 偽 指 令 EQU 格 式 : 字 符 名 稱 x EQU 賦 值 項(xiàng) n 功 能 : 將 賦 值 項(xiàng) 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 格 式 : 標(biāo) 號(hào) : DB x1, x2, xn 功 能 : 將 8位 數(shù) 據(jù) ( 或 8位 數(shù) 據(jù) 組 ) x1, x2, xn順 序 存 放 在 從 當(dāng) 前 程 序 存 儲(chǔ) 器 地 址 開 始 的 存 儲(chǔ) 單 元 中 。 2.1 3、 常 用 偽 指 令 2.1.2 匯 編 語(yǔ) 言 指 令 格 式 及 常 用 偽 指 令 目 錄 1、 按 指 令 字 節(jié) 數(shù) 分 類 單 字 節(jié) 指 令 、 雙 字 節(jié) 指 令 和 三 字 節(jié) 指 令 。2.1 概 述字 節(jié) 執(zhí) 行 時(shí) 間單 字 節(jié) 指 令 49條 1個(gè) 機(jī)
12、器 周 期 指 令 64條雙 字 節(jié) 指 令 46條 2個(gè) 機(jī) 器 周 期 指 令 45條三 字 節(jié) 指 令 16條 4個(gè) 機(jī) 器 周 期 指 令 2條2.1.3 MCS-51指 令 的 分 類 MCS-51指 令 系 統(tǒng) 有 111條 指 令 , 可 按 下 列 3種 方 式 分 類 :2、 按 指 令 執(zhí) 行 時(shí) 間 分 類 單 機(jī) 器 周 期 指 令 、 雙 機(jī) 器 周 期 指 令 和 四 機(jī) 器 周 期 指 令 。 目 錄 1、 按 指 令 字 節(jié) 數(shù) 分 類 2.1 概 述2、 按 指 令 執(zhí) 行 時(shí) 間 分 類 3、 按 指 令 功 能 分 類 序 號(hào) 功 能 數(shù) 量1 數(shù) 據(jù) 傳
13、 送 指 令 28條2 算 術(shù) 運(yùn) 算 指 令 24條3 邏 輯 運(yùn) 算 與 移 位 指 令 25條4 控 制 轉(zhuǎn) 移 指 令 17條5 位 操 作 指 令 17條2.12.1.3 MCS-51指 令 的 分 類 MCS-51指 令 系 統(tǒng) 有 111條 指 令 , 可 按 下 列 3種 方 式 分 類 : 目 錄 2.1.4 指 令 中 的 常 用 符 號(hào) Rn( n=07) : 表 示 當(dāng) 前 工 作 寄 存 器 R0R7中 的 任 一 個(gè) 。 Ri( i=0或 1) : 表 示 當(dāng) 前 寄 存 器 組 中 用 于 間 址 的 R0或 R1。 #data: 表 示 8位 立 即 數(shù) 。 #
14、data16: 表 示 16位 立 即 數(shù) 。 direct: 表 示 片 內(nèi) RAM的 8位 單 元 地 址 。 addr11: 表 示 11位 目 的 地 址 , 用 于 ACALL和 AJMP指 令 中 。 addr16: 表 示 16位 目 的 地 址 , 用 于 LCALL和 LJMP指 令 中 。 rel: 用 補(bǔ) 碼 形 式 表 示 的 8位 二 進(jìn) 制 地 址 偏 移 量 , 取 值 范 圍 為 128 +127, 主 要 用 于 相 對(duì) 轉(zhuǎn) 移 指 令 。 2.1 概 述 目 錄 bit: 表 示 片 內(nèi) RAM的 位 尋 址 區(qū) , 或 者 是 可 以 位 尋 址 的 SF
15、R的 位 地 址 。 A( 或 ACC) 、 B : 表 示 累 加 器 、 B寄 存 器 。 C: 表 示 PSW中 的 進(jìn) 位 標(biāo) 志 位 Cy。 : 在 間 接 尋 址 方 式 中 , 是 間 址 寄 存 器 指 針 的 前 綴 標(biāo) 志 。 $: 表 示 當(dāng) 前 的 指 令 地 址 。( X) : 表 示 由 X所 指 定 的 某 寄 存 器 或 某 單 元 中 的 內(nèi) 容 。 (X): 表 示 由 X間 接 尋 址 單 元 中 的 內(nèi) 容 。 2.1.4 指 令 中 的 常 用 符 號(hào) 2.1 概 述 2.1 目 錄 2.2.1 寄 存 器 尋 址 2.2.2 直 接 尋 址2.2.3
16、 立 即 數(shù) 尋 址 2.2.4 寄 存 器 間 接 尋 址2.2.5 變 址 尋 址 2.2.6 相 對(duì) 尋 址2.2.7 位 尋 址2.2 尋 址 方 式 在 指 令 的 操 作 數(shù) 位 置 上 , 用 于 表 征 尋 找 操 作 數(shù) 的 方 法定 義 為 “ 尋 址 方 式 ” 。 正 確 地 理 解 、 掌 握 尋 址 方 式 , 是 學(xué) 習(xí) 、 使 用 指 令 的 關(guān)鍵 。 在 MCS-51單 片 機(jī) 中 , 共 使 用 了 以 下 7種 尋 址 方 式 目 錄 2.2.1 寄 存 器 尋 址指 令 中 含 有 一 個(gè) 存 有 操 作 數(shù) 的 寄 存 器 Rn( n=0 7)2.2
17、尋 址 方 式【 特 點(diǎn) 】 寄 存 器 尋 址 方 式 的 指 令 大 多 是 單 字 節(jié) 指 令 。 寄 存 器 的 3位 代 碼 與 操 作 碼 OP共 同 占 用 一 個(gè) 指 令 字 節(jié) 。 例 : MOV A, Rn ;將 寄 存 器 Rn中 的 內(nèi) 容 送 累 加 器 A中 MOV Rn, A ;將 累 加 器 A中 的 數(shù) 據(jù) 送 寄 存 器 Rn 以 MOV A, R7為 例 , 使 用 R7寄 存 器 , 所 以 r r r =111,即 指 令 的 機(jī) 器 碼 為 : 0EFH1 1 1 0 1 r r r 操 作 碼 OP 寄 存 器 代 碼 111E8H EFHMOV
18、A, RnROM的一 個(gè) 字 節(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【 特 點(diǎn) 】 直 接 尋 址 方 式 的 指 令 為 23字 節(jié) 指 令 。 每 個(gè) 直 接 地 址 自 身 占 用 一
19、 個(gè) 指 令 字 節(jié) 。 程 序 ROMOP30H 數(shù) 據(jù) RAM操 作 數(shù) xnn+1 30H累 加 器 AX 目 錄 使 用 直 接 尋 址 應(yīng) 注 意 的 兩 個(gè) 問(wèn) 題 :1、 當(dāng) 地 址 恰 好 在 SFR區(qū) 域 時(shí) , 地 址 也 可 用 寄 存 器 名 來(lái) 表 示 。 2.2.2 直 接 尋 址 2.2 尋 址 方 式 如 : MOV A, 80H 可 以 寫 成 MOV A, P0 后 者 用 SFR中 寄 存 器 的 名 字 取 代 它 的 物 理 地 址 80H。后 者 更 容 易 閱 讀 和 交 流 , 所 以 提 倡 使 用 SFR中 寄 存 器 名 稱來(lái) 代 替 直
20、接 地 址 。 如 : MOV A, SBUF ; 串 口 數(shù) 據(jù) 緩 沖 器 數(shù) 據(jù) 送 A MOV TH1, #0FEH ; 為 定 時(shí) 器 1賦 初 值 目 錄 MOV A, 00H ;將 RAM中 00H單 元 數(shù) 據(jù) 送 累 加 器 AMOV A, R0 ;將 工 作 寄 存 器 R0的 內(nèi) 容 送 累 加 器 A 返 回2.2.2 直 接 尋 址 2.2 尋 址 方 式2、 當(dāng) 直 接 地 址 是 在 工 作 寄 存 器 區(qū) 中 時(shí) , 可 以 使 用 兩 種 尋址 方 式 來(lái) 訪 問(wèn) 。 如 : 使 用 了 不 同 的 尋 址 方 式 , 指 令 的 結(jié) 構(gòu) 與 字 節(jié) 數(shù) 也
21、不 相 同 。 前 者 是 : 11100101(0E5H)、 00000000( 00H) 雙 字 節(jié) 。 后 者 是 : 11101000(0E8H) 單 字 節(jié) ; 最 好 用 寄 存 器 尋 址 方 式 來(lái) 訪 問(wèn)類 似 的 還 有 累 加 器 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寄 存 器【 特 點(diǎn) 】 立 即 數(shù) 尋 址 的 指 令 長(zhǎng) 度 為 2或 3個(gè) 字 節(jié) 。90H20H00HROMDPTR例 : MOV DPTR, #2000Hnn+1n+2注 : 對(duì) 于 16位 立 即 數(shù) 指 令 , 匯 編 時(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。 對(duì) 于
24、 外 部 低 256單 元 RAM的 訪 問(wèn) , 除 可 以 使 用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í) 行 過(guò) 程 示 意 圖 目 錄 指 令 使 用 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 變 址 尋 址這 是 訪 問(wèn) 程 序 存 儲(chǔ) 器 ROM中 數(shù) 據(jù) 的 唯 一
26、的 尋 址 方 式 。 變 址 尋 址 方 式 用 于 查 表 操 作 , 而 數(shù) 據(jù) 表 是 建 立 在 程 序存 儲(chǔ) 器 ROM中 。 2.2 尋 址 方 式 目 錄 【 例 】 已 知 ROM中 的 0300H-0309H 為 0 9的 平 方 表 , 編 程 求 A中 數(shù) 據(jù) 的 平 方 ( 設(shè) 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 尋 址 方 式 目 錄 相 對(duì) 轉(zhuǎn) 移 指 令 使 用 的 一 種 尋 址 方 式 。2.2.6 相 對(duì) 尋 址 SJMP short_lable2.2 尋 址 方 式無(wú) 條 件 轉(zhuǎn) 向 短 標(biāo) 號(hào) short_lable地 址 該 指 令 操 作 碼 為 80H, 操 作 數(shù) 為 偏 移 量 rel( +127 -128) ,它 由 匯 編 程 序 匯 編 時(shí) 自 動(dòng) 計(jì) 算 填 入 。 計(jì) 算 公 式 為 : rel= short_lable地 址 -PC值 , 或 :rel=sh
28、ort_lable地 址 -相 對(duì) 轉(zhuǎn) 移 指 令 地 址 -相 對(duì) 轉(zhuǎn) 移 指 令 字 節(jié) 數(shù)即 相 對(duì) 轉(zhuǎn) 移 指 令 中 給 出 一 個(gè) 轉(zhuǎn) 移 地 址 的 偏 移 量 rel。 在 執(zhí) 行 中 將當(dāng) 前 PC值 ( 執(zhí) 行 當(dāng) 前 指 令 后 的 PC值 ) 與 偏 移 量 rel( 補(bǔ) 碼 ) 相加 , 形 成 實(shí) 際 轉(zhuǎn) 移 的 目 標(biāo) 地 址 相 對(duì) 尋 址 方 式 。 目 錄 【 例 】 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中類 似 的 還 有 邏 輯 運(yùn) 算 指 令 等 。 除 了 RAM中 的 位 尋 址 區(qū) 外 , 大
30、 多 SFR( 地 址 能 夠 被 8整 除 的 ) 都 可 以 按 位 尋 址 , 這 對(duì) 編 程 尤 為 重 要 。2.2 尋 址 方 式 目 錄 作 為 嵌 入 式 控 制 器 , CPU更 多 的 是 處 理 “ 開 關(guān) 量 ” 而 不單 純 是 字 節(jié) 結(jié) 構(gòu) 的 數(shù) 據(jù) 。 因 此 MCS-51在 指 令 設(shè) 計(jì) 上 刻 意 設(shè)計(jì) 了 大 量 的 “ 布 爾 操 作 ” 即 位 操 作 , 這 為 系 統(tǒng) 應(yīng) 用 帶 來(lái) 了很 大 的 方 便 。 MCS-51單 片 機(jī)控 制 、 檢 測(cè)系 統(tǒng) 驅(qū) 動(dòng) 器 電 動(dòng) 機(jī)外 設(shè) 1外 設(shè) 2狀 態(tài) 信 號(hào)狀 態(tài) 信 號(hào)控 制 信 號(hào)2.
31、2.7 位 尋 址 2.2 尋 址 方 式 目 錄 【 舉 例 】 : SETB 90H ;將 P1口 的 D0位 置 1 為 了 增 加 程 序 的 可 讀 性 , 凡 在 SFR中 的 位 地 址 都可 以 使 用 符 號(hào) 來(lái) 替 代 。 如 本 例 中 , 完 全 可 以 使 用 下面 的 指 令 格 式 : SETB P1.0 ;將 P0口 的 D0位 置 1又 如 : SETB EA ( SETB 0AFH) ; 開 中 斷 SETB TR0 ( SETB 8CH) ; 啟 動(dòng) 定 時(shí) 器 這 種 指 令 在 編 譯 時(shí) , 是 要 先 將 符 號(hào) 地 址 進(jìn) 行 轉(zhuǎn) 換 的 。2.
32、22.2.7 位 尋 址 2.2 尋 址 方 式 目 錄 2.3 MCS-51指 令 系 統(tǒng)2.3.0 預(yù) 備 知 識(shí) : WAVE仿 真 開 發(fā) 軟 件 安 裝 與 使 用2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.2 算 邏 運(yùn) 算 與 移 位 指 令2.3.3 控 制 轉(zhuǎn) 移 和 位 操 作 指 令 目 錄 WAVE仿 真 開 發(fā) 軟 件 把 源 程 序 編 輯 、 編 譯 、 下 載 、調(diào) 試 等 操 作 全 部 集 中 在 一 個(gè) 環(huán) 境 下 進(jìn) 行 , 支 持 MCS-51、PIC兩 大 系 列 、 不 同 種 類 的 單 片 機(jī) 。 具 有 軟 件 模 擬 執(zhí) 行 功 能 , 除
33、輸 入 、 輸 出 操 作 外 ,均 可 在 軟 件 模 擬 環(huán) 境 下 完 成 絕 大 部 分 應(yīng) 用 程 序 的 調(diào) 試。 2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 2.3 MCS-51指 令 系 統(tǒng)1、 WAVE仿 真 軟 件 功 能 簡(jiǎn) 介 目 錄 2.3 MCS-51指 令 系 統(tǒng)2、 WAVE仿 真 軟 件 的 安 裝 1) 從 WAVE網(wǎng) 站 http:/www.wave- ( 南 京 偉 福 實(shí) 業(yè) 有 限 公 司 ) 下 載 WAVE6000 for Windows ( 支持 LAB2000) 仿 真 開 發(fā) 軟 件 ( ZIP壓 縮 文 件 格 式 ) ,
34、 經(jīng) ZIP解壓 后 , 運(yùn) 行 其 中 的 SETUP.EXE文 件 即 可 , 該 安 裝 程 序 將 引 導(dǎo)用 戶 完 成 WAVE 6000仿 真 開 發(fā) 軟 件 的 安 裝 過(guò) 程 。 2) 從 課 件 郵 箱 下 載 應(yīng) 用 程 序 文 件 “ wave6000_G”, 雙 擊安 裝 即 可 。2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 1、 WAVE仿 真 軟 件 功 能 簡(jiǎn) 介 目 錄 1) 安 裝 后 , 從 “ WAVE6000_GBIN”子 目 錄 下 雙 擊wave圖 標(biāo) 進(jìn) 入 界 面 ; 2.3 MCS-51指 令 系 統(tǒng)3、 WAVE仿 真 軟 件
35、 的 使 用2、 WAVE仿 真 軟 件 的 安 裝 2.3.0 WAVE仿 真 軟 件 的 安 裝 與 使 用 1、 WAVE仿 真 軟 件 功 能 簡(jiǎn) 介 2) 新 建 一 個(gè) 匯 編 語(yǔ) 言 的 源 程 序 ( 如 : f1.asm) ; 3) 編 譯 、 調(diào) 試 。 目 錄完 成 安 裝 后 , 首 次 啟 動(dòng) 看 到 的 界 面 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ù) 傳 送 是 編 程 中 使 用 最 多 、 最 主 要 的 操 作 。在 傳 送 過(guò) 程 中 , 源 地 址 的 內(nèi) 容 不 被 改 變 ( COPY) 。傳 送 類 指 令 除 了 以 累 加 器 A為 目 標(biāo) 的 傳 送 對(duì) PSW的 P有 影 響外 , 其 余 的 傳 送 類 指 令 對(duì) PSW一 概 無(wú) 影 響 。操 作 碼 數(shù) 據(jù) 的 目 標(biāo) 地 址 數(shù) 據(jù) 的 源 地 址指 令 通 式 : MOV , 2.3 目 錄 特 點(diǎn) : 單 片 機(jī) 內(nèi) 部 各 單 元 之 間
37、 的 內(nèi) 部 數(shù) 據(jù) 傳 送 , 指 令的 源 操 作 數(shù) 和 目 的 操 作 數(shù) 都 在 單 片 機(jī) 內(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、 立 即 尋 址 型 傳 送 指 令【 特 點(diǎn) 】 源 操 作 數(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, 試 問(wèn) 單 片 機(jī) 執(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ù) 傳 送 指 令 目 錄 【 特 點(diǎn) 】 指 令 中 至 少 含 有 一 個(gè) 源 操 作 數(shù) 或 目 的 操 作 數(shù) 的 地址 。 是 2個(gè) 或 3個(gè) 字 節(jié) 的 指 令 格 式
40、, 其 中 直 接 地 址 在 第 2或第 3個(gè) 字 節(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:符 號(hào) 地 址 )MOV 90H, 32H ; ( 同 上 , 試 比 較 兩 種 表 示 方 法 , 一 個(gè) 指 令 兩 種 寫 法 ) 2.3.1.1 2.3.1 數(shù) 據(jù) 傳 送 指 令2、 直 接 尋 址 型 傳 送 指 令2.3.1.1 內(nèi) 部 數(shù) 據(jù) 傳 送 指 令 目 錄 【 特 點(diǎn) 】 指 令 中 含 有
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ù) 傳 送 指 令 目 錄 【 特 點(diǎn) 】 指 令 中 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。 試 問(wèn) : 下 面 的 指 令 執(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) 中 沒(méi) 有 此條 指 令 ! 只 能 使 用 : 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) 會(huì) 正 確 地 估 計(jì) 指 令 的 字 節(jié) 。 凡 是 包 含 有 立 即 數(shù) 、直
46、 接 地 址 的 指 令 , 都 應(yīng) 當(dāng) 在 原 有 的 基 礎(chǔ) 上 加 1或 2。 【 舉 例 】 mov a ,Ri ( ) 個(gè) 字 節(jié) mov a ,direct ( ) 個(gè) 字 節(jié) mov direct ,data ( ) 個(gè) 字 節(jié) mov direct2 ,direct1 ( ) 個(gè) 字 節(jié)( 3) 養(yǎng) 成 一 個(gè) 好 的 、 合 理 的 編 程 習(xí) 慣 。( 4) 注 意 給 程 序 進(jìn) 行 適 當(dāng) 的 注 釋 , 這 對(duì) 于 閱 讀 、 編寫 和 修 改 程 序 都 是 非 常 重 要 的 。( 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ù) 傳 送 指 令 【 特 點(diǎn) 】 單 片 機(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是 單 片 機(jī) 內(nèi) 部 SFR中 的 兩 個(gè) 寄 存 器 DPH、DPL組 合 而 成 。 其 中 DPH為 高 八 位 , DPL為 低 八 位 。 DPTR是 一 個(gè) 專 門 用 于 訪 問(wèn) 外 部 存 儲(chǔ) 器 的 間 址 寄 存 器 。尋 址 能 力 為 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作 為 基 地 址 ; 后 者 是 以 程 序 計(jì) 數(shù) 器 PC為 基 地 址 。 由 于 PC的 內(nèi) 容 與 該 指 令 在 ROM中 的 位 置 有關(guān) , 并 且 PC的 值 是 不 能 隨 便 修 改 的 , 所 以 選 擇 PC作 基地 址 時(shí) , 往 往 要 通 過(guò) 累 加 器 A進(jìn) 行 “ 查 表 修 正 ” 。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指 令 對(duì) 表 頭 地 址 之 間 的 單 元 數(shù) 。 74hdata83h80hFEh014916253
52、649 64812000h2009h2008h2007h2006h2005h2004h2003h2002h2001h1FFFh1FFEh1FFDh 1FFCh1FFBh通 過(guò) A進(jìn)行 修 正2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 使 用 MOVC A,A+PC 指 令 的 特 點(diǎn) :1) 與 使 用 MOVC A,A+DPTR 指 令 不 同 , 使 用 前 應(yīng) 當(dāng)對(duì) A中 的 偏 移 量 加 一 個(gè) “ 修 正 值 ” , 修 正 值 的 大 小為 : MOVC指 令 與 表 頭 之 間 的 字 節(jié) 數(shù) ;2) 程 序 與 數(shù) 據(jù) 表 在 ROM中 的 位 置 是 可 以 浮 動(dòng) 的 。
53、 只 要 MOVC指 令 與 表 之 間 的 距 離 不 變 , 則 程 序 可 以在 ROM中 的 任 意 位 置 上 “ 浮 動(dòng) ” , 程 序 具 有 可 修 改性 。 2.3.1.22.3.1 數(shù) 據(jù) 傳 送 指 令2、 外 部 ROM的 字 節(jié) 傳 送 指 令2.3.1.2 外 部 數(shù) 據(jù) 傳 送 指 令 目 錄 實(shí) 現(xiàn) 外 部 RAM和 累 加 器 A之 間 的 數(shù) 據(jù) 傳 送 。 只 能 使 用 寄 存 器 間 址 的 尋 址 方 式 。 在 MOVX指 令 模 式 下 , 單 片 機(jī) 的 P0、 P2口 做 訪 問(wèn) 外 部 數(shù)據(jù) 的 地 址 和 數(shù) 據(jù) 的 總 線 。 其 中
54、:P0口 做 低 8位 地 址 和 數(shù) 據(jù) 的 復(fù) 用 總 線 ; 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單 元 有 一 個(gè) 數(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 $ ; 停 機(jī)END2.3.1.2 外
56、 部 數(shù) 據(jù) 傳 送 指 令 返 回2.3.1.2 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 堆 棧 操 作 是 一 種 特 殊 的 保 護(hù) 數(shù) 據(jù) 的 傳 送 指 令 。 堆 棧 : 一 個(gè) 用 來(lái) 保 存 程 序 斷 點(diǎn) 、 數(shù) 據(jù) 的 存 儲(chǔ) 區(qū) 域 。 在51單 片 機(jī) 中 , 棧 區(qū) 可 以 使 用 片 內(nèi) RAM的 任 意 位 置 , 具體 位 置 由 指 針 SP來(lái) 確 定 ( 系 統(tǒng) 上 電 時(shí) , SP=07h) 。 1) 進(jìn) 棧 操 作 : 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) 容 要 進(jìn) 棧 ?【 例 】 產(chǎn) 生 延 時(shí) 的 子 程 序 delay。2.3.1.3 堆 棧 操 作 指 令 2.3.1 數(shù) 據(jù) 傳
58、 送 指 令 目 錄 PUSH、 POP 指 令 使 用 的 尋 址 方 式 為 直 接 尋 址 , 所 以 push a X( 有 的 編 譯 系 統(tǒng) 識(shí) 別 , 將 a轉(zhuǎn) 換 為 acc) push acc push 0e0h push r0 X push 00h 進(jìn) 棧 操 作 是 堆 棧 向 上 “ 生 長(zhǎng) ” 的 過(guò) 程 , 即 sp+1; 出 棧 則 相反 。 系 統(tǒng) 上 電 時(shí) , SP=07h。 SP的 值 可 以 根 據(jù) 需 要 進(jìn) 行 修 改 ,在 確 定 SP值 時(shí) 要 考 慮 對(duì) 棧 區(qū) 對(duì) 數(shù) 據(jù) 區(qū) 的 影 響 , 以 避 免 兩 者沖 突 。 如 : 在 程 序
59、的 初 始 化 時(shí) 加 一 條 :MOV SP, 60H 使 用 PUSH、 POP 指 令 的 注 意 事 項(xiàng) 2.3.1 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 一 種 方 便 的 累 加 器 和 寄 存 器 /RAM之 間 的 數(shù) 據(jù) 交 換 。 避 免了 使 用 MOV 指 令 交 換 時(shí) 的 不 便 。 格 式 : 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 跳 過(guò) 例 2 2.3.1.4 數(shù) 據(jù) 交 換 指 令 2.3.1 2.3.1 數(shù) 據(jù) 傳 送 指 令 目 錄 【 例 】 已 知 RAM50h單 元 有 一 個(gè) 0 9范 圍 內(nèi) 的 數(shù) , 試 編 程 將它 變 成 相 應(yīng) 的 ASCII碼 。 【 解 】 : 0 9的 ASCII碼 是 30h 39h, 兩 者 相 差 30h。 方 法 一 : 對(duì) 50h單 元 的 數(shù) 據(jù) 高 四 位 組 裝 一 個(gè) 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相 加 , 形 成相 應(yīng) 的 ASCII碼 ( 略 )2.3.1 數(shù) 據(jù) 傳 送 指 令2.3.1.4 數(shù) 據(jù) 交 換 指 令 2.3.1 目 錄 功 能 : 完 成 算 術(shù) 運(yùn) 算 、 邏 輯 運(yùn) 算 和 循 環(huán) 移 位 三 大 功 能 。特 點(diǎn) : 大 多 指 令 都 要 由 累 加 器 A來(lái) 存 放 一 個(gè) 源 操 作 數(shù) , 并 把 操 作 結(jié) 果 放 回 累 加 器 A中 。2.3.2.1
63、 算 術(shù) 運(yùn) 算 指 令2.3.2.2 邏 輯 運(yùn) 算 指 令2.3.2.3 移 位 指 令 2.3 2.3.2 算 邏 運(yùn) 算 和 移 位 指 令 目 錄 2.3.2.1 算 術(shù) 運(yùn) 算 指 令 不 帶 進(jìn) 位 的 加 法 指 令 ( ADD )1、 加 法 指 令 : 帶 進(jìn) 位 的 加 法 指 令 ( ADDC ) 加 1指 令 ( INC ) ( 編 程 舉 例 )2、 減 法 指 令 : 帶 進(jìn) 位 的 減 法 指 令 ( SUBB ) 減 1指 令 ( DEC )3、 十 進(jìn) 制 調(diào) 整 指 令 : ( DA A )4、 乘 法 和 除 法 指 令 : ( MUL DIV) 2.3
64、.2 2.3.2 算 邏 運(yùn) 算 和 移 位 指 令 目 錄 1、 加 法 指 令 ( 之 一 ) : 不 帶 進(jìn) 位 的 加 法 指 令 格 式 : ADD A ,Rn ; A +Rn AADD A ,direct ; A +(direct) AADD A ,Ri ; A +(Ri) AADD A ,#data ; A +data A 【 注 意 】 參 加 運(yùn) 算 的 數(shù) 據(jù) 都 應(yīng) 是 8位 的 , 結(jié) 果 也 是 8位 并 影 響 PSW。 根 據(jù) 編 程 者 的 需 要 , 8位 數(shù) 據(jù) 可 以 是 無(wú) 符 號(hào) 數(shù) ( 0 255) ,也 可 以 是 有 符 號(hào) 數(shù) ( -128 +
65、127) 。 不 論 編 程 者 使 用 的 數(shù) 據(jù) 是 有 符 號(hào) 數(shù) 還 是 無(wú) 符 號(hào) 數(shù) , CPU都將 它 們 視 為 有 符 號(hào) 數(shù) ( 補(bǔ) 碼 ) 進(jìn) 行 運(yùn) 算 并 影 響 PSW。2.3.2.1 算 術(shù) 運(yùn) 算 指 令2.3.2 算 邏 運(yùn) 算 和 移 位 指 令 2.3.2.1 目 錄 【 例 】 分 析 執(zhí) 行 下 列 指 令 后 累 加 器 A和 PSW中 各 標(biāo) 志 的 變 化 。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ù) 都 是 無(wú) 符 號(hào) 數(shù) , 則 因 Cy=0無(wú) 溢 出 , 25+102=127。 2) 若 兩 個(gè) 數(shù) 是 有 符 號(hào) 數(shù) , 則 因 OV=0無(wú) 溢 出 。cy 0 0 0 CP CS AC 2.3.2.1 1、 加 法 指 令 ( 之 一 ) : 不 帶 進(jìn) 位 的 加 法 指 令2.3.2.1 算 術(shù) 運(yùn) 算 指 令2.3.2 算 邏 運(yùn) 算 和 移 位 指 令 目 錄 【 例 】 分 析 執(zhí) 行 下 列 指 令 后 累 加 器 A和 PSW中 各 標(biāo) 志 的 變 化 。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ù) 是 無(wú) 符 號(hào) 數(shù) , 因 Cy=0無(wú) 溢 出 : 90+107=197 2) 若 兩 數(shù) 是 有 符 號(hào) 數(shù) , 因 OV=1, 故 有 溢 出 , 兩
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語(yǔ)文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語(yǔ)文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版