Assembly Language and System Programming

[ Course slides ] [ Useful links ]

General information

Instructor name: 黃世強 (Sai-Keung Wong)

Office Hour: Wednesday 9:00 9:50

Office: Room 706

Email: or

#ext. 56626


Teaching Assistants:

Name <Email>


Office hour

陳心凱 <>

電資大樓 707

蔡宗祐 <>

電資大樓 707

周易宏 <>

電資大樓 707

林冠彣 <>

電資大樓 707

Joe Huang <>

電資大樓 707


Course time schedule: Tuesday 13:20 15:10, Friday 09:00-09:50

Venue: EC015

Programming Package [NET2013]

Course Score List (Last updated 2015/09/12)

Midterm Score List



Quiz Programming Template [.NET2013]

Quiz one: Questions. all the materials taught so far

Quiz two: Questions. all the materials taught so far

Quiz three: Questions. all the materials taught so far

Quiz four: Questions. all the materials taught so far

Programming Assignment One and Report

Instruction [pdf]

Template for computing the sum of 1, 2, 3, , n


Due date:

Programming due date: 19th Oct, 2015; Time: 23:00

Report due date: 20th Oct, 2015, in class. Submit a hardcopy report



1. Source code. Upload it to E3 platform. The asm file MUST be asm01_StudentID.asm. The name of the folder MUST be asm01_StudentID. For example, if your ID is 123456789, then the folder name is asm01_123456789. Make sure that the folder contains the Irvine folder so that we can build your program directly without needing to set file paths.

2. Report. Submit a hard copy report in class. You MUST follow the instruction to write the report.

Final Exam

Written Exam: 75%. Date will be announced later

Content: All the materials that taught in class and assignments, including SIC and SIC/XE.


Programming: 25%. Date will be announced later

Content: All the materials that taught in class and assignments.

Venue: will be announced later.

Final Term Project

Instruction [pdf]

Template [.NET2010]


Due date:

Programming due date: 21st Date will be announced later. Upload the program source code (the .asm file) to NCTU E3 platform.


Report due date: Date will be announced later. Submit a hardcopy report to my office.




Lab Exercises:

Date: not available; Set one instruction; Program Package One

Date: not available; Set two instruction; Program Package Two


You should follow the instruction and finish all the exercises.



Marking scheme:

Homework : 15%, (10% penalty per day)

Project : 15%, (30% penalty per day)

Mid-term (on-site programming tests上機考, Assembly ~Ch9): 25%

Final exam (Written exam + programming exam, Assembly + System programming): 35%

Quizzes: 10%,

Course slides : Assembly Language

Software system slides

Chapter 12 and source code

SIC Code doc


[Note that some chapters will not be taught.]

Make sure that you have MASM installed on your computer.

Getting start example: source code. (included 16-bit and 32-bit examples)


Factorial computation (ppt)


Midterm ( ~week 11 )




Assembly Language Fundamentals


Data Transfers, Addressing, and Arithmetic




Conditional Processing


Integer Arithmetic



Advanced Procedures 


strings and Arrays 


Structures and Macros 


High-level Language Interface 


Assemblers [ SIC / XE Code ]

Some exercises for SIC, SIC/XE [NEW, last updated 2012/05]


Linking Loaders  


Macro Processors 




Exercises: 01 (robot control), 02 (integer arithmetic), 03 (procedures), 04 (strings and arrays)


Floating point unit [ppt]


Setup paths (read it to see how to setup paths for your computers)



1. Dump registers

2. Understand CF and ZF

3. Use EQU and TEXTEQU

4. 16-bit asm

5. Fibonacci numbers

6. Procedures: change cursor coordinates

7. Table-driven example: Draw a character according to its location.

8. Advance Procedures : Create standard procedure calls, pass parameters and declare local variables.

9. Show Sine Wave. Instruction pdf. A project developed by Sai-Keung Wong for NCTU undergraduate students in 2010.

10. NET2010, moving a character, readkey, explosion, colors, show dialogue box [NEW]


Past exams:

1. 2010 Midterm Questions


Useful links

http:// (重要資料, 一定要看)

Win32 Assembly


32-bit Assembler is Easy


Setup tools in .NET to build your own 16-bit or 32-bit assembly programs.


last update: 12th Sep. 2015