影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

南京理工大學《微機原理與接口技術(shù)》微機原理(第三章 程序設(shè)計2)

上傳人:燈火****19 文檔編號:28467532 上傳時間:2021-08-28 格式:PPT 頁數(shù):96 大?。?12KB
收藏 版權(quán)申訴 舉報 下載
南京理工大學《微機原理與接口技術(shù)》微機原理(第三章 程序設(shè)計2)_第1頁
第1頁 / 共96頁
南京理工大學《微機原理與接口技術(shù)》微機原理(第三章 程序設(shè)計2)_第2頁
第2頁 / 共96頁
南京理工大學《微機原理與接口技術(shù)》微機原理(第三章 程序設(shè)計2)_第3頁
第3頁 / 共96頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《南京理工大學《微機原理與接口技術(shù)》微機原理(第三章 程序設(shè)計2)》由會員分享,可在線閱讀,更多相關(guān)《南京理工大學《微機原理與接口技術(shù)》微機原理(第三章 程序設(shè)計2)(96頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、12021-8-13 南 京 理 工 大 學 動 力 學 院2009年11月 22021-8-13 匯 編 語 言 : 匯 編 語 言 是 一 種 面 向 計 算 機 的 符 號 語 言 。 用 指 令 的 助 記 符 、 符 號 地 址 、 標 號 、 偽 指 令 等 書 寫 程 序 的 語 言 。匯 編 語 言 源 程 序 : 用 匯 編 語 言 書 寫 的 源 程 序 。匯 編 : 將 匯 編 語 言 源 程 序 翻 譯 成 機 器 語 言 程 序 的 過 程 。匯 編 程 序 : 完 成 匯 編 過 程 的 系 統(tǒng) 程 序 。 32021-8-13 在 8086/8088匯 編 語 言

2、 中 , 有 兩 類 匯 編 語 言 指 令 。 一 類 是 指 令 性 語 句 , 稱 為 真 指 令 匯 編 程 序 匯 編 后 可 產(chǎn) 生 機 器 指 令 代 碼 ; 另 一 類 是 指 示 性 語 句 , 稱 為 偽 指 令 其 作 用 僅 僅 是 告 訴 匯 編 程 序 對 源 程 序 中 的執(zhí) 行 性 指 令 應 該 如 何 產(chǎn) 生 代 碼 , 或 分 配 存 儲 區(qū) 。3.1 匯 編 語 言 的 基 本 元 素 42021-8-13 一 、 匯 編 語 言 的 指 令 語 句 格 式 由 匯 編 語 言 編 寫 的 源 程 序 是 由 許 多 語 句(也 可 稱 為 匯 編 指

3、令 )組 成 的 。 每 個 語 句 由1-4個 部 分 組 成 。 其 格 式 是 : 標 識 符 指 令 助 記 符 操 作 數(shù) ; 注 釋 其 中 , 帶 方 括 號 的 項 是 任 選 項 。 52021-8-13 1 標 號 (標 識 符 Identifiers )標 識 符 是 由 程 序 員 定 義 的 具 有 特 定 意 義 的 字符 序 列 , 是 給 指 令 或 某 一 存 儲 單 元 地 址 所 起的 名 字 。 標 識 符 可 由 下 列 字 符 組 成 : 字 母 : A - z ; 數(shù) 字 : 0 - 9 ; 特 殊 字 符 : ?、 、 、 _、 $ 。 6202

4、1-8-13 標 識 符 最 多 為 31個 字 符 。 數(shù) 字 不 能 作 標 識 符的 第 一 個 字 符 。當 標 識 符 后 跟 冒 號 時 , 表 示 是 標 號 。 它 代 表該 行 指 令 的 起 始 地 址 。當 標 識 符 后 不 帶 冒 號 時 , 表 示 變 量 。偽 指 令 前 的 標 識 符 不 加 冒 號 。 標 識 符 指 令 助 記 符 操 作 數(shù) ; 注 釋 72021-8-13 2 指 令 助 記 符 (保 留 字 Reserved words) 是 一 類 特 殊 的 標 識 符 , 可 以 是 8086/8088的 指令 助 記 符 , 也 可 以 是

5、偽 指 令 。 如 果 指 令 帶 有 前 綴 (如LOCK、 REP、 REPE REPZ、 REPNE REPNZ), 則 指 令前 綴 和 指 令 助 記 符 要 用 空 格 分 開 。 標 識 符 指 令 助 記 符 操 作 數(shù) ; 注 釋 82021-8-13 3 操 作 數(shù) 指 令 執(zhí) 行 的 對 象例 如 : RET ; 無 操 作 數(shù) INC BX ; 一 個 操 作 數(shù) MOV CX, DI ; 兩 個 操 作 數(shù) 如 果 是 偽 指 令 , 則 可 能 有 多 個 操 作 數(shù) , 例 如 : COST DB 3, 4, 5, 6, 7 ; 5個 操 作 數(shù) 當 操 作 數(shù)

6、超 過 1個 時 , 操 作 數(shù) 之 間 應 用 逗 號 分開 。 操 作 數(shù) 可 以 是 常 數(shù) 、 寄 存 器 名 、 標 號 、 變 量 ,也 可 以 是 表 達 式 , 例 如 : MOV AX, BP+4 ; 標 號 指 令 助 記 符 操 作 數(shù) ; 注 釋 92021-8-13 4 注 釋 該 項 是 為 源 程 序 所 加 的 注 解 , 用 于 提 高 程 序的 可 讀 性 。 在 注 釋 前 面 要 加 分 號 “ ; ” , 它 位 于操 作 數(shù) 之 后 。 匯 編 時 , 對 注 解 不 作 處 理 , 僅 在 列源 程 序 清 單 時 列 出 , 供 編 程 人 員

7、閱 讀 。例 如 : IN AL, PORTB ; 讀 B口 到 AL中標 號 指 令 助 記 符 操 作 數(shù) ; 注 釋 102021-8-13 注 釋 語 句 中 由 分 號 “ ; ” 開 始 的 部 分 為 注 釋 內(nèi) 容 ,用 以 增 加 源 程 序 的 可 讀 性 必 要 時 , 一 個 語 句 行 也 可 以 由 分 號 開 始 作 為階 段 性 注 釋 匯 編 程 序 在 翻 譯 源 程 序 時 將 跳 過 該 部 分 , 不對 它 們 做 任 何 處 理 112021-8-13 二 、 匯 編 語 言 的 運 算 符 匯 編 語 言 運 算 符 所 指 定 的 操 作 由 匯

8、 編 程 序 在匯 編 過 程 中 完 成 , 結(jié) 果 作 為 指 令 的 目 標 代 碼 被 保存 , 與 程 序 執(zhí) 行 時 CPU完 成 的 可 執(zhí) 行 指 令 是 兩 回 事 ,故 匯 編 語 言 運 算 符 也 稱 為 偽 操 作 符 。匯 編 語 言 的 運 算 符 有 : 算 術(shù) 運 算 符 : + 、 、 、 、 MOD; 邏 輯 運 算 符 : AND、 OR、 NOT 、 XOR ; 關(guān) 系 運 算 符 : EQ、 NE、 LT、 GT、 LE、 GE; 取 值 運 算 符 : SEG OFFSET TYPE 屬 性 運 算 符 : PTR 122021-8-13 1 算

9、術(shù) 運 算 符 和 邏 輯 運 算 符 ( 1) 算 術(shù) 運 算 符 : + 、 、 、 、 MOD算 術(shù) 運 算 符 只 能 用 于 數(shù) 字 量 操 作 數(shù) , 結(jié) 果 也 是 數(shù) 字 量 。用 于 存 儲 器 操 作 數(shù) 時 , 只 有 、 運 算 符 有 意 義 。MOD取 模 是 求 數(shù) 字 量 除 法 所 得 的 余 數(shù) 。( 2) 邏 輯 運 算 符 : AND、 OR、 NOT 、 XOR邏 輯 運 算 符 的 操 作 只 能 是 數(shù) 字 的 , 且 結(jié) 果 也 是 數(shù) 字 的 。注 : 1.存 儲 器 操 作 數(shù) 不 能 進 行 邏 輯 運 算 。 2.邏 輯 運 算 作 為

10、運 算 符 時 , 是 在 程 序 匯 編 時 計 算 作 為 指 令 助 記 符 時 , 則 是 在 程 序 執(zhí) 行 時 計 算 。 132021-8-13 2 關(guān) 系 運 算 符 關(guān) 系 運 算 符 : EQ、 NE、 LT、 GT、 LE、 GE;相 等 EQ (Equal)、 不 等 NE (Not Equal)、小 于 LT(Less Than)、 大 于 GT (Greater Than)、小 于 等 于 LE (Less Than or Equal)、大 于 等 于 GE (Greater Than or Equal)關(guān) 系 運 算 符 連 接 的 兩 個 操 作 數(shù) , 必 須

11、 都 是 數(shù) 字 的或 是 在 同 一 段 內(nèi) 的 存 儲 器 的 地 址 。若 關(guān) 系 為 假 (關(guān) 系 不 成 立 ) , 則 結(jié) 果 為 0;若 關(guān) 系 為 真 (關(guān) 系 成 立 ) , 則 結(jié) 果 為 全 1。 142021-8-13 MOV BX, ( ( PORT LT 5) AND 20) OR ( ( PORT GE 5) AND 30)當 PORT的 值 小 于 5時 , 上 述 指 令 匯 編 為 : MOV BX, 20否 則 上 述 指 令 匯 編 為 : MOV BX, 30關(guān) 系 為 假 , 結(jié) 果 為 0關(guān) 系 為 真 , 結(jié) 果 為 全 1 152021-8-1

12、3 3 取 值 運 算 符 (分 析 運 算 符 )把 存 儲 器 地 址 操 作 數(shù) 分 解 成 它 的 組 成 部 分 。取 值 運 算 符 有 :SEG、 OFFSET、 TYPE、 SIZE和 LENGTH SEG 給 出 一 個 變 量 或 標 號 的 段 地 址 ; OFFSET 給 出 一 個 變 量 或 標 號 的 16位 偏 移 量 ; TYPE 返 回 表 示 存 儲 器 操 作 數(shù) 內(nèi) 存 變 量 和 標 號 類 型 的 數(shù) 值 。類 型 byte word dword qword tbyte NEAR FAR類 型 值 1 2 4 8 10 -1 (FFH) -2 (F

13、EH) 162021-8-13 格 式 : SEG 符 號 名 OFFSET 符 號 名 TYPE 符 號 名 例 如 : MOV AX, SEG SLOT ; 將 SLOT的 段 地 址 送 入 AX寄 存 器 MOV AX, OFFSET SLOT ; 將 SLOT的 偏 移 地 址 送 入 AX寄 存 器 172021-8-13 SIZE 取 得 并 返 回 由 DUP定 義 的 內(nèi) 存 變 量 的 字 節(jié) 數(shù) 。 LENGTH 取 得 并 返 回 由 DUP定 義 的 內(nèi) 存 變 量 基 本 單 元 的 個 數(shù) 。關(guān) 系 : SIZE=LENGTH TYPE例 如 : 若 MULT-W

14、ORD DW 50DUP( 0)則 LENGTH MULT-WORD = 50 TYPE MULT-WORD = 2 SIZE MULT-WORD = 100 182021-8-13 定 義 的 變 量 名 具 有 五 種 屬 性 : 5) 規(guī) 模 屬 性 表 示 格 式 : SIZE 變 量 名表 示 變 量 所 在 數(shù) 組 的 字 節(jié) 總 數(shù) 。 即 : SIZE=LENGTH TYPE4) 長 度 屬 性 表 示 格 式 : LENGTH 變 量 名表 示 變 量 所 在 數(shù) 組 的 數(shù) 據(jù) 元 素 個 數(shù) 。 只 當 數(shù) 據(jù) 用 DUP定 義 時 , LENGTH才 等 于 數(shù) 組 的

