【正文】
1 0 0 0 0 0 0 . d a t a 2 0 0 0 0 0 0 0 0 4 4 c o e f f . w o r d 0 4 4 h , 0 5 5 h , 0 6 6 h 0 0 0 0 0 1 0 0 5 5 0 0 0 0 0 2 0 0 6 6 3 0 0 0 0 0 0 . b s s b u f f e r , 8 4 0 0 0 0 0 3 0 4 5 6 p r t . w o r d 0 4 5 6 h 5 0 0 0 0 0 0 . t e x t 6 0 0 0 0 0 0 1 0 0 D a d d : L D 0 D H , A 7 0 0 0 0 0 1 F 0 1 0 a l o o p : S U B 1 , A 0 0 0 0 0 2 0 0 0 1 8 0 0 0 0 0 3 F 8 4 2 B C a l o o p , A G E Q 0 0 0 0 0 4 0 0 0 1 39。 1 9 0 0 0 0 0 0 . s e c t v e c t o r s 2 0 0 0 0 0 0 0 0 0 4 4 . w o r d 0 4 4 h , 0 8 8 h 0 0 0 0 0 1 0 0 8 8 2 1 2 2分 析 左 圖 所 示 的段 匯 編 結(jié) 果 :★ 每 個 段 的 S P C都 從 地 址 0 開 始 ;事 實(shí) 上 , 存 儲 器的 地 址 0 只 可 能 有 一個 ; 因 而 , 所 有 段 不可 能 都 從 地 址 0 開 始 。?段的重定位 (Reallocation) 鏈 接 時(shí) 重 定 位 :● 將 各 個 段 定 位 到 存 儲 器 中 , 每 個 段 都 從 合 適 的 地 址 開始 ;● 將 符 號 值 調(diào) 整 到 相 對 于 新 的 段 地 址 的 數(shù) 值 ;● 調(diào) 整 對 重 新 定 位 后 符 號 的 引 用 。.ref X.ref Z.def main.textmain:B YB ZLD X,AY: RESET。t e s t 2 .a s m例 : t e s t 1 . a s m 和 t e s t 2 . a s m 如圖 所 示 , 鏈 接 命 令 文 件 見 下 頁 。?段的重定位 (Reallocation) M E M O R Y { P A G E 0 : V E C T : o r i g i n = 0 x f f 8 0 , l e n = 0 x 8 0 P A G E 1 : I D A T A : o r i g i n = 0 x 8 0 , l e n = 0 x 8 8 0 P A G E 0 : I P R O G : o r i g i n = 0 x A 0 0 , l e n = 0 x 2 8 0 0 P A G E 1 : E D A T A : o r i g i n = 0 x 8 0 0 0 , l e n = 0 x 8 0 0 0 P A G E 0 : E P R O G : o r i g i n = 0 x 8 0 0 0 , l e n = 0 x 7 f 8 0 P A G E 1 : D M A M E M : o r i g i n = 0 x 9 0 0 , l e n = 0 x 1 0 0} / * M E M O R Y * /S E C T I O N S { . t e x t I P R O G P A G E 0 / * c o d e * / . s w i t c h I P R O G P A G E 0 / * s w i t c h t a b l e i n f o * / . c i n i t I P R O G P A G E 0 . v e c t o r s V E C T P A G E 0 / * i n t e r r u p t v e c t o r s * / . c i o I D A T A P A G E 1 / * C I / O * / . d a t a I D A T A | E D A T A P A G E 1 / * i n i t i a l i z e d d a t a * / . b s s I D A T A | E D A T A P A G E 1 / * g l o b a l amp。 鏈 接 命 令 文 件?鏈接時(shí)重定位 1 . d e f X , Z2 0 0 0 0 0 0 . t e x t3 0 0 0 0 0 0 F 0 2 0 X : L D X , A 0 0 0 0 0 1 0 0 0 0 39。 t e s t 1 的 匯 編 結(jié) 果1 . r e f X2 . r e f Z3 . d e f m a i n4 0 0 0 0 0 0 . t e x t5 0 0 0 0 0 0 m a i n :6 0 0 0 0 0 0 F 0 7 3 B Y 0 0 0 0 0 1 0 0 0 6 39。 t e s t 2 的 匯 編 結(jié) 果a d d r e s s n a m e 0 0 0 0 0 8 . b s s0 0 0 0 0 0 8 0 . d a t a0 0 0 0 0 a 0 0 . t e x t0 0 0 0 0 a 0 7 X0 0 0 0 0 a 0 9 Z0 0 0 0 f f 8 0 _ V E C S T A R T。 利用 S E C T I O N S 命 令 選 項(xiàng) 讓 鏈 接 器 定 位 兩 次 。鏈 接 器 提 供 了 一 個 簡 單 的 處 理 該 問 題 的 方 法 。 第 一 次 使 用 裝 入 關(guān) 鍵 字 設(shè)置 裝 入 地 址 , 再 用 運(yùn) 行 關(guān) 鍵 字 設(shè) 置 運(yùn) 行 地 址 。 通 過 M E M O R Y 和 S E C T I O N 兩 條偽 指 令 實(shí) 現(xiàn) 。如 下 鏈 接 命 令 :l n k 5 0 0 a . o b j b . o b j m p r o g . m a p o p r o g . o u t寫 成 鏈 接 器 命 令 文 件 :a . o b jb . o b j m p r o g . m a p o p r o g . o u t?常用匯編偽指令 類別 偽指令 功能 舉例 混合 偽指令 .end 中止匯編,位于最末行 .far_mode 遠(yuǎn)調(diào)用模式 .mmregs 為 MMR定義符號名 .newblock 復(fù)位局部標(biāo)號 .version 指定允許指令的處理器 .emsg 錯誤消息送標(biāo)準(zhǔn)輸出設(shè)備 .mmsg 匯編時(shí)間信息送標(biāo)準(zhǔn)輸出 .wmsg 警告信息送標(biāo)準(zhǔn)輸出 宏定義和宏調(diào)用詳見 P122! ?MEMORY偽指令的使用 定 義 系 統(tǒng) 中 所 包 含 的 各 種 形 式 的 存 儲 器 , 以 及 它 們 所 占 據(jù)的 地 址 范 圍 。?SECTION偽指令的使用 用 于 說 明 如 何 將 輸 入 段 組 合 成 輸 出 段 ; 規(guī) 定 輸 出 段 在 存 儲器 中 的 存 放 位 置 ; 允 許 重 新 命 名 輸 出 段 。?SECTION偽指令的使用 p r o p e r t y 參 數(shù) :◆ 裝 載 位 置 , 定 義 輸 出 段 加 載 到 存 儲 器 的 位 置句 法 : l o a d = a l l o c a t i o n a l l o c a t i o n a l l o c a t i o n其 中 , a l l o c a t i o n 是 具 體 地 址 。 即 不 列 出 每 個 文 件 的 輸 入 段 名 。 c f l a g o p t i o n o n l y. b s s : P A G E = 1}?多文件鏈接實(shí)例(★★★★★) —— 5個步驟 編 寫 復(fù) 位向 量 文 件編 寫源 程 序鏈 接生 成 目 標(biāo) 輸 出 文 件 ( . o u t )① ② ③ ④⑤匯 編 向 量 文 件和 源 程 序編 寫 鏈 接命 令 文 件?多文件鏈接實(shí)例 — 建立一個新的工程 ?多文件鏈接實(shí)例 — Step1 ① 編 寫 復(fù) 位 向 量 文 件 v e c t o r s . a s m . t i t l e v e c t o r s . a