第 3 章、組合語言 作者:陳鍾誠 旗標出版社.

Slides:



Advertisements
Similar presentations
《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
Advertisements

第1章第1章 PC/AT 系統 1 Chapter 1 Chapter 1 PC/AT 系統 001.
報酬遞增與新的商業世界.
计算机组成原理.
金融市場概述 中華經濟研究院 國際所研究員 王儷容 2015/3 L.R. Wang.
孔明锁制作.
600年前,鄭和率領世界上最強大的艦隊,浩浩蕩蕩的駛入印度洋,展開一場「文化帝國」的海上大秀。
第八章 组织文化的整合 ——并购中的文化整合(二) 小组成员:浦若蓉、朱谷一、贾彦彦.
市场营销类流程化系列教材 市场营销综合实训 主编:渤海大学 单凤儒 教授 科学出版社.
企劃撰寫.
证券交易模拟 第2讲 交易规则与盘面术语.
第9章 计算机病毒的防治 计算机病毒基本常识 什么是计算机病毒 计算机病毒特点与危害 计算机病毒防治 病毒的传播途径 常用反病毒软件使用
這真是默默的一群, 默默的表現著一個勞動者那種敦厚樸實的風範,她們的名字不會被人知道, 可是在我的心目中,她們是有資格被稱之為「人物」的一群。 那默默的一群 作者:張騰蛟.
宿州学院经济管理系 第十章 管理的创新职能 二00九年五月.
水仙电器财务失败案例.
第一章 计算机基础知识 计算机的发展简史 1 计算机软件系统 6 计算机的定义和分类 2 微型计算机的组成 7 计算机的特点和用途 3
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
2014年度企业所得税业务培训 蚌埠市地方税务局所得税科.
日新月异的信息技术.
计算机体系结构 应用程序 软件 操作系统 编译器 固件 指令集 输入输出 CPU 硬件 内存 (I/O) 集成电路 元件,逻辑门.
电子商务师 第二部分 电子商务的技术基础—计算机.
企业所得税年度纳税申报表(2014年版)培训 国家税务总局公告2014年第63号
第10章 DOS功能调用与BIOS中断调用.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
心理的力量 --兼谈教师心理压力的调适
臺北市特殊教育校園融合 聽覺障礙篇 臺北市政府教育局 發行 臺北市立中山女子高級中學 彙編.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
寫 作 教 學 6 電腦與我 時代改變,科技進步,電腦成為日常生活不可或缺的設備。我是二十一世紀的E世代少年,一隻滑鼠在手,樂趣無窮。
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第7章 中断与异常.
第2章 MCS-51单片机指令系统与汇编语言程序设计
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
讲师:田家华 第1章 认识计算机 本章要点   计算机的发展 计算机的组成.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
計算機結構 – 概論 陳鍾誠 於金門大學.
第 5 章、連結與載入 作者:陳鍾誠 旗標出版社.
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
基本的”防”黑客技术 Basic” ” Hacker Technique
微机原理及应用 主讲:郑海春.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第1章、系統軟體 作者:陳鍾誠 旗標出版社.
和諧社區資訊服務推廣計畫 -軟體雲端社區 資訊研習營
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
1.3 微型计算机的结构和工作原理.
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
臺北市特殊教育校園融合 聽覺障礙篇 臺北市政府教育局 發行 臺北市立中山女子高級中學 彙編.
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
微机原理及接口技术 主讲人 钱晓捷.
作業系統 第三章 作業系統結構.
Name1..hour //加班時數 name2..hour //請假時數
靜宜大學專用 PowerPoint 檔案 數位教材
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
基础篇 微型计算机系统 硬件系统 软件系统 操作系统基础 作业 计算机编码和数制 系统综述.
2019/4/29 计算机组成原理 辅导教师:陆明强.
開放電腦計劃 報告人:陳鍾誠 2011 年 8 月 20 日 台灣開源人年會 COSCUP 2011 – 中研院
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
作业3、4、6、7 俞天灿.
B A C D ADD YOUR TEXT ADD YOUR TEXT ADD YOUR TEXT ADD YOUR TEXT
報告人:張淑惠.
中式烹调技艺 第五章.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
Presentation transcript:

第 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 陣列存取 字串複製 (指標版) 字串複製 (索引版) 整數陣列的複製

字串複製 (指標版)

字串複製 (索引版)

整數陣列的複製

3.3 副程式呼叫 單層次的副程式呼叫 參數的傳遞方法 – 使用暫存器 多層次的副程式呼叫 參數的傳遞方法– 使用堆疊

單層次的副程式呼叫 參數的傳遞方法 – 使用暫存器

指令 CALL [0x30] 的執行過程 記憶體 ALU (加法運算) 暫存器 0028 002C 005C 2B 00 00 30 PC=PC + 4; 在指令擷取之後 PC 從 28 變為 32。 LR = PC; 將 PC 存入到連結暫存器 LR 中。 PC=PC + 30 記憶體 ALU (加法運算) 暫存器 0028 002C 005C 2B 00 00 30 =CALL [0x30] (1) 00 00 00 5C (3) PC = 00 00 00 2C IR = 2B 00 00 30 (CALL [0x30]) (2) LR = 00 00 00 2C 圖 3.1 指令CALL [0x30] 的執行過程