15、 元 素 個 數(shù) , 否 則 LENGTH=1。3) 類 型 屬 性 表 示 格 式 : TYPE 變 量 名 表 示 變 量 所 在 內(nèi) 存 數(shù) 據(jù) 的 類 型 ; DB( TYPE=1) DW( TYPE=2) DQ( 8)2) 偏 移 地 址 屬 性 表 示 格 式 : OFFSET 變 量 名 表 示 變 量 在 所 在 段 中 的 偏 移 地 址1) 段 屬 性 表 示 格 式 : SEG 變 量 名 表 示 變 量 所 在 段 的 段 基 值 。 192021-8-13 定 義 的 標 號 具 有 三 種 屬 性 :1) 段 屬 性 表 示 格 式 : SEG 標 號 表 示 標

16、號 所 在 段 的 段 基 值 。2) 偏 移 地 址 屬 性 表 示 格 式 : OFFSET 標 號 表 示 標 號 所 在 段 的 偏 移 地 址3) 類 型 屬 性 表 示 格 式 : TYPE 標 號 表 示 標 號 的 轉(zhuǎn) 移 類 型 ; 對 近 和 遠 轉(zhuǎn) 移 標 號 TYPE依 次 返 回 FFFFH、 FFFEH取 值 運 算 符 返 回 的是 一 個 字 操 作 數(shù) ! 202021-8-13 $ 運 算 符$: 當 前 地 址 偏 移 量 的 值BLOCK DB HELLO!NUM EQU $-BLOCK HELLO!BLOCK $;NUM為 6 212021-8-13

