Week |
Topics |
Reading
|
Week 1 9/7
|
|
|
Week 2 9/10
|
- Monday
- Review of Hello World
- Q&A
- Mini Lab #1 to get everybody up to speed.
- Wednesday
- Friday
|
|
Week 3 9/17
|
- Get the list of all the assembly programs seen in class:
- ls -ltr ~231a/handout
- Get one of the files into your 231a-xx account:
- getcopy movStrings1.asm
- sftp 231a-xx@beowulf.csc.smith.edu (and then use put filename or get filename to transfer files)
- Architecture of a simplified Pentium:
- Registers
- ALU
- CU
- Address and Data buses
- The mother of all instructions: MOV (covered here)
- byte, word, double-word variables.
- Friday
|
|
Week 4 9/24
|
- Monday
- Q&A
- Solutions to HW #2 posted (see above).
- The ADD instruction
int a = 3, b = 5, result = 0;
result = a + b;
- Wednesday
- Friday
- AND, OR, XOR, NOT (review Boolean Algebra)
- range of unsigned byte, words, dwords, and quadwords.
|
- Reading
- Sections 2.2, 2.2.1, 2.2.2, 2.2.3, and 2.2.4 in the Nasm Manual
- Sections 3.1 to 3.2.1 in the Nasm Manual
- The INC instruction.
|
Week 5 10/1
|
- Wednesday
- Friday
- Review of 2's Complement: Exercise in need of a solution...
- Extending the sign from byte to word, or word to double-word.
- CBW: The CBW (convert byte to word) instruction copies the sign (bit 7) in the source operand (AL) into every bit in the AH register.[1]
- CWDE: The CWDE instruction copies the sign (bit 15) of the word in the AX register into every bit position of the high word of the EAX register[1].
- Masking with AND, OR, and NOT, an example
|
|
Week 6 10/8
|
- Wednesday
- Bitwise operators vs logical operators in Java. Example
- More Addressing modes:
- base/indirect
- base/indirect with diplacement
- base/inderect indexed
- base/indirect indexed with displacement
- The Loop instruction. Exercises with Loops
- Fibonacci with loops and new addressing modes: Examples
- Friday
|
|
Week 7 10/15
|
- Monday
- A word on the LOOP instruction offset
- condition codes & status register (flags)
- Conditional Jumps: JA, JAE, JB, JBE, JC, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ (more info here).
- Flag bits set by the CMP instruction
- Wednesday
- Friday
- No homework assignment this week.
|
|
Week 8 10/22
|
- Monday
- Using a Makefile
- Another trick. Keep the nasm, ld, and run commands in one line in your history:
nasm -f elf -F stabs myProg.asm ; ld -melf_i386 -o myProg myProg.o ; ./myProg
shl reg, 1
shl mem, 1
shl reg, imm
shl mem, imm
shl reg, cl
shl mem, cl
|
|
Week 9 10/29
|
- Monday
- No class, thanks to Hurricane Sandy!
- Wednesday
- Friday
|
|
Week 10 11/05
|
|
|
Week 11 11/12
|
|
|
Week 12 11/19
|
- Monday
- Wednesday Thanksgiving Break
- Friday Thanksgiving Break
|
|
Week 13 11/26
|
|
|
Week 14 12/03
|
|
|
Week 15 12/10
|
- Monday
- Wednesday Last Class
|
|