中正大學課程大綱
課程名稱(中文): 組合語言 開課單位: 資訊工程學系(Department of Computer Science and Information Engineering)
課程名稱(英文) Assembly Language 課程代碼 4102050_01
授課教師: 陳鵬升 學分數 3
必/選修 選修 開課年級 大二
先修科目或先備能力:
計算機概論、資訊導論、Linux (Unix-like)作業系統之簡單操作能力、C programming language
課程概述:
本課程主要教授組合語言,讓同學認識了解電腦的低階機器程式語言,並了解組合語言在電腦程式、作業系統與硬體設備間扮演什麼樣的角色。本課程將著重於目前廣為被嵌入式系統所採用的ARM processor的指令集,同時也將簡介被普遍使用的x86指令集,使學生能在學校的學習與目前資訊產業發展的主流間,取得平衡。
學習目標:
1. Build up an ARM development environment from open source packages
2. Understand how to write an ARM assembly program
3. Understand the features of ARM/Thumb instruction set architecture
4. Understand x86 instruction set
5. Use SIMD instructions (ex: SSE, MMX) to solve problem
教科書:
ARM system-on-chip architecture, Steve Furber, Addison-Wesley ISBN : 0201675196
請尊重智慧財產權,不得非法影印教師指定之教科書籍

課程大綱 分配時數 核心能力 備註
單元主題 內容綱要 講授 示範 隨堂作業 其他
Computer system
An introduction to computer system
4 1.11.21.32.12.22.33.13.23.34.14.2
System software
An introduction to system software
- Compiler
- Assembler
- Linker
- System library
- Operating system
5 1.11.21.32.12.22.33.13.23.34.14.2
ARM architecture instruction set
An overview of ARM architecture
Build an ARM development environment from open source packages
- GNU C compiler
- GNU binutils (assembler / linker)
- GNU newlib (C standard library)
- GNU debugger (GDB)
- ARM emulator

ARM instruction set
- Data processing instruction
- Data transfer instruction
- Control-flow instruction
- Conditional execution
ARM calling convention
Exception / SWI
Position Independent Code
12 2 1.11.21.32.12.22.33.13.23.34.14.2
Thumb instruction set
- Thumb instruction
- Thumb2 instruction
- Code compaction
6 1.11.21.32.12.22.33.13.23.34.14.2
Support for high-level language
- Floating point and fix point
- ARM instruction set supports for high-level language
- C and assembly language
8 1.11.21.32.12.22.33.13.23.34.14.2
X86 architecture and instruction set
- An overview of x86 architecture
- X86 instruction set
5 1.11.21.32.12.22.33.13.23.34.14.2
SIMD instruction
- An introduction to SIMD instruction
- MMX/SSE instruction
4 1 1.11.21.32.12.22.33.13.23.34.14.2

教育目標
1.專業基礎知識. 使學生擁有扎實的專業基礎知識,成為資訊及相關領域的專業人才
2.培養創造能力. 使學生具有運用所學到的各種專業知識與理論以科學的方法解決問題與創新
3.自我挑戰能力與終身學習. 讓學生習於自我挑戰、獨立思考,學會思維創新、領導及組織團隊、有效溝通、終身學習之能力
4.社會人文素養與國際視野. 讓學生具備關懷社會的情操與人文素養,並具國際觀,奉獻社會國家及人類

核心能力
1.1.具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
1.2.具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
1.3.在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
2.1.具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
2.2.具有設計資訊系統、元件或製程的能力(Capability to design computer systems, components, or processes.)
2.3.具有科技寫作與簡報的能力。(Capability to write and present technical materials.)
3.1.具有除了已有的應用領域之外,亦可以將自己的專業知識應用於新的領域或跨多重領域,進行研發或創新的能力。(Capability to apply one’s professional knowledge to a new application domain or across multiple different application domains.)
3.2.具有領導或參與一個團隊完成一項專案任務的能力並且具有溝通、協調與團隊合作的能力。(Capability to lead or participate in group projects, with effective communication, coordination, and teamwork.)
3.3.具有因應資訊科技快速變遷之能力,培養自我持續學習之能力。(Capability to adapt to rapidly changing computer science technology and to develop self-learning capabilities.)
4.1.具有社會責任、人文素養及奉獻精神。(The awareness of social responsibilities, humanity, and contribution.)
4.2.具有工程倫理、宏觀能力、國際觀及前瞻視野。(The awareness of engineering ethics, broad capabilities, and global and contemporary vision.)

請尊重智慧財產權,不得非法影印教師指定之教科書籍

教學要點概述:
1. 教材編選(可複選):自編簡報(ppt)教科書作者提供
2. 教學方法(可複選):講述板書講述
3. 評量工具(可複選):上課點名 5.00%, 隨堂測驗0%, 隨堂作業0%, 程式實作55.00%, 實習報告0.00%,
                       專案報告0%, 期中考20.00%, 期末考20.00%, 期末報告0%, 其他0%,
4. 教學資源:課程網站 教材電子檔供下載 實習網站
5. 教學相關配合事項:

課程目標與教育核心能力相關性        
請勾選:1.11.21.32.12.22.33.13.23.34.14.2
1.1 具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
為何有關:
The course helps students to understand the relationship among processor, low-level device and system software. The homework and exams improve their capability of implementation.
達成指標:
學期總成績及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下
1.2 具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
為何有關:
Basically, the course has homework assignments about every two or three weeks. They drive students to analyze the problems, and solve them by using course knowledge. The training process will enrich the capability of analyzing and solving problems.
達成指標:
學期總成績及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下。
1.3 在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
為何有關:
The assembly curriculum makes the students to have essential ability of assembly programming and figure out the relationship among processor, low-level device and system software.
達成指標:
學期總成績及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下。
2.1 具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
為何有關:
There are about 6 homework assignments in this course. Students will build their ARM development toolkits under Unix-like environment, and write assembly program to solve problem by these tools further. Many software tools will be used and the ability of leveraging software tools will be improved.
達成指標:
學期總成績及格、程式作業及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下。
2.2 具有設計資訊系統、元件或製程的能力(Capability to design computer systems, components, or processes.)
為何有關:
The course introduces the knowledge of assembly programming to students. The homework assignments make students to leverage open source tools to solve problems. These capabilities are very fundamental to design an information system
達成指標:
學期總成績及格、程式作業及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下。
3.3 具有因應資訊科技快速變遷之能力,培養自我持續學習之能力。(Capability to adapt to rapidly changing computer science technology and to develop self-learning capabilities.)
為何有關:
The current trend is towards to leverage open source software to help your work. Students will have a good capability in this part after the course. The capability is also very helpful to students to study further
達成指標:
學期總成績及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下。
4.2 具有工程倫理、宏觀能力、國際觀及前瞻視野。(The awareness of engineering ethics, broad capabilities, and global and contemporary vision.)
為何有關:
This course uses open source software with GPL license to program. Students will have an overview of software copyright and understand the information ethics which can not use the reverse engineering to interpret the program under the protection of intellectual property rights.
達成指標:
學期總成績及格
評量工具(可複選):
(1) 期中考試、期末考試、程式作業 (2) 等級5:學期成績達到80分以上。等級4:學期成績達到70分以上。等級3:學期成績達到60分以上。等級2:學期成績達到50分以上。等級1:學期成績達到50分以下。