指令 RET 的執行過程 記憶體 0028 2B 00 00 30 PC=0070 ALU (加法器…) 暫存器 2C 00 00 00 CALL [0x30] 2B 00 00 30 PC=0070 ALU (加法器…) 暫存器 IR = 2C 00 00 00 (RET) PC =00 00 00 70 LR = 00 00 00 2C 將 LR 放回 PC 2C 00 00 00 PC=002C … RET 圖 3.2 指令RET 的執行過程

多層次的副程式呼叫 參數的傳遞方法– 使用堆疊 避免上下層函數用到同一個暫存器,所產生的覆蓋現象。 將 LR 儲存到堆疊中,以免在下一層 CALL 返回位址被覆蓋掉。 範例 3.12 的片段 f1: POP R2 取得堆疊中的參數 PUSH LR 保存 LR ST R2, t LD R3, pt PUSH R3 CALL f2 ST R1, b ADD R1, R1, R1 POP LR 恢復 LR RET 返回 t: RESW 1 b: RESW 1 pt: WORD t int f1(int t) { int b = f2(&t); return b+b; }

3.4 進階語法 定址範圍的問題 初始值 Literal : 值接將常數嵌入到指令中 假指令 運算式 分段 3.4 進階語法 定址範圍的問題 初始值 Literal : 值接將常數嵌入到指令中 假指令 LTORG : 以 LTORG 提早展開 Literal EQU : 符號定義 ORG : 重設位址 運算式 分段

定址範圍的問題 避免將巨大陣列放在中間,應該放在最後面,或者 用指標的方式解決巨大陣列的問題。

初始值 範例 3.14 中的 EOF, oDev 等變數都具有初始值。

Literal – 直接將常數嵌入到指令中

以 LTORG 提早展開 Literal 的範例

EQU 假指令 EQU 是 (Equal)『等於』的意思 我們可以使用 EQU 定義常數,如範例 3.17 所示

使用 EQU 模擬 struct 結構 在範例 3.18 (a) 中,我們將 name 定義為 person 的位址 age 定義為 person 的位址 + 20 因而模擬了類似 3.18 (b) 當中的功能。

錢字號 ($) 錢字號 ($) $ 在組合語言中通常代表目前位址 (有些組譯器用星號 *)

使用 EQU 模擬 struct 結構

ORG 假指令 ORG 的功能是用來重新設定組譯器的目前位址

運算式

分段假指令 一個組合語言程式通常可分為 程式段 (.text) 資料段 (.data) 有時會將未設初值的資料放入 BSS 段 (.bss) 中。

3.5 實務案例:IA32 的組合語言 IA32 是目前 IBM PC 上最常用的處理器 IBM PC 的組合語言相當複雜,尤其是輸出入部分 使用 BIOS 中斷進行輸出入 使用 DOS 中斷呼叫進行輸出入 使用 Windows 系統呼叫進行輸出入 為了避開輸出入的問題,在本節中, 我們將採用 C 與組合語言連結的方式

IA32 的組譯器 在 IA32 處理器上, 目前常見的組譯器有 在本節中,我們將使用 GNU 的 gcc 為開發工具 微軟的 MASM (採用 Intel 語法) GNU 的 as 或 gcc (採用 AT&T 語法) 開放原始碼的 NASM (採用 Intel 語法) 在本節中,我們將使用 GNU 的 gcc 為開發工具 您可以選用 Dev C++ 中的 gcc – (Dev C++ 為本書的主要示範平台) Cygwin 中的 gcc Linux 平台中的 gcc

Intel 語法 v.s. AT&T 語法

C 與組合語言的完整連結範例 (一)

範例 3.25 的執行結果

C 與組合語言的完整連結範例 (二)

範例 3.27 的執行結果

習題 請寫出一個 CPU0 的組合語言程式,可以計算 a=b*3+c-d 的算式。 請寫出一個 CPU0 的組合語言副程式 swap,可以將暫存器 R1 與 R2 的內容 交換。 請寫出一個 CPU0 的組合語言副程式 isPrime,可以判斷暫存器 R2當中的值 是否為質數,如果是就將 R1 設為 1 傳回,否則就將 R1 設為 0。 請寫出一個 CPU0 的組合語言程式,可以計算出 2*2+4*4…+100*100 的結果, 並將結果儲存在變數 sum 當中。 請以圖解的方式,說明在IA32處理器的 eax 暫存器中,為何會有 eax, ax, ah, al 等不同名稱,這些名稱代表的是哪個部分? 請寫出一個 IA32 的組合語言副程式 swap,可以將暫存器 R1 與 R2 的內容交 換。 請寫出一個 IA32 的組合語言副程式 isPrime,可以判斷暫存器 R2當中的值是 否為質數,如果是就將 R1 設為 1 傳回,否則就將 R1 設為 0。 請撰寫一個 IA32 的組合語言程式,可以計算 2*2+4*4…+100*100 的結果後 傳回,然後仿照3.5.1節的作法,使用 GNU 的 gcc 編譯連結該程式,並且執 行看看結果是否正確。