Assembly Language and System Programming

[ Course slides ] [ Useful links ]

General information

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

Office: Room 706

Email: or

#ext. 56626


Teaching Assistants:

Name <Email>


Office hour

孫采荷 <>

電資大樓 707

陳健元 <>

電資大樓 707

Yu Chun Hsu <>

電資大樓 707

電資大樓 707


電資大樓 707


Course time schedule:

Monday 15:30 16:20

Thursday: 10:10-12:00

Venue: EC015

Programming Package [NET2013]

Course Score List (2018 Spring)

Midterm Score List

First Midterm



Bring student ID, notes and books.

Please come earlier.

No electronic devices.

All the materials taught so far

Programming Quizzes

Each quiz should be finished in two days.


Instruction pdf (will be available soon)

Template package [NET]


Programming due date: 25th June, 2017; Time: 23:00

Report due date: 26th June, 2017. Submit a hardcopy report to my office EC706. Both are hard deadline.



1. Source code. Upload it to E3 platform.

The asm file name must be: asm_pj_StudentID.asm

For example, if your ID is 123456789, then the file name

must be asm_pj_123456789.asm and the folder name

must be asm_pj_123456789

At the top of the .asm file, write down your name, ID and email address.

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: Date will be announced later

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


Programming: Date will be announced later

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

Venue: will be announced later.


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.


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


Assembly programming


Advanced Procedures 


strings and Arrays 


Structures and Macros 


High-level Language Interface 


Assemblers [ SIC / XE Code ]

Some exercises for SIC, SIC/XE


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. Table-driven example: control a character to move (up, down, left, right)

9. Draw an irregular bitmap

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

11. 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 Quizzes

201502 [1], 201502 [2]


Past Midterm

201502 [1]


Past exams:

1. 2010 Midterm Questions

2. 2009 Exam


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: 25th Feb., 2018