- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
單元10:結構與巨集 章節概念 結構 Structures 巨集 Macros 條件組譯指引 Conditional-Assembly Directives 定義重複的區塊 Defining Repeat Blocks 結構 – 概念 定義結構 宣告結構變數 參照結構變數 範例: 顯示系統時間 含有結構的結構 範例: 醉漢漫步 宣告和使用聯合體 結構 是一個樣板或樣式,這種樣板用於將邏輯上相關的變數整理在一起。 . 結構中的各個變數則可以稱為欄位 (field) 程式中的敘述可以將結構當成單一的實體來加以存取,也可以針對結構的各個欄位進行存取 結構通常含有不同資料型別的欄位 聯合體也是用於將多個識別字整理成一組,不過,這些識別字會重疊在 記憶體中的相同區域內 使用結構 使用結構,會牽涉到以下三個連續的步驟: 定義結構。 宣告一個或多個該結構型別的變數,這些變數稱為結構變數 (structure variables)。 撰寫執行時期的指令來存取結構的各欄位。 定義結構 COORD結構 在 Windows API 中所定義的 COORD 結構,可以識別出螢幕座標 X 和 Y。 Employee 結構 宣告結構變數 在宣告結構變數的時候,可以選擇使用明確的值,對此變數進行初始化的工作。 在此宣告語法中,識別字的製訂方式與 MASM 中的其他變數名稱製訂方式,依循著相 同的法則。 在宣告結構變數時,如果使用了空的角括號 ,那麼在所產生的結構變數中,相對應的 欄位值會採用結構定義中預設的欄位值。 範例: 陣列初始化 使用 DUP 運算子,將陣列中的部分或全部元素初始化。 結構陣列 以使用 DUP 運算子,來建立結構陣列 (array of structures)。 在下列敘述 中,AllPoints 中每個元素的 X 和 Y 欄位,都會初始化成零: 參照結構變數 參照結構變數 (續前一頁) 通過陣列的迴圈 範例: 顯示系統時間 (3之1) MS-Windows 有提供能設定螢幕游標位置,以及獲取系統時間的主控台函式。 使用 COORD and SYSTEMTIME 結構: 範例: 顯示系統時間 (3之2) GetStdHandle擷取標準主控台輸出處置碼 SetConsoleCursorPosition要設定游標位置 GetLocalTime取得系統時間 範例: 顯示系統時間 (3之3) 顯示使用程式庫呼叫的時間: 含有結構的結構(2之1) 含有結構的結構(2之2) 範例: 醉漢漫步 隨機路徑模擬 當模擬執行動作時,使用nested結構累積路徑資料 使用多個部門結構選擇方向 宣告和使用聯合體 在結構中的每個欄位的位移值,都是相對於結構的第一個位元組,相形之下,在聯合體 (union) 中的所有欄位則都是以相同的位移作為起始點。 聯合體所佔的儲存空間 大小,是等於該聯合體內最長欄位的長度。 當聯合體不是結構的一部分時,它的宣告方 式會需要使用到 UNION 和 ENDS 指引: 範例 範例 含有聯合體的結構 下一章 結構 Structures 巨集 Macros 條件組譯指引 Conditional-Assembly Directives 定義重複的區塊 Defining Repeat Blocks 巨集 綜述 Introducing Macros 定義巨集 Defining Macros 引用巨集 Invoking Macros 額外的巨集功能 Macro Examples 巨集函式庫 Nested Macros 示範程式: Wrappers 綜述 巨集程序 (macro procedure) 是指,其有加以命名的組合語言敘述的區塊。 一旦加以定義, 便能在程式中,任意多次地引用該巨集程序。 當讀者引用 (invoke) 了一個巨集程序時,其程式碼將會被複製,並且直接插入程式中,插入的位置則是引用巨集的地方。 習慣上,我 們是稱呼這種引用過程,為呼叫 (calling) 巨集程序,不過就技術上而言,過程中並沒有 牽涉到任何 CALL 指令。 定義巨集 定義巨集,需要使用到 MACRO 和 ENDM 指引。其語法如下 : 在 MACRO 和 ENDN 指引之間的敘述,直到該巨集被引用之前,都不會被組譯。 在巨集的定義中,可以 有任何個數的參數,不過各參數之間必須以逗號區隔開。 mNewLine 巨集範例 mPutChar 巨集 引用巨集(2之1) 經由在程式中插入巨集的名稱,就可以呼叫 ( 引用 ) 該巨集,如果需要的話,也可以緊隨 在巨集名稱之後,加上巨集的引數。 巨集名稱必須是在原始碼的該呼叫位置以前,就已經定義過的巨集的名稱。 每 個引數都是
文档评论(0)