17、4 屬 性 運 算 符 (合 成 運 算 符 ) 屬 性 運 算 符 用 來 給 指 令 中 的 操 作 數(shù) 指 定 一 個 臨 時 屬 性 ,而 暫 時 忽 略 當 前 的 屬 性 。(1) 合 成 運 算 符 PTR 忽 略 當 前 操 作 數(shù) 的 類 型 (字 節(jié) 或 字 )及 (NEAR或 FAR),而 給 出 一 個 臨 時 的 類 型 。一 般 格 式 如 下 : 類 型 PTR 操 作 數(shù) 表 達 式 PTR 運 算 符 建 立 一 個 存 儲 器 地 址 操 作 數(shù) , 它 與 PTR右 邊的 存 儲 器 地 址 操 作 數(shù) 有 相 同 的 段 地 址 與 偏 移 量 , 而

18、其 類 型 由左 邊 給 出 的 類 型 重 新 確 定 。 222021-8-13 SLOT DW 25 MOV AL, BYTE PTR SLOT SLOT已 定 義 成 字 單 元 。 若 想 取 出 它 的 第 一 個 字節(jié) 內(nèi) 容 , 則 可 用 PTR使 它 暫 時 改 變 為 字 節(jié) 單 元 。 MOV BX, 5 ; 匯 編 程 序 不 知 道 是 字 節(jié) 還 是 字 傳 送 MOV BYTE PTR BX, 5 ; 若 是 字 節(jié) 傳 送 MOV WORD PTR BX, 5 ; 若 是 字 傳 送標 號 也 可 以 改 變 類 型 屬 性 JMP FAR PTR STEP

19、即 使 標 號 STEP原 先 是 NEAR型 的 , 使 用 FAR PTR后 , 這 個 轉(zhuǎn) 移 就 變 成 段 間 轉(zhuǎn) 移 了 。 232021-8-13 (2) 合 成 運 算 符 THIS 象 PTR一 樣 可 用 來 建 立 一 個 特 殊 類 型 的 存 儲 器 地 址 操 作數(shù) , 新 的 存 儲 器 地 址 操 作 數(shù) 的 段 和 偏 移 量 部 分 就 是 下 一 個能 分 配 的 存 儲 單 元 的 段 和 偏 移 量 , 即 匯 編 程 序 進 行 匯 編 遇到 THIS時 的 當 前 值 。 其 類 型 在 THIS運 算 符 后 面 指 定 。 MY_BYTE EQ

20、U THIS BYTE MY_WORD DW ?將 建 立 MY_BYTE具 有 字 節(jié) 類 型 , 且 與 MY_WORD 具 有相 同 的 段 和 偏 移 地 址 屬 性 。 242021-8-13 (3)符 用 于 在 一 條 指 令 中 以 新 的 段 屬 性 取 代 舊 的 段 屬 性 。有 兩 種 格 式 : 段 寄 存 器 : 地 址 表 達 式例 如 : ADD AX, ES: ALT 段 名 : 地 址 表 達 式 所 用 的 段 名 事 前 必 須 通 過 ASSUME偽 指 令 與 一 個 段 寄 存 器 建立 聯(lián) 系 。例 如 : ASSUME ES: EXTRA_DA

21、TA ADD AX, EXTRA_DATA: ALT 252021-8-13 三 、 表 達 式 表 達 式 是 由 運 算 符 和 操 作 數(shù) 組 成 的 序 列 。在 匯 編 時 , 它 產(chǎn) 生 一 個 確 定 的 值 。僅 表 示 一 個 常 量 , 相 應 的 表 達 式 稱 為 常 量 表達 式 ;也 可 以 表 示 一 個 存 儲 單 元 的 偏 移 地 址 , 相 應的 表 達 式 稱 為 地 址 表 達 式 。 262021-8-13 二 進 制 數(shù) 二 進 制 數(shù) 字 后 跟 字 母 B。 如 01000001B。 八 進 制 數(shù) 八 進 制 數(shù) 字 后 跟 字 母 Q或 O

22、。 如 202Q或 202O。 十 進 制 數(shù) 十 進 制 數(shù) 字 后 跟 D或 不 跟 字 母 。 如 85D或 85。 十 六 進 制 數(shù) 十 六 進 制 數(shù) 字 后 跟 H。 如 56H, 0FFH。注 意 : 當 數(shù) 字 的 第 一 個 字 符 是 A-F時 , 在 字 符 前 應 添 加 一 個 數(shù) 字 0, 以 示 和 變 量 的 區(qū) 別 。 1 常 數(shù) 272021-8-13 十 進 制 浮 點 數(shù) 浮 點 十 進 制 數(shù) 。 如 25E-2 十 六 進 制 實 數(shù) 十 六 進 制 實 數(shù) 后 跟 R。 數(shù) 字 的 位 數(shù) 必 須 是 8, 16或 20。 在 第 一 位 是 0

23、 的 情 況 下 , 數(shù) 字 的 位 數(shù) 可 以 是 9, 17或 21。 如 0FFFFFFFFR。注 意 : 、 兩 種 數(shù) 字 格 式 只 允 許 在 MASM中 使 用 。 字 符 和 字 符 串 字 符 和 字 符 串 要 求 用 單 引 號 括 起 來 , 如 BD 。 282021-8-13 2 常 量 操 作 數(shù) 常 量 操 作 數(shù) 是 一 個 數(shù) 值 操 作 數(shù) , 一 般 是 常 量或 者 是 表 示 常 量 的 標 識 符 。例 如 常 量 操 作 數(shù) 有 100, PORT, VAL等 。數(shù) 字 常 量 操 作 數(shù) 可 采 用 二 、 八 、 十 或 十 六 進 制 等

24、形 式 。 操 作 數(shù) 值 的 允 許 范 圍 為 2n - 2n-1。字 符 串 常 量 操 作 數(shù) 值 為 相 應 字 符 的 ASCII碼 。 常 量 操 作 數(shù) 是 出 現(xiàn) 在 程 序 中 的 確 定 值 , 它 在 程序 的 運 行 期 間 不 會 發(fā) 生 變 化 。 292021-8-13 存 儲 器 操 作 數(shù) 是 一 個 地 址 操 作 數(shù) , 代 表 一 個 存 儲單 元 的 地 址 。 可 以 分 為 變 量 及 標 號 兩 者 類 型 : 變 量 是 存 放 該 變 量 的 存 儲 單 元 的 符 號 地 址存 儲 器 操 作 數(shù) 所 代 表 的 是 某 個 數(shù) 據(jù) 在

