Introduction/Overview
Objectives
We would like to :
- Investigate the topics for this course.
Notes
- This is completely made up by me.
- The Introduction section in the outline does not seem to be doable without more introduction.
- So we will go out of order.
- This semester we will learn to program in assembly language.
- This is a language very "Close" to what the hardware needs to do anything.
- To understand assembly, I think it is useful to understand the true language of the computer, machine language.
- At one level, this is just a set of switches that we turn on and off
- For MUCH more detail, see CMSC 2100 Logic & Switching.
- But we need to talk about that somewhat here too, sorry those who have taken 2100.
- To do this (understand the language of the computer) however, we need to understand the basics for representing things in the model the computer uses.
- This leads us to an character set of {0,1} and how represent data using this system..
- Binary
- Two's Complement
- IEEE 754 Floating Point Number representation
- ASCII/Unicode representation of characters
- Machine Instruction Format
- We can then discuss how to represent machine instructions in a format that is easier to understand (Assembly Language)
- We then need to discuss the basics of a computer
- We will not drop to the gate or microcode level
- But we will look at the major components of a cpu - Sorry 2100 finishers.
- Finally we will discuss how to program at the assembly level
- How to store and manipulate data
- The instructions needed to do this.
- The tools needed to do this
- We need to understand that some of this is
- universal (binary, two's complement)
- Some of this is standard (ASCII, UNICODE)
- Some of this is theoretical (abstract operation of a CPU)
- Some of this is architecture dependent ( X86 machine and assembly language)
- How does this class fit in
- CMSC 2100 Logic & switching theory
- Required for CS majors
- Discusses most of the above topics (not programming)
- Looks at
- Data representation
- digital electronics
- Basics of Computer Organization, or the basic components needed to make a computer.
- CMSC 3240 Computer Architecture
- Studies the Instruction Set Architecture (ISA)
- Looks at
- how we specify a computer should be built
- how we can measure the performance of a computer
- how we can improve the performance of a computer
- So why study assembly programming?
- Traditional justifications
- To better understand how the computer works
- To better understand how programs work
- With the hope we can be more efficient
- To be ready for compilers and Operating Systems
- To be ready for cybersecurty
- Bad Justifications
- In case you need to write for a chip where there is no compiler
- So you can write "more efficient" code than a compiler
- I learned it (multiple times), you should too!
- ChatGPT thinks
- It can improve debugging and diagnostic skills
- It teaches precision and Discipline
- Historical and Conceptual Literacy