《微機原理與應(yīng)用教學資料》第四章(改)
《《微機原理與應(yīng)用教學資料》第四章(改)》由會員分享,可在線閱讀,更多相關(guān)《《微機原理與應(yīng)用教學資料》第四章(改)(67頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 2 4.1 匯 編 語 言 程 序 格 式匯 編 語 言 機 器 語 言 的 符 號 表 示 , 面 向 機 器 的 語 言匯 編 語 言 的 特 點 :直 接 控 制 目 標 代 碼 , 可 對 輸 入 輸 出 設(shè) 備 進 行 控 制 , 實 時 性 好 ;編 程 效 率 高 , 節(jié) 省 內(nèi) 存 , 運 行 速 度 快 。源 程 序 1.asm 1.obj 1.exe8086常 用 的 匯 編 程 序 : 宏 匯 編 程 序 MASM一 、 指 令 性 語 句 :生 成 機 器 代 碼 , 由 CPU來 執(zhí) 行 格 式 :標 號 : 指 令 助 記 符 操 作 數(shù) , 操 作 數(shù) ; 注
2、釋 字 母 開 頭 , 最 長 31個 字 符匯 編 鏈 接 電 氣 學 院 學 習 部 資 料 庫 3 二 、 偽 指 令 語 句 :只 提 供 匯 編 信 息 功 能 : 變 量 定 義 、 存 儲 區(qū) 分 配 、 段 定 義 、 段 分 配 、 指 示 程序 開 始 、 結(jié) 束 格 式 : 名 字 偽 指 令 助 記 符 操 作 數(shù) , 操 作 數(shù) ; 注 釋 變 量 名 、 段 名 、 過 程 名 、 符 號 名 , 名 字 后 不 允 許 有 “ : ”三 、 數(shù) 據(jù) 項匯 編 語 言 中 的 操 作 數(shù) : 常 數(shù) 、 寄 存 器 、 存 儲 器 、 變 量 、 標 號和 表 達
3、式 。 電 氣 學 院 學 習 部 資 料 庫 4 1.常 數(shù)0011 0101B 026H 123D how are you? , 空 格( 20H)2.變 量是 內(nèi) 存 中 的 一 個 數(shù) 據(jù) 區(qū) 。 在 程 序 中 作 為 操 作 數(shù) 使 用 。 變 量 名又 稱 符 號 地 址 , 表 示 該 數(shù) 據(jù) 項 中 第 一 項 所 在 的 地 址 。和 常 數(shù) 區(qū) 別 : 變 量 值 可 以 改 變 。三 個 屬 性 : 段 地 址 , 段 內(nèi) 偏 移 地 址 , 字 節(jié) 類 型BYTE,WORD,DWORD 3.標 號可 執(zhí) 行 指 令 語 句 的 地 址 的 符 號 表 示 。 可 作
4、為 轉(zhuǎn) 移 指 令 的 目 的操 作 數(shù) 。 三 個 屬 性 : 段 地 址 , 段 內(nèi) 偏 移 地 址 , 距 離 類 型 ( NEAR, FAR) 電 氣 學 院 學 習 部 資 料 庫 5 4.2 表 達 式匯 編 的 表 達 式 為 一 個 值組 成 : 運 算 對 象 +運 算 符 , 運 算 對 象 與 結(jié) 果 都 是 整 數(shù)運 算 對 象 : 常 數(shù) 、 變 量 、 標 號分 為 數(shù) 字 表 達 式 和 地 址 表 達 式 兩 種一 、 算 術(shù) 運 算 符 :+, -, *, /, MOD, SHL, SHR1. 所 有 算 術(shù) 運 算 符 都 可 以 對 數(shù) 據(jù) 進 行 運 算
5、 例 MOV AX , 5+3 ; ( AX) =8 MOV AX , ( 9MOD 2) ; ( AX) =1 MOV AX , 9/2 ; ( AX) =42. 對 地 址 運 算 , 只 能 是 +, - 電 氣 學 院 學 習 部 資 料 庫 6 例 2: ARRAY DB 1, 2, 3, 4 TRY DB 20 MOV AX , ( TRY-ARRAY) ; 匯 編 后 MOV AX , 4例 3: FIRST DB 1, 2, 3 MOV AX , OFFSET FIRST+2二 、 邏 輯 運 算 符 :AND, OR, NOT, XOR 只 能 用 于 數(shù) 字 表 達 式 中
6、例 : PORT EQU 90H AND DL , PORT AND OFEH 前 AND-指 令 助 記 符 , 在 程 序 執(zhí) 行 時 運 算 ; 后 AND-運 算 符 , 在 匯 編 時 計 算 電 氣 學 院 學 習 部 資 料 庫 7 三 、 關(guān) 系 運 算 符 :EQ、 NE、 GT、 LT、 GE、 LE結(jié) 果 為 真 : 輸 出 OFFH、 OFFFFH 全 1結(jié) 果 為 假 : 全 0例 : PORT EQU 2 MOV BX , PORT LT 5 ; MOV BX , 0FFFFH MOV CX , ( ( PORT LT 5) AND 100) OR( ( PORT
7、GE 5) AND 200) ;若 PORT LT 5PORT LT 5=FFFFH FFFFH AND 100=100PORT GE 5=0000 0000H AND 200=0 100 OR 0=100匯 編 后 MOV CX, 100 電 氣 學 院 學 習 部 資 料 庫 8 l 四 、 數(shù) 值 返 回 運 算 符 :OFFSET、 SEG、 TYPE、 LENGTH、 SIZE 1. OFFSET 返 回 變 量 或 標 號 的 偏 移 地 址 值2. SEG 返 回 變 量 或 標 號 的 段 基 地 址 值例 : MOV SI , OFFSET FIRST例 4-8 MOV AX
8、 , SEG FIRST MOV DS , AX MOV DS , SEG FIRST 3. TYPE 變 量 : 返 回 類 型 屬 性 DB 1 DW 2 DD 4 ( 字 節(jié) 數(shù) )TYPE 標 號 : 返 回 距 離 屬 性 NEAR -1 FAR -2例 4-9 電 氣 學 院 學 習 部 資 料 庫 9 4. LENGTH 變 量變 量 中 有 DUP時 , 返 回 變 量 所 包 含 的 單 元 數(shù) 例 n DUP( ): 返 回 n 其 它 : 返 回 15. SIZE=LENGTH*TYPE例 : FIRST DW 1, 2, 3, 4 M DW 100 DUP (?) MO
9、V AL , TYPE FIRST ; MOV AL , 2 MOV AL , LENGTH FIRST ; MOV AL , 1 MOV AL , SIZE FIRST ; MOV AL , 2 MOV AL , TYPE M ; MOV AL , 2 MOV AL , LENGTH M ; MOV AL , 100 MOV AL , SIZE FIRST ; MOV AL , 200 電 氣 學 院 學 習 部 資 料 庫 10 l 五 、 修 改 屬 性 運 算 符 :段 操 作 符 、 PTR、 THIS、 HIGH、 LOW、 SHORT 1、 段 操 作 符 :例 : MOV AX
10、 , ES: BX ES-段 超 越 前 綴 2、 PTR:格 式 : 類 型 /距 離 PTR 變 量 /標 號變 量 : BYTE,WORD 標 號 : NEAR,FAR例 1: AREA1 DB 15H , 23H AREA2 DW 1234H MOV AL , AREA1 ;AL=15H MOV AX , AREA1 ; 應(yīng) 為 : MOV AX , WORD PTR AREA1 MOV BL , BYTE PTR AREA2;BL=34H 電 氣 學 院 學 習 部 資 料 庫 11 例 2: MOV BYTE PTR BX , 10H; BX 10H MOV WORD PTR BX
11、 , 10H ; BX 0010H例 3: JMP FAR PTR AGAIN ; 實 現(xiàn) 段 間 轉(zhuǎn) 移 . AGAIN-標 號3、 THIS 格 式 : 變 量 /標 號 EQU THIS 類 型 /距 離 功 能 : 將 類 型 /距 離 屬 性 賦 予 變 量 /標 號 , 且 該 變 量 /標 號 的地 址 與 下 一 個 存 儲 單 元 相 同 。例 1: FIRST EQU THIS BYTE TABLE DW 200 DUP( ? ) ; 使 變 量 FIRST與TABLE的 偏 移 地 址 相 同 , 但 FIRST為 字 節(jié) 類 型 , TABLE為字 類 型例 2: SP
12、P EQU THIS FAR MOV AX , 100 ; 即 SPP : MOV AX , 100 電 氣 學 院 學 習 部 資 料 庫 12 4、 SHORT SHORT 標 號例 : JMP SHORT L1 ; 限 制 跳 轉(zhuǎn) 的 距 離 在 -128 +127之 間5、 HIGH和 LOW 字 節(jié) 分 離 符 HIGH/LOW 變 量 或 標 號 HIGH 分 離 出 高 位 字 節(jié) LOW分 離 出 低 位 字 節(jié)例 : K1 EQU 1234H MOV AH , HIGH K1 ; MOV AH , 34H MOV AL , LOW K1 ; MOV AL , 12H MOV
13、AH , HIGH 1234H ; 不 能 +立 即 數(shù) 電 氣 學 院 學 習 部 資 料 庫 13 六 、 其 他 運 算 符 1、 ( ) 改 變 優(yōu) 先 級 次 序 表 4-3 2、 用 表 達 地 址 表 達 式例 : MOV CL , BX MOV AX , BX+2 用 表 示 多 重 變 量 的 下 標 值例 : M1 DB 10H, 20H, 30H, 40H MOV AL , M13 ; MOV AL , 40H 電 氣 學 院 學 習 部 資 料 庫 14 4-3 偽 指 令 語 句一 、 數(shù) 據(jù) 定 義 語 句 DB DW格 式 : 變 量 名 助 記 符 操 作 數(shù)
14、, 操 作 數(shù) , ; 注 釋 變 量 名 助 記 符 n DUP( 操 作 數(shù) , 操 作 數(shù) ) ; 注 釋 功 能 : 將 操 作 數(shù) 存 入 變 量 名 指 定 的 存 儲 單 元 中 , 或 者 只 分配 存 儲 空 間 不 存 入 數(shù) 據(jù)例 1: A1 DB 0DH A2 DW ? A3 DB 00H, 01H, 03H A5 DB 9 DUP( ? ) A6 DB 8 DUP( 1, 2, 3) ; 共 3x8=24個 單 元 A7 DB How are you? A8 DW OK; A8 DW OVER 電 氣 學 院 學 習 部 資 料 庫 15 2、 等 號 語 句 =功
15、能 : 同 EQU , 但 允 許 重 復(fù) 定 義例 : X1=100 X1 EQU 100 X1=X1+100; X1=200 X1 EQU 200 ; 電 氣 學 院 學 習 部 資 料 庫 16 三 、 段 定 義 語 句 1、 段 定 義 語 句 SEGMENTENDS格 式 : 段 名 SEGMENT ; 內(nèi) 容 段 名 ENDS ( 上 下 段 名 必 須 相 同 )功 能 : 將 一 個 邏 輯 段 定 義 成 一 個 整 體段 名 : 邏 輯 段 的 標 識 符 , 不 可 省 略 , 確 定 了 邏 輯 段 在 存 儲 器中 的 地 址 。 段 基 地 址例 : MOV AX
16、 , DATA MOV DS , AX 堆 棧 段 定 義 : 段 名 SEGMENT STACK( 不 可 省 略 ) 段 名 ENDS 說 明 : 電 氣 學 院 學 習 部 資 料 庫 17 1. 定 位 類 型 、 組 合 類 型 、 分 類 名 一 般 情 況 下 可 省 略2. Data,stack,es段 中 , 只 能 有 偽 指 令3. Code段 中 , 可 有 指 令 和 與 指 令 相 關(guān) 的 偽 指 令 電 氣 學 院 學 習 部 資 料 庫 18 2、 段 分 配 語 句 : ASSUME 格 式 : ASSUME CS: 段 名 , DS: 段 名 , SS: 段
17、 名 ,ES: 段 名 功 能 ; 將 存 儲 器 中 的 某 幾 個 邏 輯 段 分 別 定 義 成 代 碼 段 、 數(shù)據(jù) 段 、 堆 棧 段 、 附 加 段 。 ( 指 定 某 程 序 運 行 時 , 哪 幾 個 邏輯 段 有 效 。 CS、 DS段 是 必 須 的 , SS、 ES段 看 情 況 )注 意 : assume指 令 只 指 定 某 個 段 分 配 給 哪 幾 個 段 寄 存 器 ,并 將 代 碼 段 的 段 基 址 自 動 裝 入 cs中 , 而 不 能 把 其 它 段 基 址自 動 裝 入 相 應(yīng) 的 段 寄 存 器 中 , 所 以 , 在 代 碼 段 的 開 始 , 要
18、有 一 段 初 始 化 程 序 完 成 這 一 工 作 電 氣 學 院 學 習 部 資 料 庫 19 四 、 過 程 定 義 語 句 段 內(nèi) 調(diào) 用 段 間格 式 : 過 程 名 PROC 屬 性 ( 距 離 屬 性 ( NEAR FAR) ) ; 過 程 內(nèi) 容 RET N 過 程 名 ENDP說 明 :1. RET N 中 N為 正 偶 數(shù) , 表 示 從 過 程 返 回 后 , 堆 棧 指 針 再加 上 SP2. 過 程 內(nèi) 部 至 少 有 一 條 RET指 令 , 也 可 以 有 多 個 , 表 示 此過 程 具 有 多 個 返 回 出 口 。3. 過 程 調(diào) 用 允 許 嵌 套 調(diào)
19、用 , 遞 歸 調(diào) 用 。嵌 套 調(diào) 用 : 一 個 被 調(diào) 用 的 過 程 中 又 調(diào) 用 另 一 個 過 程 。遞 歸 調(diào) 用 : 一 個 被 調(diào) 用 的 過 程 又 調(diào) 用 自 己 電 氣 學 院 學 習 部 資 料 庫 20 五 、 程 序 開 始 、 結(jié) 束 語 句 1、 ORG : 設(shè) 置 位 置 指 針 , 指 定 下 面 語 句 的 起 始 偏 移 地 址例 : DATA SEGMENT ORG 100H A1 DB 10H, 20H, 30H ; A1的 偏 移 地 址 為 0100H ORG 200H A2 DW 3031H, 3233H DATA ENDS 2、 END格
20、 式 : END 標 號 名 是 該 程 序 中 第 一 條 可 執(zhí) 行 語 句 的 標 號 名 , 可 以 缺 省 若 一 個 程 序 中 , 包 含 多 個 模 塊 , 則 為 主 程 序 模 塊 中 的 標 號 名稱 。 電 氣 學 院 學 習 部 資 料 庫 21 l 完 整 的 匯 編 語 言 編 寫 的 格 式DATA SEGMENTDA1 DB this is a sample programDATA ENDSSTACK SEGMENT STACKST1 DB 100 DUP (?)TOP EQU LENGHTH ST1 STACK ENDSCODE SEGMENT ASSUME
21、 CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA; 初 始 化 MOV DS,AX 電 氣 學 院 學 習 部 資 料 庫 22 MOV AX,STACK MOV SS,AX MOV SP,TOP; 設(shè) 棧 底 MOV AX,4C00H; 返 回 DOS INT 21HCODE ENDS END START例 4-29 電 氣 學 院 學 習 部 資 料 庫 23 l 好 的 程 序 特 點 :1. 程 序 結(jié) 構(gòu) 模 塊 化 , 易 讀 , 易 調(diào) 試 和 維 護2. 執(zhí) 行 速 度 快3. 占 用 內(nèi) 存 小l 編 程 基 本 步 驟 :1. 分
22、 析 問 題2. 繪 制 程 序 流 程 圖3. 分 配 存 儲 空 間 及 工 作 單 元 4. 編 程5. 調(diào) 試6. 實 際 運 行 4.4程 序 設(shè) 計 方 法電 氣 學 院 學 習 部 資 料 庫 24 1、 順 序 程 序 設(shè) 計 例 : 設(shè) 計 一 個 順 序 程 序 實 現(xiàn) 兩個 雙 字 數(shù) 的 加 法 , 結(jié) 果 放 在加 數(shù) 單 元 中被 加 數(shù) : 變 量 first,四 單 元加 數(shù) : 變 量 second,四 單 元和 : 變 量 second寄 存 器 間 接 尋 址 : SI,DI累 加 器 AX 送 被 加 數(shù) 、 加 數(shù) 地 址低 位 字 加高 位 字 加送
23、 低 位 和送 高 位 和 電 氣 學 院 學 習 部 資 料 庫 25 FIRST DW 1234H,5678HSECOND DW 2233H,4455HMOV SI , OFFSET FIRST ; MOV DI , OFFSET SECOND MOV AX , SI ADD AX , DI MOV DI , AX MOV AX , SI+2 ADC AX , DI+2 MOV DI+2 , AX 電 氣 學 院 學 習 部 資 料 庫 26 2、 分 支 程 序 設(shè) 計 多 分 支例 : x+1 x1 y = x+2 1 x0 x+3 x 0假 設(shè) x放 在 AX里 CMP AX , 1
24、 JGE P1 CMP AX , 0 JGE P2 ADD AX , 3 JMP P3P1: ADD AX , 1 JMP P3P2: ADD AX , 2 P3: MOV 2000H , AX P2AX1?NAX0?NAX+1 AX+3 AX+2Y YP1 AX2000HP3電 氣 學 院 學 習 部 資 料 庫 27 跳 轉(zhuǎn) 表 實 現(xiàn) 多 分 支根 據(jù) 表 內(nèi) 地 址 分 支表 地 址 =跳 轉(zhuǎn) 表 首 地 址 +偏 移 地 址P1低 位P1高 位P2低 位P2高 位.BASEBASE+2P1P2 開 始取 編 號求 偏 移 量求 表 地 址 分 支 到 相 應(yīng) 的 分 支 程 序電 氣
25、 學 院 學 習 部 資 料 庫 28 例 4-67 有 8個 加 工 子 程 序 , 入 口 地 址 分 別 為 P1, P2,,P8, 編 程 實 現(xiàn) 檢 測 鍵 盤 輸 入 命 令 , 使 系 統(tǒng) 分 別 轉(zhuǎn) 向 8個加 工 子 程 序 。 用 跳 轉(zhuǎn) 表 實 現(xiàn) 。BASE DW P1,P2,P3,P4 DEC AL DW P5,P6,P7,P8 MOV BX,OFFSET BASEKEY DB ? MOV AH,0MOV AH,1; 從 鍵 盤 輸 入 字 符 ADD AL,AL; X2INT 21H ; 至 AL ADD BX,AXAND AL,0FH; ASCIIBIN JMP
26、WORD PTRBX例 : p3子 程 序 地 址 在 cs: 7800H開 始 ,則 BASE中 第 3個 數(shù) 據(jù) 為7800H, 地 址 DS:0004H,當 鍵 盤 輸 入 字 符 3 AL=33H AL=03H AL=2 BX=0 AH=0 AL=2X2=4 BX=0+4=4 BX=0004H=7800H.程 序 轉(zhuǎn) 移 至CS:7800H 電 氣 學 院 學 習 部 資 料 庫 29 2、 循 環(huán) 程 序 設(shè) 計 循 環(huán) 初 始 狀 態(tài) 循 環(huán) 體 循 環(huán) 控 制 條 件 Y 循 環(huán) 初 始 狀 態(tài) 循 環(huán) 控 制 條 件 循 環(huán) 體 NY修 改 參 數(shù) 修 改 參 數(shù) 出 口循 環(huán)
27、 次 數(shù) 固 定N 循 環(huán) 次 數(shù) 不 固 定 電 氣 學 院 學 習 部 資 料 庫 30 例 1: 題 目 同 上 , 利 用 循 環(huán) 程 序 設(shè) 計 MOV SI , OFFSET FIRST MOV DI , OFFSET SECOND CLC CLD MOV CX , 02HLI: LODSW ; DS : SI AX, SI+2 SI ADC AX , DI STOSW ; AX ES : DI, DI+2 DI LOOP LI ; 先 執(zhí) 行 , 后 判 斷 電 氣 學 院 學 習 部 資 料 庫 31 例 2: AX寄 存 器 中 有 16位 二 進 制 數(shù) , 編 程 統(tǒng) 計
28、 其 中 1的 個數(shù) , 結(jié) 果 放 到 BL中 MOV BL , 0; 計 數(shù) 值 清 0 L1: AND AX , AX ; 先 判 斷 , 后 執(zhí) 行 JZ STOP ;若 AX=0, 則 不 進 入 循 環(huán) MOV CX , 16 SHL AX , 1 JNC L2 INC BL L2: JMP L1 STOP: 電 氣 學 院 學 習 部 資 料 庫 32 多 重 循 環(huán) 3點 注 意a) 多 重 循 環(huán) 的 初 始 控 制 條 件b) 內(nèi) 循 環(huán) 可 嵌 套 在 外 循 環(huán) 中 , 內(nèi) 可 跳 到 外 , 外 不 得 進入 內(nèi)c) 循 環(huán) 不 要 回 到 初 始 條 件 , 造 成
29、 死 循 環(huán)最 大 數(shù) 像 氣 泡 一 樣 升 至 數(shù)組 尾第 二 次 內(nèi) 循 環(huán) 只 要 N-2次 3 5 7 8 1 9 3 5 7 1 8 9 3 5 1 7 8 9 3 1 5 7 8 9 1 3 5 7 8 9內(nèi)循環(huán)N-1次 外循環(huán)N-1次例 4-72 氣 泡 排 序 。 使 一 個 數(shù)組 中 的 數(shù) 據(jù) 從 小 到 大 排 列 。分 析 : 內(nèi) 循 環(huán) N-1次 單 元 號 0 1 2 3 4 5 初 始 5 3 8 7 9 1 一 3 5 8 7 9 1 二 3 5 8 7 9 1 三 3 5 7 8 9 1 四 3 5 7 8 9 1 五 3 5 7 8 1 9電 氣 學 院
30、學 習 部 資 料 庫 33 修 改 地 址 (BX+2)數(shù) i數(shù) i+1?兩 數(shù) 位 置 交 換 修 改 地 址 BX+2BXCX-1內(nèi) 循 環(huán) CX=0?初 始 化 :數(shù) 組 起 始 地 址 BX外 循 環(huán) 次 數(shù) DX內(nèi) 循 環(huán) 次 數(shù) CX置 檢 測 起 點 i=0(BX) Dx-1外 循 環(huán) DX=0?NNL2L1 N 電 氣 學 院 學 習 部 資 料 庫 34 DATA SEGMENTBUF DW N,15,37,8600, A768H,3412H,1256H, DW 76HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV
31、 AX, DATA MOV DS,AX MOV BX,0; i=0 MOV CX, BUFBX; NCX DEC CX ; N-1, 內(nèi) 循 環(huán) 次 數(shù)L1: MOV DX,CX ; 外 循 環(huán) 次 數(shù)L2: ADD BX, 2 電 氣 學 院 學 習 部 資 料 庫 35 MOV AX, BUFBX CMP AX, BUFBX+2 JBE CONTI XCHG AX, BUFBX+2 MOV BUFBX, AXCONTI:LOOP L2 MOV CX,DX MOV BX, 0; 回 到 i=0,重 新 開 始 比 較 LOOP L1; CX-1: 內(nèi) 循 環(huán) 次 數(shù) N-1,N-2; 外 循
32、 環(huán) 次 數(shù) -1 MOV AX, 4C00H INT 21HCODE ENDS END START 電 氣 學 院 學 習 部 資 料 庫 36 四 、 子 程 序 結(jié) 構(gòu)子 程 序 說 明l 名 稱 、 功 能l 存 儲 單 元 和 寄 存 器l 入 口 和 出 口l 有 否 調(diào) 用 其 它 子 程 序主 程 序 調(diào) 用 子 程 序 注 意 :1) 堆 棧2) 保 護 現(xiàn) 場 3) 參 數(shù) 傳 遞a) 寄 存 器b) 存 儲 器c) 堆 棧 電 氣 學 院 學 習 部 資 料 庫 37 例 4-30: 編 程 實 現(xiàn) 兩 個 BCD碼 字 數(shù) 據(jù) 相 加 (完 整 程 序 ) DATA S
33、EGMENT FIRST DB 22H, 33H,44H,55H ; 加 數(shù) 1 SECOND DB 55H, 66H,77H,88H ; 加 數(shù) 2 SUM DB 20 DUP( ? ) ; 定 義 存 放 結(jié) 果 單 元 DATA ENDSSTACK SEGMENT STACK STA DB 20 DUP( ? ) ; 設(shè) 置 堆 棧 長 度 為 20個 字 節(jié) TOP EQU LENGTH STASTACK ENDS 電 氣 學 院 學 習 部 資 料 庫 38 CODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DA
34、TASTART: MOV AX , STACK ; 將 堆 棧 段 段 地 址 SS MOV SS , AX MOV AX , TOP ; 將 堆 棧 指 針 指 向 棧 底 MOV SP , AX PUSH DS ; 使 得 程 序 執(zhí) 行 完 了 , 能 返 回 DOS XOR AX , AX PUSH AX MOV AX , DATA MOV DS , AX ; MOV DS , DATA , 初 始 化 MOV ES , AX ; 將 數(shù) 據(jù) 段 段 地 址 DS、 ES MOV SI , OFFSET FIRST MOV BX , OFFSET SECOND MOV DI , OFF
35、SET SUM 電 氣 學 院 學 習 部 資 料 庫 39 MOV CX , 04 CLD CLCADBCD: CALL AAM LOOP ADBCD RET ; 返 回 DOSMAIN ENDP ; 子 程 序 入 口 : SI, BX 出 口 : DI 參 數(shù) 傳 遞 : 存 儲 器AAM PROC NEAR LODSB ; DS:SIAL SI+1SI ADC AL , BX DAA STOSB ; ALES:DI DI+1DI INC BX 電 氣 學 院 學 習 部 資 料 庫 40 RETAAM ENDPCODE ENDS END START 電 氣 學 院 學 習 部 資 料
36、庫 41 4.5 DOS系 統(tǒng) 功 能 調(diào) 用Disk Operation System 磁 盤 操 作 系 統(tǒng) 一 、 DOS常 用 的 軟 中 斷 命 令DOS具 有 對 I/O設(shè) 備 管 理 及 磁 盤 與 文 件 管 理 功 能 ,一 部 份 固 化 在 系 統(tǒng) 的 ROM中一 部 份 在 系 統(tǒng) 啟 動 時 調(diào) 入 內(nèi) 存 , 通 過 軟 件 中 斷 來 調(diào) 用中 斷 指 令 : INT n 表 4-6 DOS 常 用 的 軟 中 斷 命 令 入 口 、 出 口 參 數(shù) 電 氣 學 院 學 習 部 資 料 庫 42 二 、 DOS系 統(tǒng) 功 能 調(diào) 用 INT 21H附 錄 F AH
37、=功 能 號每 個 子 程 序 對 應(yīng) 一 個 功 能 號 ( 相 應(yīng) 的 入 口 號 ) , 格 式如 下 功 能 號 AH 入 口 參 數(shù) 指 定 寄 存 器 INT 21H 根 據(jù) 出 口 參 數(shù) 分 析 功 能 調(diào) 用 執(zhí) 行 情 況1.DOS鍵 盤 功 能 調(diào) 用 表 4-7 鍵 入 單 字 符 AH=1 電 氣 學 院 學 習 部 資 料 庫 43 MOV AH , 1 INT 21H 出 口 : AL=字 符 鍵 入 字 符 串 AH=0AH 電 氣 學 院 學 習 部 資 料 庫 44 2、 DOS顯 示 功 能 調(diào) 用表 4-6 單 字 符 操 作 例 : MOV DL ,
38、$ MOV AH , 2 INT 21H ; 調(diào) 用 結(jié) 果 , 屏 幕 上 在 光 標 處 顯 示 $ 字 符 串 操 作 AH=9的 INT 21H , 注 意 串 必 須 以 $ 結(jié) 束例 4-55: 在 屏 幕 上 顯 示 HOW DO YOU DO? 字 符 串 , 且回 車 、 換 行 。 DATA SEGMENT MES DB HOW DO YOU DO? , 0DH, 0AH, $ ; 0DH(回 車 ) , 0AH( 換 行 ) DATA ENDS 電 氣 學 院 學 習 部 資 料 庫 45 CODE SEGMENT ASSUME CS:CODE , DS:DATAMAIN
39、 : PUSH DS XOR AX , AX PUSH AX MOV AX , DATA MOV DS , AX MOV AH , 9 MOV DX , OFFSET MES INT 21H RET CODE ENDS END START 字 符 碼 功 能08HOAHOCHODH 退 格換 行換 頁回 車 電 氣 學 院 學 習 部 資 料 庫 46 3、 返 回 操 作 系 統(tǒng) 4CH功 能 調(diào) 用 : 能 夠 結(jié) 束 當 前 正 在 執(zhí) 行 的 程 序 , 返 回DOS系 統(tǒng) MOV AH , 4CH INT 21H 電 氣 學 院 學 習 部 資 料 庫 47 4.6 上 機 實 驗
40、參 見 課 本 及 實 驗 指 導(dǎo) 書 實 驗 一 : 兩 個 多 位 十 進 制 數(shù) 相 減 的 實 驗 參 見 課 本 P187程 序 實 驗 二 : 排 序 實 驗要 求 : 從 首 地 址 為 1000H的 內(nèi) 存 區(qū) 域 開 始 存 放 10個 無 符 號 字 數(shù) 據(jù) 數(shù) , 設(shè) 計 程 序 將 這些 數(shù) 從 小 到 大 排 序 , 并 將 排 序 前 后 次 序 的 顯 示 在 屏 幕 上 。參 見 課 本 P181及 實 驗 指 導(dǎo) 書 實 驗 十 三 MOV BX , 0MOV CX , N-1 L1: MOV DX , CX L2: MOV AX , BUFBXCMP AX
41、, BUFBX+2JBE CONTIXCHG AX , BUFBX+2MOV BUFBX, AXCONTI: LOOP L2 MOV CX , DXMOV BX , 0調(diào) 用 顯 示 子 程 序 , 參 見 P177LOOP L1 電 氣 學 院 學 習 部 資 料 庫 48 4.7程 序 舉 例 :一 、 查 表 例 4-64二 、 代 碼 轉(zhuǎn) 換 類 16位 二 進 制 ASC 碼 二 進 制 組 合 BCD碼 非 組 合 BCD 碼 ASC 碼 顯 示三 、 算 術(shù) 運 算 類 加 減 乘 除 ( 二 進 制 , BCD碼 ) 電 氣 學 院 學 習 部 資 料 庫 49 例 4-64
42、內(nèi) 存 中 TABLE開 始 存 放 09的 平 方 值 , 通 過 人 機對 話 , 當 任 給 定 一 個 數(shù) X( 09) , 查 表 得 X的 平 方 值 ,放 在 AL中 。TABLE DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81BUF DB Please input one number(09):,0DH,0AH, $ MOV DX, OFFSET BUFMOV AH, 9INT 21H ; 顯 示 字 符 串MOV AH, 1INT 21H ; 輸 入 字 符AND AL,0FH; ASCIIBINMOV BX, OFFSET TABLE;查 表XL
43、ATHLAT 電 氣 學 院 學 習 部 資 料 庫 50 例 4-69 將 BX中 的 16進 制 數(shù)轉(zhuǎn) 換 為 ASCII碼 , 存 放 到BUF開 始 的 內(nèi) 存 單 元 中 去 ,并 在 屏 幕 顯 示 數(shù) 值轉(zhuǎn) 換 表 :入 口 參 數(shù) : BX出 口 參 數(shù) : BUF開 始 的 內(nèi) 存 單 元 中 , SI指 示 。 16進 制 數(shù) ASCII1 31H2 32H3 33H4 34H9 39HA 41HB 42H 電 氣 學 院 學 習 部 資 料 庫 51 LEA SI, BUF MOV CH,4; 處 理 4位 HEXNEXT: MOV CL,4 ROL BX,CL; 左 移
44、 4位 BIN MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL STORE ADD AL,7STORE: MOV SI,AL MOV AH,2 MOV DL,AL INT 21H ; 顯 示 3 2 5 F2 5 F 3F 30 33 3INC SIDEC CHJNZ NEXTHLT 電 氣 學 院 學 習 部 資 料 庫 52 例 4-78: 將 一 個 無 符 號 16位 二 進 制 數(shù) 轉(zhuǎn) 換 為 4位 壓 縮 型BCD碼 算 法 一 :千 位 數(shù) : 無 符 號 16位 二 進 制 數(shù) /1000的 商 , 得 余 數(shù) 1百 位 數(shù) : 余
45、數(shù) 1/100的 商 , 得 余 數(shù) 2十 位 數(shù) : 余 數(shù) 2/10的 商 , 得 余 數(shù) 3個 位 數(shù) : 余 數(shù) 3 電 氣 學 院 學 習 部 資 料 庫 53 786570001000 7 865 -余 數(shù) 1 865100 800 65 -余 數(shù) 28 65 60 10 65 -余 數(shù) 3 程 序 中 , 7865D=1EB9H1000D=3E8H 865D=361H1EB9H/3E8H=7H.361H361H/64H=8H41H41H/0AH=6H5H 電 氣 學 院 學 習 部 資 料 庫 54 復(fù) 習 除 法 : 16位 /8位 商 AL, 余 AH( AX) ( 源 操
46、作 數(shù) ) 32位 /16位 商 AX, 余 DX( DX, AX) ( 源 操 作 數(shù) )若 計 算 16位 /16位 , 8位 /8位 , 需 將 被 除 數(shù) 擴 展程 序 :入 口 參 數(shù) : AX=16位 二 進 制數(shù)出 口 參 數(shù) : AX=4位 壓 縮 型BCD碼 ( CF=0時 ) 占 用 資 源 : CX , DX 千 位 百 位 千 位 百 位 十 位 千 位 百 位 十 位 個 位 千 位每 次 所 得 商 , 依 次 移 入 DXDXDXDXDX 電 氣 學 院 學 習 部 資 料 庫 55 B2TOBCD PROC FAR CMP AX , 9999 ; AX 9999
47、, 則 CF=1, JBE TRAN ; 不 轉(zhuǎn) 換STCJMP EXITTRAN: PUSH CX ; 保 護 現(xiàn) 場PUSH DXXOR DX , DX; 32位 /16位 , 需 DX MOV CX , 1000 ; 求 千 位 數(shù)DIV CX ; 商 在 AX, 余 數(shù) 1在 DXXCHG AX , DX ; 余 數(shù) 1在 AX, 千 位 數(shù) ( 商 ) 在 DX最 低 4位 , DX=0007H 電 氣 學 院 學 習 部 資 料 庫 56 MOV CL , 4 ; DX左 移 4位 , 低 位 添SHL DX , CL ; 四 個 0, DX=0070HMOV CL , 100 ;
48、 求 百 位 數(shù)DIV CL ; 商 在 AL, 余 數(shù) 2在 AHADD DL , AL ; 百 位 數(shù) 入 DX, DX=0078H MOV CL , 4 ; DX左 移 4位 , DX=0780HSHL DX , CLXCHG AH , AL ; 余 數(shù) 2在 AL AND AX , 00FFH ; AH=0MOV CL , 10 ; 求 十 位 數(shù)DIV CL ; 商 在 AL, 余 數(shù) 3在 AH 電 氣 學 院 學 習 部 資 料 庫 57 ADD DL , AL; DL=86HMOV CL , 4SHL DX , CL; DX=7860HADD DL , AH; DX=7865H
49、 MOV AX , DX; 轉(zhuǎn) 換 后 的 數(shù) 入 AXPOP DXPOP CXEXIT: RETBINTOBCD ENDP算 法 二 : 把 要 轉(zhuǎn) 換 的 數(shù) 分 別 減 去 相 應(yīng) 的 最 高 次 冪 , 直至 不 夠 減 , 此 時 減 的 次 數(shù) 即 是 相 應(yīng) 的 位 電 氣 學 院 學 習 部 資 料 庫 58 例 4-79 將 十 進 制 數(shù) 的 ASCII碼 轉(zhuǎn) 換 成 有 符 號 二 進 制數(shù) 。算 法 : 符 號 字 符 串 標 識 符 MINU。 若 為 負 , MINU=1;數(shù) 字 字 符 ( 31H 39H) 一 位 十 進 制 數(shù) ( 09)a0,a1,a2十 進
50、 制 數(shù) 轉(zhuǎn) 換 成 十 六 進 制 數(shù) :十 六 進 制 數(shù) =a2x100+a1x10+a0 =(a2x10+a1) x10+a0 電 氣 學 院 學 習 部 資 料 庫 59 入 口 : DX字 符 串 地 址 偏 移 量 , CX字 符 個 數(shù) 用 存儲 器 傳 遞 參 數(shù) 。出 口 : AXAX為 16位 , 216=65536 字 符 串 字 符 個 數(shù) 6,( 5位 十 進 制 數(shù) 加 1個 符 號 位 ) 嵌 套 的 子 程 序 : CHE 用 于 乘 10 入 口 : DX 出 口 : DX, CF 使 用 的 寄 存 器 : BX, SI 電 氣 學 院 學 習 部 資 料
51、 庫 60 查 符 號 X10 CHE置 標 志 位DX清 零是 負 數(shù) ?修 改 地 址字 符 串 首 地 址 給 SI Y 讀 下 一 位 數(shù)修 改 地 址累 加 到 DX字 符 串 轉(zhuǎn) 換 完 ?是 負 數(shù) ?取 補 Y 電 氣 學 院 學 習 部 資 料 庫 61 例 : 兩 個 多 字 節(jié) 無 符 號 數(shù) 乘 法 子 程 序( 參 考 例 4-29, P142 ) 高 16位 低 16位 高 16位 低 16位 DX0 AX0 被 乘 數(shù) 低 16位 X低 16位 DX1 AX1 被 乘 數(shù) 高 16位 X低 16位+ DX2 AX2 被 乘 數(shù) 低 16位 X高 16位 DX3 A
52、X3 被 乘 數(shù) 高 16位 X高 16位 BX+6 BX+4 BX+2 BX 電 氣 學 院 學 習 部 資 料 庫 62 DATA SEGMENTFIRST DW 3213H ,4746H SECOND DW 6452HSUM DW 4 DUP(?)DATA ENDSSTACK SEGMENT STACKSTA DB 100 DUP( ? )TOP EQU LENGTH STA ; TOP=100STACK ENDS CODE SEGMENT ASSUME CS: CODE,DS:DATA, SS:STACK MAIN PROC FARSTART: MOV AX, STACK MOV SS
53、 , AX MOV SP, TOP PUSH DS XOR AX , AX PUSH AX MOV AX , DATA MOV DS , AX 電 氣 學 院 學 習 部 資 料 庫 63 MOV SI , OFFSET FIRSTMOV DI , OFFSET SECONDMOV BX , OFFSET SUMCALL DWMULT; 執(zhí) 行 乘 法RETMAIN ENDP CODE ENDS ; 子 程 序 入 口 : SI、 DI指 示 的 內(nèi) 存 單 元 ,出 口 : BX指 示 的 內(nèi) 存 單 元 ,使 用 寄 存 器 : AX、 DXDCODE SEGMENT ( 若 題 意 要
54、求 用 段 間 調(diào) 用 來 實 現(xiàn) ) 電 氣 學 院 學 習 部 資 料 庫 64 ASSUME CS:DCODE , DS:DATA , SS:STACKDWMULT PROC FAR PUSH AX PUSH DX MOV AX , SI ; 低 16位 X低 16位 MUL WORD PTR DI MOV BX , AX MOV BX+2 , DX MOV AX , SI+2 電 氣 學 院 學 習 部 資 料 庫 65 MUL WORD PTR DI ; 高 16位 X乘 數(shù) 低 16位MOV BX+4 , DX CLCADD BX+2 , AXADC BX+4 , 0CLCMOV AX , SI ; 低 16位 X乘 數(shù) 高 16位MUL WORD PTR DI+2ADD BX+2 , AXADC BX+4 , DXCLC 電 氣 學 院 學 習 部 資 料 庫 66 MOV AX , SI+2MUL WORD PTR DI+2 ADD BX+4 , AXMOV BX+6 , DXADC BX+6 , 0POP AXRETDWWULT ENDPEND START 電 氣 學 院 學 習 部 資 料 庫 67謝 謝 大 家 ! 作 業(yè) : 4-2, 3, 5, 6, 11, 13, 15, 16 電 氣 學 院 學 習 部 資 料 庫
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。