25、數(shù) 據(jù) 段 、 附加 段 或 堆 棧 段 中 的 地 址 , 稱 變 量 。 變 量 所 對 應 的存 儲 單 元 內(nèi) 容 在 程 序 的 運 行 過 程 中 是 可 以 改 變 的 。 標 號 則 是 指 令 代 碼 的 符 號 地 址存 儲 器 操 作 數(shù) 所 代 表 的 是 某 條 指 令 代 碼 在 代 碼 段中 的 地 址 , 在 程 序 運 行 過 程 中 不 能 改 變 , 標 號 通常 作 為 轉(zhuǎn) 移 指 令 或 調(diào) 用 指 令 的 目 標 操 作 數(shù) 。3 存 儲 器 操 作 數(shù) 302021-8-13 存 儲 器 操 作 數(shù) 具 有 有 三 個 屬 性 : (1) 段 地

26、址 : 存 儲 單 元 所 在 段 的 段 地 址 ; (2) 偏 移 地 址 : 存 儲 單 元 在 所 在 段 內(nèi) 的 偏 移 地 址 ; (3) 類 型 : 變 量 的 類 型 是 存 儲 單 元 所 存 放 數(shù) 據(jù) 項 的 字 節(jié) 數(shù) ;標 號 的 類 型 作 為 轉(zhuǎn) 移 或 調(diào) 用 指 令 的 目 標 操 作 數(shù) 的 尋 址方 式 , 即 NEAR和 FAR。 標 號 的 默 認 類 型 屬 性 為 NEAR。 312021-8-13 4 常 量 表 達 式 常 量 表 達 式 通 常 由 常 量 操 作 數(shù) 及 運 算 符 構(gòu) 成 ,在 匯 編 時 , 產(chǎn) 生 一 個 常 量 。

27、PORT_VAL十 1 PORT_VAL AND 20H 分 析 運 算 符 作 用 于 存 儲 器 操 作 數(shù) 所 形 成 的 表達 式 也 是 常 量 表 達 式 。 OFFSET SUM SEG SUM TYPE CYCLE 322021-8-13 5 地 址 表 達 式地 址 表 達 式 通 常 由 存 儲 器 操 作 數(shù) 與 運 算 符 構(gòu) 成 。地 址 操 作 數(shù) 構(gòu) 成 地 址 表 達 式 時 , 必 須 有 明 確 的 物理 意 義 。 所 以 對 存 儲 器 操 作 數(shù) 的 運 算 可 以 是 加 或減 一 個 常 量 。例 : SUM 2、 CYCLE 5表 達 式 SUM

28、 2、 CYCLE 5的 值 仍 然 是 一 個 存 儲 器操 作 數(shù) , 其 段 地 址 與 類 型 分 別 與 存 儲 器 操 作 數(shù) SUM及 CYCLE相 同 , 但 偏 移 地 址 分 別 比 SUM大 2及 CYCLE小 5。 表 達 式 是 在 匯 編 時 計 算 的 , 而 變 量 單 元 的 內(nèi)容 在 程 序 的 運 行 過 程 中 可 以 改 變 。 332021-8-13 四 、 匯 編 語 言 程 序 匯 編 步 驟編輯程序 源程序 連接程序匯編程序 目標程序 執(zhí)行程序.ASM .OBJ .EXE匯 編 連 接 342021-8-13 宏 匯 編 程 序 : MASM.

29、EXE連 接 程 序 : LINK.EXE步 驟 :1)編 寫 源 程 序 ; 2)匯 編 ; 3)連 接 ; 4)調(diào) 試 。 352021-8-13 1.編 寫 源 程 序 用 文 本 編 輯 程 序 EDIT.EXE或 EDLIN編 寫 匯 編 語言 源 程 序 , 產(chǎn) 生 擴 展 名 為 .ASM的 源 文 件 。2.匯 編 用 匯 編 語 言 編 寫 的 源 程 序 經(jīng) 過 匯 編 程 序 MASM.EXE自 動 翻 譯 成 目 標 程 序 , 產(chǎn) 生 擴 展 名 為 .OBJ的 目 標文 件 ; 對 源 程 序 中 使 用 了 非 法 指 令 , 標 號 重 復 , 相對 轉(zhuǎn) 移 超

30、 出 轉(zhuǎn) 移 范 圍 等 非 邏 輯 性 錯 誤 給 出 提 示 。 8086的 匯 編 程 序 為 ASM-86, 擴 展 后 的 宏 匯 編程 序 為 MASM-86, 增 加 了 宏 處 理 功 能 、 條 件 匯 編 及某 些 偽 指 令 , 且 可 支 持 8087協(xié) 處 理 器 的 操 作 。 362021-8-13 3.鏈 接 用 鏈 接 程 序 LINK.EXE將 一 個 或 多 個 .OBJ目 標 程 序進 行 鏈 接 , 生 成 擴 展 名 為 .EXE的 可 執(zhí) 行 程 序 。4.調(diào) 試 經(jīng) 過 上 述 步 驟 所 獲 得 的 .EXE可 執(zhí) 行 文 件 , 在 運 行過

31、 程 中 可 能 出 現(xiàn) 邏 輯 錯 誤 , 需 對 可 執(zhí) 行 文 件 .EXE進 行調(diào) 試 。 調(diào) 試 匯 編 程 序 最 常 用 的 工 具 是 動 態(tài) 調(diào) 試 程 序DEBUG。 其 中 從 某 地 址 運 行 程 序 、 設(shè) 置 斷 點 、 單 步 跟蹤 等 功 能 , 可 以 支 持 對 程 序 的 調(diào) 試 。 372021-8-13 偽 指 令 語 句 也 稱 為 指 示 性 語 句 , 是 用 來 對 程序 的 匯 編 過 程 進 行 控 制 , 所 以 , 偽 指 令 不 是 CPU運 行 的 指 令 , 而 是 程 序 員 給 匯 編 程 序 下 達 的 命 令 。是 在

32、匯 編 源 程 序 期 間 由 匯 編 程 序 執(zhí) 行 的 命 令 。3.2 偽 指 令偽 指 令 用 來 對 匯 編 程 序 進 行 控 制 , 對 程 序 中的 數(shù) 據(jù) 進 行 存 儲 空 間 分 配 、 實 現(xiàn) 條 件 匯 編 、 列 表 等處 理 , 其 格 式 和 匯 編 指 令 一 樣 , 但 不 產(chǎn) 生 目 標 代 碼 ,即 不 直 接 命 令 CPU去 執(zhí) 行 什 么 操 作 。 382021-8-13 3.2.1 定 義 數(shù) 據(jù) 偽 指 令 該 類 偽 指 令 用 來 定 義 存 儲 空 間 及 其 所 存 數(shù) 據(jù) 長 度 。 DB: 定 義 字 節(jié) , 即 每 個 數(shù) 據(jù)

