Advertisement

CS401 - Computer Architecture and Assembly Language Programming COURSE OVERVIEW

Course Synopsis

This course focuses on machine-independent Assembly language programming and basic architecture of computer systems including fundamental concepts such as register structure, memory organization and addressing modes, organization of peripherals, and machine-level operations. These concepts are integrated through the use of assemblers, linkers and loaders. Students will learn how to write and debug programs using Assembly language programming language and how to interface Assembly language code to C/C++ programs. Students will also learn some basic Boolean logic and how it applies to programming and computer hardware.

· Course Learning Outcomes

At the end of the course, you should be able to:

· Describe the basic functionalities and limitations of computer system

· Explain concepts related to computer

· Know how high-level languages implement arithmetic expressions, loops, and logical structures at the machine level

· Write and debug programs using Assembly language programming language

· Write new assembly language programs without having to ask anyone for help

· Course Calendar

Topics

Lectures

Book / Handout

Section / Page

Introduction to Assembly Language

1

Handouts

1

Basic Computer Architecture

1

Handouts

1-3

Registers

2

Handouts

3-5

Instruction Groups

2

Handouts

5-6

Intel iapx88 Architecture

3

Handouts

6

History

3

Handouts

6-7

Register Architecture

3

Handouts

7-9

Our First Program

3

Handouts

9-12

Segmented Memory Model

4

Handouts

12-15

Addressing Modes

4

Handouts

17

Data Declaration

5

Handouts

17

Direct Addressing

5

Handouts

17-21

Size Mismatch Errors

5

Handouts

21-22

Assignment 1

Register Indirect Addressing

6

Handouts

22-24

Register + Offset Addressing

6

Handouts

25

Segment Association

6

Handouts

25-26

Address Wraparound

6, 7

Handouts

26-27

Addressing Modes Summary

7

Handouts

27-28

Branching

8

Handouts

31

Comparison and Conditions

8

Handouts

31-33

Conditional Jumps

8

Handouts

33-36

Unconditional Jump

9

Handouts

36-37

Relative Addressing

9

Handouts

37

Types of Jump

9

Handouts

37-38

Sorting Example

9

Handouts

38-41

Bit Manipulations

10

Handouts

43

Multiplication Algorithm

10

Handouts

43

Shifting and Rotations

10

Handouts

43-45

Assignment 2

Multiplication in Assembly Language

11

Handouts

46-47

Extended Operations

11

Handouts

47-50

Bitwise Logical Operations

12

Handouts

50-51

Masking Operations

12

Handouts

51-53

Subroutines

13

Handouts

55

Program Flow

13

Handouts

55-57

Our First Subroutine

13

Handouts

57-59

Stack

14

Handouts

59-62

Saving and Restoring Registers

14

Handouts

62-64

Parameter Passing Through Stack

15

Handouts

64-67

Local Variables

15

Handouts

67-68

Assignment 3

Display Memory

16

Handouts

71

ASCII Codes

16

Handouts

71-72

Display Memory Formation

16

Handouts

72-74

Hello World in Assembly Language

16

Handouts

74-76

Number Printing in Assembly

17

Handouts

76-79

Screen Location Calculation

18

Handouts

79-80

String Instructions

18

Handouts

83

String Processing

18

Handouts

83-85

STOS Example – Clearing the Screen

19

Handouts

85-86

LODS Example – String Printing

19

Handouts

86-87

SCAS Example – String Length

19

Handouts

87-89

LES and LDS Example

20

Handouts

89-90

Quiz 1

MOVS Example – Screen Scrolling

21

Handouts

90-92

CMPS Example – String Comparison

21

Handouts

92-93

Software Interrupts

22

Handouts

95

Interrupts

22

Handouts

95-98

Hooking an Interrupt

22

Handouts

98-99

Mid Term Exam

BIOS and DOS Interrupts

23

Handouts

99-102

Real Time Interrupts and Hardware Interfacing

23

Handouts

105

Hardware Interrupts

24

Handouts

105-106

I/O Ports

24, 25

Handouts

106-111

Terminate and Stay Resident

26

Handouts

111-114

Assignment 4

Programmable Interval Timer

27

Handouts

114-116

Parallel Port

27

Handouts

116-122

Debug Interrupts

27

Handouts

125

Debugger using single step interrupt

28, 29

Handouts

125-128

Debugger using breakpoint interrupt

29

Handouts

128-130

Multitasking

30

Handouts

131

Concepts of Multitasking

30

Handouts

131-133

Elaborate Multitasking

30

Handouts

133-135

Multitasking Kernel as TSR

31, 32

Handouts

135-139

Assignment 5

Video Services

33

Handouts

141

BIOS Video Services

33

Handouts

141-144

DOS Video Services

34

Handouts

144-145

Secondary Storage

34

Handouts

147

Physical Formation

34

Handouts

147-148

Storage Access Using BIOS

35

Handouts

148-153

Storage Access using DOS

36

Handouts

153-158

Device Drivers

37

Handouts

158-161

Assignment 6

Serial Port Programming

38

Handouts

163-165

Serial Communication

38

Handouts

165-166

Protected Mode Programming

39, 40

Handouts

167-169

32bit Programming

41

Handouts

170-172

VESA Linear Frame Buffer

42

Handouts

172-174

Interrupt Handling

43

Handouts

174-176

Interfacing with High Level Languages

44

Handouts

179

Calling Conventions

44

Handouts

179

Calling C from Assembly

44

Handouts

179-181

Calling Assembly from C

44

Handouts

181

Quiz 2

Comparison with Other Processors

45

Handouts

183

Motorola 68K Processors

45

Handouts

183-184

Sun SPARC Processor

45

Handouts

184-185

Final Term Exam

0 Responses