组合语言.ppt
《组合语言.ppt》由会员分享,可在线阅读,更多相关《组合语言.ppt(39页珍藏版)》请在三一文库上搜索。
1、第 3 章、組合語言,作者:陳鍾誠 旗標出版社,第 3 章、組合語言,3.1 基本範例 3.2 陣列存取 3.3 副程式呼叫 3.4 進階語法 3.5 實務案例:IA32 的組合語言,CPU0 的組合語言,前置表示法 CPU0 的組合語言一律採用目標在前的撰寫方式。 範例 ADD R1, R2, R3 相當於 R1 = R2 + R3,3.1 基本範例,資料移動 基本數學運算 模擬條件判斷 模擬迴圈 一個完整範例 - 從 1 加到 10,資料移動,C 語言 組合語言 以組合語言移動記憶體資料,基本數學運算,模擬條件判斷,模擬迴圈,一個完整範例 - 從 1 加到 10,3.2 陣列存取,字串複製
2、 (指標版) 字串複製 (索引版) 整數陣列的複製,字串複製 (指標版),字串複製 (索引版),整數陣列的複製,3.3 副程式呼叫,單層次的副程式呼叫 參數的傳遞方法 使用暫存器 多層次的副程式呼叫 參數的傳遞方法 使用堆疊,單層次的副程式呼叫,參數的傳遞方法 使用暫存器,指令 CALL 0x30 的執行過程,PC=PC + 4; 在指令擷取之後 PC 從 28 變為 32。 LR = PC; 將 PC 存入到連結暫存器 LR 中。 PC=PC + 30,記憶體,=CALL 0x30,2B 00 00 30,ALU (加法運算),暫存器,IR = 2B 00 00 30 (CALL 0x30)
3、,PC = 00 00 00 2C,00 00 00 5C,(3),LR = 00 00 00 2C,(2),(1),0028 002C 005C,圖 3.1 指令CALL 0x30 的執行過程,指令 RET 的執行過程,圖 3.2 指令RET 的執行過程,多層次的副程式呼叫,參數的傳遞方法 使用堆疊 避免上下層函數用到同一個暫存器,所產生的覆蓋現象。 將 LR 儲存到堆疊中,以免在下一層 CALL 返回位址被覆蓋掉。,f1: POP R2 取得堆疊中的參數 PUSH LR 保存 LR ST R2, t LD R3, pt PUSH R3 CALL f2 ST R1, b ADD R1, R1
4、, R1 POP LR 恢復 LR RET 返回 t: RESW 1 b: RESW 1 pt: WORD t,int f1(int t) int b = f2( ,範例 3.12 的片段,3.4 進階語法,定址範圍的問題 初始值 Literal : 值接將常數嵌入到指令中 假指令 LTORG : 以 LTORG 提早展開 Literal EQU : 符號定義 ORG : 重設位址 運算式 分段,定址範圍的問題,避免將巨大陣列放在中間,應該放在最後面,或者用指標的方式解決巨大陣列的問題。,初始值,範例 3.14 中的 EOF, oDev 等變數都具有初始值。,Literal 直接將常數嵌入到指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组合 语言
链接地址:https://www.31doc.com/p-2754152.html