33、是 1個 字 節(jié) ; DW: 定 義 字 , 即 每 個 數(shù) 據(jù) 占 1個 字 (2個 字 節(jié) ); DD: 定 義 雙 字 , 即 每 個 數(shù) 據(jù) 占 2個 字 。 低 字 部 分 在 低 地 址 , 高 字 部 分 在 高 地 址 ; DQ: 定 義 4字 長 , 即 每 個 數(shù) 據(jù) 占 4個 字 ; DT: 定 義 10個 字 節(jié) 長 , 用 于 壓 縮 式 十 進 制 數(shù) 。 392021-8-13 例 : DATA1 DB 5, 6, 8, 100, ABCD ,表 示 從 DATA1單 元 開 始 , 連 續(xù) 存 放 5, 6, 8, 100,共 占 4個 字 節(jié) 地 址 。 DA

34、TA2 DW 7, 287表 示 從 DATA2單 元 開 始 , 連 續(xù) 存 放 7, 287兩 個 字 ,共 占 4個 字 節(jié) 地 址 。 TABLE DB ? ;定 義 一 個 存 儲 區(qū) 時 , 也 可 以 不 放 數(shù) 據(jù) , 表 示 在TABLE單 元 中 存 放 的 內(nèi) 容 是 隨 機 的 。 402021-8-13 05H06H08H64H41H42H43H44H 07H00H1FH01H42H41H44H43HDATA1 DATA2DATA1 DB 5, 6, 8, 100, ABCDDATA2 DW 7, 287, AB , CDDATA3 DD AB , CD 42H41H

35、00H00H44H43H00H00HDATA3 412021-8-13 當 定 義 一 個 存 儲 區(qū) 內(nèi) 的 每 個 單 元 要 放 置 同 樣的 數(shù) 據(jù) 時 , 可 用 DUP操 作 符 , 一 般 格 式 為 : COUNT DUP( ? ) ; COUNT 為 重 復 的 次 數(shù) , ? 為 要 重 復 的 數(shù) 據(jù) 。如 : BUFFER DB 100 DUP (0) ;表 示 以 BUFFER為 首 地 址 的 100個 字 節(jié) 中 存 放 00H數(shù)據(jù) BUFFER1 DB 100 DUP( 3, 5, 2DUP( 10) , 35) , 24, NUM 422021-8-13 3.

36、2.2 符 號 定 義 偽 指 令 等 值 偽 指 令 EQU 給 左 邊 符 號 定 義 一 個 值 。 該 值可 以 是 任 何 有 效 的 操 作 數(shù) 表 達 式 , 如 一 個 常 數(shù) 、另 一 個 符 號 名 或 地 址 表 達 式 , 甚 至 一 個 指 令 助 記符 。 在 程 序 中 , 凡 是 出 現(xiàn) 該 符 號 的 地 方 , 匯 編 時均 用 該 值 代 替 。 如 : TIMES EQU 50; TIMES = 50 FIRST EQU SECOND + 1; FIRST=SECOND + 1 ADD1 EQU ADD; 為 ADD指 定 一 個 別 名 ADD1 OR

37、G 100H ABC DB 41H, 42H, 43H, 44H XYZ EQU ABC+2 432021-8-13 解 除 偽 指 令 PURGE 用 于 釋 放 由 EQU偽 指 令 定義 的 符 號 變 量 , 這 樣 這 些 變 量 就 可 以 被 重 新 定義 。 EQU偽 指 令 定 義 的 符 號 在 PURGE偽 指 令 解除 前 , 不 能 重 新 定 義 。 例 : PURGE 符 號 名 1, 符 號 名 2, 符 號 名 N 等 號 賦 值 偽 指 令 “ = ” 功 能 與 EQU相 似 , 能對 已 定 義 的 符 號 名 重 新 定 義 而 無 須 先 釋 放 。

38、 TIMES = 50; FIRST = SECOND + 1; ADD1 = ADD; 442021-8-13 3.2.3 段 定 義 偽 指 令 一 個 完 整 的 匯 編 源 程 序 由 代 碼 段 、 堆 棧 段 、 數(shù) 據(jù)段 , 有 時 還 有 附 加 段 所 組 成 。 段 定 義 偽 指 令 可 將源 程 序 劃 分 成 若 干 段 , 以 便 匯 編 和 連 接 時 將 各 同名 段 進 行 組 合 。 段 定 義 偽 指 令 一 般 格 式 為 : 段 名 SEGMENT 定 位 類 型 組 合 類 型 類 別 ; 段 體 內(nèi) 容 , 由 指 令 及 偽 指 令 組 成 。

39、段 名 ENDS SEGMENT和 ENDS應 成 對 使 用 , 缺 不 可 。 452021-8-13 段 名 : 段 名 是 不 可 省 略 的 , 是 給 定 義 的 段 所 起 的 名 稱 。例 如 : STACK SEGMENT STACK DW 20DUP(?) STACK ENDS 定 位 類 型 : 表 示 該 段 起 始 地 址 位 于 何 處 。 字 節(jié) 型 (BYTE), 段 起 始 地 址 可 位 于 任 何 地 方 ; 字 型 (WORD), 段 起 始 地 址 必 須 位 于 偶 地 址 ; 節(jié) 型 (PARA), 即 段 起 始 地 址 必 須 能 被 16除

40、盡 ; 頁 型 (PAGE), 即 段 起 始 地 址 可 被 256除 盡 ); 缺 省 時 , 段 起 始 地 址 便 定 位 為 PARA型 的 。 462021-8-13 組 合 類 型 : 組 合 類 型 用 于 告 訴 連 接 程 序 , 該 段和 其 它 段 的 組 合 關(guān) 系 。 連 接 程 序 可 以 將 不 同 模 塊 的同 名 段 進 行 組 合 。 組 合 類 型 有 : NONE 表 明 本 段 與 其 它 段 邏 輯 上 不 發(fā) 生 關(guān) 系 ,省 略 時 , 便 指 定 為 這 一 組 合 類 型 。PUBLIC與 其 它 模 塊 中 用 PUBLIC說 明 的 同

41、 名 段 按 先 后 連 接 成 一 個 邏 輯 段 , 使 用 同 一 個 物 理 段 地 址 。STACK 將 具 有 STACK類 型 的 同 名 段 連 接 成 一 個 大 的 堆 棧 , 由 各 模 塊 共 享 。 472021-8-13 COMMON與 其 它 模 塊 中 由 COMMON說 明的 所 有 同 名 段 連 接 時 , 被 重 疊 放 在 一 起 , 其 長 度是 同 名 段 中 最 長 者 的 長 度 。 MEMORY由 MEMORY說 明 的 段 。 在 連 接時 , 它 被 放 在 所 裝 載 程 序 的 最 后 存 儲 區(qū) (最 高 地址 )。 若 幾 個 段

42、 都 有 MEMORY組 合 類 型 , 則 連 接程 序 只 認 定 首 先 遇 到 的 段 具 有 MEMORY組 合 類型 , 其 它 段 則 認 為 是 COMMON類 型 , 并 被 疊 放在 一 起 。AT表 達 式 段 地 址 是 表 達 式 所 給 定 的 值 。 在 程序 中 就 可 由 用 戶 直 接 來 定 義 段 地 址 。 但 這 種 方 式不 適 用 于 代 碼 段 。 482021-8-13 類 別 : 是 用 單 引 號 括 起 來 的 字 符 串 , 以 表 明 該 段 的 類 別 。 如 代 碼 段 (CODE)、 數(shù) 據(jù) 段 (DATA), 堆 棧 段 (

43、STACK)等 。 各 模 塊 中 同 一 類 型 的 段 可 能 具 有 不 同 的 名 字 ,連 接 時 將 同 類 別 的 段 (但 不 一 定 同 名 )放 在 連 續(xù) 的 存儲 區(qū) 內(nèi) 。 上 述 的 組 合 類 型 便 于 多 個 模 塊 的 連 接 。 若 程 序僅 有 一 個 模 塊 , 即 只 包 括 代 碼 段 、 數(shù) 據(jù) 段 和 堆 棧 段時 , 為 了 和 其 它 段 有 區(qū) 別 , 除 了 堆 棧 段 用 STACK說明 外 , 其 它 段 的 組 合 類 型 、 類 別 均 可 省 略 。 492021-8-13 例 如 有 兩 個 模 塊 : 模 塊 1 STAC

44、K SEGMENT STACK DW 300DUP(?) STACK ENDS DATA SEGMENT COMMON ; 重 疊 DATA ENDS CODE SEGMENT PUBLIC ; 先 后 連 接 CODE ENDS 模 塊 2 STACK SEGMENT STACK; 同 類 成 一 個 大 堆 棧 DW 30DUP(?) STACK ENDS DATA SEGMENT COMMON DATA ENDS CODE SEGMENT PUBLIC CODE ENDS END 502021-8-13 3.2.4 設(shè) 定 段 寄 存 器 偽 指 令ASSUME段 寄 存 器 定 義 偽

45、 指 令 。 用 于 建 立 段 名和 段 寄 存 器 之 間 的 嚴 格 對 應 關(guān) 系 。 可 通 知 匯 編 程 序哪 一 個 段 寄 存 器 是 當 前 段 的 段 寄 存 器 , 以 便 對 使 用變 量 或 標 號 的 指 令 匯 編 出 正 確 的 目 的 代 碼 。其 格 式 為 : ASSUME 段 寄 存 器 : 段 名 , 段 寄 存 器 : 段 名 , ASSUME偽 指 令 只 是 指 明 某 一 個 段 地 址 與 段 寄 存 器的 聯(lián) 系 , 沒 有 將 段 地 址 送 入 該 寄 存 器 的 操 作 。 因 此要 將 段 地 址 裝 入 段 寄 存 器 還 需

46、用 匯 編 指 令 來 實 現(xiàn) 。 512021-8-13 例 如 :CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK MOV AX, DATA ; DATA段 值 送 AX MOV DS, AX ; AX內(nèi) 容 送 DS, 本 指 令 執(zhí) 行 完 之 后 , DS才 為 實 際 段 值CODE ENDS 由 于 DOS的 裝 入 程 序 負 責 把 CS初 始 化 成 正 確 的 代 碼段 地 址 , SS初 始 化 為 正 確 的 堆 棧 段 地 址 , 在 程 序 中就 不 必 設(shè) 置 。 但 DS數(shù) 據(jù) 段 或 ES附 加 段 必 須

47、MOV指令 對 DS和 ES進 行 初 始 化 , 以 裝 入 段 地 址 。 522021-8-13 3.2.7 ORG 偽 指 令 ORG偽 指 令 用 于 指 定 段 內(nèi) 程 序 或 數(shù) 據(jù) 代 碼 存 放 的起 始 偏 移 地 址 , 即 用 語 句 中 表 達 式 的 值 作 為 起 始 偏移 地 址 , 此 后 的 程 序 或 數(shù) 據(jù) 代 碼 將 連 續(xù) 存 放 , 除 非遇 到 另 一 個 新 的 ORG語 句 。 一 般 格 式 為 : ORG 例 如 : DATA SEGMENT BUFF1 DB 23, 56H, EOF ORG 2000H BUFF2 DB STRING

48、DATA ENDS 532021-8-13 3.2.5 定 義 過 程 的 偽 指 令 具 有 一 定 功 能 的 程 序 段 作 為 一 個 過 程 (相 當 于 一 個 子 程序 )。 可 以 被 別 的 程 序 調(diào) 用 (用 CALL指 令 )或 由 JMP指令 轉(zhuǎn) 移 到 此 執(zhí) 行 ; 也 可 以 由 程 序 順 序 執(zhí) 行 ; 或 作 為 中斷 處 理 程 序 , 在 中 斷 響 應 后 轉(zhuǎn) 此 執(zhí) 行 。一 個 過 程 由 偽 指 令 PROC和 ENDP來 定 義 。 其 格 式 為 :過 程 名 PROC 類 型 (FAR/NEAR, 缺 省 為 NEAR) RET過 程 名

49、 ENDP 過 程 體 內(nèi) 至 少 應 有 一 條 RET指 令 。 過 程 可 以 嵌 套 , 也可 以 遞 歸 使 用 , 即 過 程 可 以 調(diào) 用 過 程 或 本 身 。過 程 體 542021-8-13 3.2.8 匯 編 結(jié) 束 偽 指 令 END偽 指 令 表 示 源 程 序 的 結(jié) 束 。 每 個 源 程 序 模 塊必 須 且 只 能 用 一 條 END偽 指 令 指 明 結(jié) 束 位 置 , 匯編 程 序 遇 到 END時 立 刻 停 止 匯 編 。 其 一 般 格 式 為 : END 表 達 式 其 中 表 達 式 是 可 選 項 , 表 示 該 匯 編 程 序 模 塊 的

50、啟動 地 址 。 例 如 : END START則 表 明 該 程 序 的 啟 動 地 址 為 START。 552021-8-13 程 序 設(shè) 計 是 應 用 計 算 機 解 決 實 際 問 題 的 重 要 環(huán) 節(jié) 。一 個 優(yōu) 秀 的 程 序 設(shè) 計 的 標 準 為 : 程 序 結(jié) 構(gòu) 清 晰 合 理 , 易 于 理 解 和 維 護 ; 程 序 執(zhí) 行 時 間 短 ; 源 程 序 的 語 句 行 少 ; 程 序 存 儲 的 字 節(jié) 數(shù) 少 ;這 些 要 求 可 通 過 選 擇 算 法 和 優(yōu) 化 程 序 結(jié) 構(gòu) 來 實 現(xiàn) 。3.3 匯 編 語 言 程 序 設(shè) 計 562021-8-13

51、3.3.1 匯 編 語 言 程 序 設(shè) 計 概 述一 、 匯 編 語 言 程 序 的 基 本 結(jié) 構(gòu) 框 架匯 編 語 言 源 程 序 由 可 執(zhí) 行 的 指 令 語 句 和 指 示 性的 偽 指 令 組 成 。 在 匯 編 語 言 源 程 序 至 少 包 括 三段 : 代 碼 段 、 數(shù) 據(jù) 段 、 堆 棧 段 , 必 要 時 還 有 附加 段 。 572021-8-13 二 、 匯 編 語 言 程 序 設(shè) 計 的 基 本 步 驟 1. 分 析 實 際 問 題 , 建 立 解 決 問 題 的 模 型 ; 2. 確 定 解 決 問 題 的 算 法 、 方 法 和 步 驟 ; 3. 根 據(jù) 算

52、法 畫 出 程 序 流 程 圖 , 即 將 解 決 問 題 的思 路 用 圖 形 表 示 。 4. 對 程 序 中 的 數(shù) 據(jù) 的 組 織 、 存 儲 單 元 分 配 、 寄存 器 使 用 規(guī) 劃 等 進 行 統(tǒng) 一 考 慮 和 安 排 。 5. 根 據(jù) 程 序 流 程 圖 編 寫 程 序 ; 6. 程 序 檢 查 、 調(diào) 試 與 修 改 ; 582021-8-13 三 、 匯 編 語 言 程 序 的 基 本 結(jié) 構(gòu) 程 序根 據(jù) Boehm和 Jacobi的 結(jié) 構(gòu) 定 理 , 任 何 程 序 可 以由 三 種 最 基 本 的 結(jié) 構(gòu) 程 序 構(gòu) 成 , 如 下 圖 :順 序 結(jié) 構(gòu) 程 序

53、 分 支 結(jié) 構(gòu) 程 序 循 環(huán) 結(jié) 構(gòu) 程序每 個 結(jié) 構(gòu) 程 序 只 有 一 個 入 口 和 一 個 出 口 , 通 過 三 種結(jié) 構(gòu) 的 組 合 和 嵌 套 可 構(gòu) 成 任 何 復 雜 的 結(jié) 構(gòu) 化 程 序 。 592021-8-13 3.3.2 順 序 結(jié) 構(gòu) 程 序 設(shè) 計 順 序 程 序 設(shè) 計 是 沒 有 分 支 , 沒 有 循 環(huán) 的 直 線 運行 程 序 , 程 序 執(zhí) 行 按 照 IP自 動 增 加 的 順 序 進 行 。例 1: 利 用 查 表 法 計 算 平 方 值 。 已 知 0 9的 平 方 值 連續(xù) 存 在 以 SQTAB開 始 的 存 儲 區(qū) 域 中 , 求

54、SUR單 元 內(nèi)容 X的 平 方 值 , 并 放 在 DIS單 元 中 。 假 定 0 X 9且為 整 數(shù) 。解 : ( 1) 了 解 平 方 表 的 存 放 位 置 ; ( 2) 根 據(jù) X的 值 , 找 到 X對 應 X 2在 表 中 位 置 。 602021-8-13 STACK SEGMENT DB 100 DUP( ? )STACK ENDSDATA SEGMENT SUR DB ? DIS DB ? SQTAB DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA,

55、SS: STACK, ES: DATA 612021-8-13 BEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX LEA BX, SQTAB; 取 平 方 表 基 地 址 MOV AH, 0 MOV AL, SUR ; AL=X ADD BX, AX ; 計 算 地 址 偏 移 MOV AL, BX ; 取 出 X的 平 方 值 MOV DIS, AL RETCODE ENDS END BEGIN 622021-8-13 BEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, A

56、X LEA BX, SQTAB MOV AL, SUR ; AL=X XLAT SQTAB MOV DIS, AL RETCODE ENDS END BEGIN為 使 程 序 精 練 , 可 采 用 換 碼 指 令 XLAT, 代 碼 段如 下 : 632021-8-13 3.3.3 分 支 結(jié) 構(gòu) 程 序 設(shè) 計 分 支 結(jié) 構(gòu) 程 序 的 基 本 思 想 是 根 據(jù) 某 些 條 件 和狀 態(tài) 來 控 制 程 序 下 一 步 的 走 向 。 首 先 執(zhí) 行 能 影響 狀 態(tài) 的 指 令 , 如 算 術(shù) 邏 輯 運 算 指 令 、 移 位 指令 或 位 操 作 指 令 , 然 后 用 條 件

57、轉(zhuǎn) 移 類 指 令 對 各種 狀 態(tài) 標 志 進 行 判 斷 , 進 而 轉(zhuǎn) 移 形 成 分 支 。設(shè) 計 分 支 結(jié) 構(gòu) 程 序 一 般 有 兩 種 方 法 : 比 較 /測 試 分 支 結(jié) 構(gòu) 法 跳 轉(zhuǎn) 表 分 支 結(jié) 構(gòu) 法 642021-8-13 1. 比 較 /測 試 分 支 結(jié) 構(gòu) 法 采 用 比 較 指 令 CMP和 測 試 指 令 TEST, 產(chǎn) 生 相應 的 狀 態(tài) 標 志 , 選 擇 適 當 的 條 件 轉(zhuǎn) 移 指 令 , 實 現(xiàn)不 同 情 況 的 分 支 轉(zhuǎn) 移 。 一 條 轉(zhuǎn) 移 指 令 產(chǎn) 生 兩 路 分支 , n 條 轉(zhuǎn) 移 指 令 可 產(chǎn) 生 n + 1條 分

58、支 。 = 0? BX= 0BX= 1BX= 1 YY 0?例 1 實 現(xiàn) 符 號 函 數(shù) 。 1 X 0Y= 0 X = 0 1 X SI?一 次 排 序 結(jié) 束 ? 總 排 序 結(jié) 束 ?YN N YYAXSI 782021-8-13 程 序 如 下 : LEA DI, BUFFER ; 取 首 地 址MOV BL, 99 ; 須 經(jīng) N-1次 排 序NEXT0: MOV SI, DI ; SI恢 復 指 向 首 地 址MOV CL, BL ; 每 次 排 序 的 比 較 次 數(shù)NEXT3: MOV AX, SI ; 當 前 16位 數(shù) 放 在 AX中ADD SI, 2 ; SI指 向 下

59、 一 個 16位 數(shù)CMP AX, SI ; 當 前 數(shù) 與 下 一 個 數(shù) 比 較JNC NEXT5 ; 大 于 等 于 則 不 交 換MOV DX, SI ; 小 于 則 交 換MOV SI 2, DX ; 可 XCHG SI, AXMOV SI, AX ; MOV SI-2, AXNEXT5: DEC CL ; 計 算 比 較 次 數(shù)JNZ NEXT3DEC BL ; 每 次 排 序 的 比 較 次 數(shù) 減 一 JNZ NEXT0HLT 792021-8-13 LEA DI, BUFFER ; 取 首 地 址 MOV COUNT, 100 ; 排 序 元 素 的 個 數(shù) CLD ; 地

60、址 遞 增 排 序NEXT1: MOV BX, 1 ; 交 換 標 記 DEC COUNT ; 每 次 排 序 的 比 較 次 數(shù) 減 一 JZ EXIT ; 比 較 次 數(shù) 為 0則 結(jié) 束 MOV SI, DI ; SI恢 復 指 向 首 地 址 MOV CX, COUNT ; 每 次 排 序 的 比 較 次 數(shù)NEXT2: LODSW ; 當 前 數(shù) AX, SI 下 一 個 數(shù) CMP AX, SI ; 當 前 數(shù) 與 下 一 個 數(shù) 比 較 JNC NEXT3 ; 大 于 等 于 則 不 交 換 XCHG SI, AX ; 小 于 則 交 換 MOV SI 2, AX ; 大 數(shù) 存

61、 入 上 一 位 置 XOR BX, BX ; 有 交 換 則 交 換 標 記 清 零NEXT3: LOOP NEXT2 ; 一 次 排 序 是 否 結(jié) 束 ? CMP BX, 0 ; 一 次 排 序 是 否 有 交 換 ? JE NEXT1 ; 有 交 換 則 繼 續(xù)EXIT: MOV AX, 4C00H INT 21H 802021-8-13 3.3.5 子 程 序 設(shè) 計 子 程 序 是 常 用 的 程 序 結(jié) 構(gòu) , 將 頻 繁 使 用 的 功 能 寫 成 子 程 序 的形 式 , 可 使 源 程 序 及 目 標 程 序 縮 短 , 提 高 效 率 和 可 靠 性 。 在8086/80

62、88中 , 子 程 序 和 過 程 的 含 義 是 一 致 的 。 主 程 序 可 多 次 調(diào) 用 一 個 或 多 個 子 程 序 ; 子 程 序 可 被 多 個 主 程 序 調(diào) 用 , 也 可 再 調(diào) 用 其 他 子 程 序 ; 子 程 序 調(diào) 用 子 程 序 , 稱 子 程 序 嵌 套 ; 調(diào) 用 自 己 稱 遞 歸 調(diào) 用 ; 子 程 序 調(diào) 用 時 , CPU自 動 將 調(diào) 用 時 的 斷 點 壓 入 堆 棧 保 存 ; 子 程 序 調(diào) 用 時 , 由 程 序 將 要 用 到 寄 存 器 內(nèi) 容 壓 入 堆 棧 保 護 ; 子 程 序 返 回 前 , 將 壓 入 堆 棧 的 寄 存 器

63、 內(nèi) 容 彈 出 , 恢 復 現(xiàn) 場 ; 812021-8-13 編 寫 子 程 序 有 以 下 幾 點 基 本 要 求 :1. 子 程 序 必 須 有 一 定 的 通 用 性 , 確 定 入 口 參 數(shù) 和 出 口 參 數(shù) 。2. 選 用 適 當 的 方 法 進 行 主 程 序 和 子 程 序 間 參 數(shù) 的 傳 遞 。 利 用 寄 存 器 進 行 參 數(shù) 傳 遞 。 例 9 利 用 存 儲 單 元 按 事 先 約 定 的 規(guī) 則 進 行 參 數(shù) 傳 遞 。 利 用 堆 棧 進 行 參 數(shù) 傳 遞 。 例 10 3. 注 意 現(xiàn) 場 信 息 的 保 護 和 恢 復 , 最 好 在 子 程 序

64、 中 進 行 保 護 。4. 正 確 使 用 堆 棧 。 子 程 序 嵌 套 較 多 時 , 使 用 堆 棧 要 仔 細 。5. 編 制 子 程 序 文 件 , 主 要 包 括 以 下 內(nèi) 容 : 子 程 序 的 名 稱 ; 子 程 序 的 功 能 描 述 ; 子 程 序 的 入 口 參 數(shù) 和 出 口 參 數(shù) ; 子 程 序 所 使 用 的 寄 存 器 和 存 儲 單 元 列 表 , 對 其 作 用 描 述 ; 本 子 程 序 所 調(diào) 用 的 其 他 子 程 序 列 表 ; 子 程 序 調(diào) 用 形 式 舉 例 ; 822021-8-13 例 9 兩 個 6字 節(jié) 數(shù) 相 加 。程 序 如 下

65、 :DATA SEGMENTADD1 DB 0FEH, 86H, 7CH, 35H, 68H, 77HADD2 DB 45H, 0BCH, 7DH, 6AH, 87H, 90HSUM DB 6DUP( 0)COUNT DB 6DATA ENDSSTACK SEGMENT DB 100DUP( ? )STACK ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA, SS: STACKMADD: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX 832021-8-13 MOV SI, OFFSET ADD1MOV DI

66、, OFFSET ADD2MOV BX, OFFSET SUMMOV CX, COUNTCLCAGAIN: CALL SUBADDLOOP AGAINMOV AX, 4C00HINT 21HSUBADD PROC ; 完 成 一 個 字 節(jié) 相 加PUSH AX ; 入 口 參 數(shù) : SI, DI, BXMOV AL, SI ; 出 口 參 數(shù) : SI, DI, BXADC AL, DIMOV BX, ALINC SIINC DIINC BXPOP AXRET SUBADD ENDPCODE ENDSEND MADD 842021-8-13 例 12 數(shù) 的 階 乘 n*(n 1)!按 照 階 乘 的 定 義 n!= 這 是 一 個 遞 歸 定 義 式 , 1在 程 序 設(shè) 計 時 , 可 采 用 子 程 序 的 的 遞 歸 調(diào) 用 形 式 。DATA SEGMENTNUM DB 5FNUM DW ?DATA ENDSSTACK SEGMENTDB 100DUP( ? )STACK ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA, SS: STA

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!