slide 01 - North South University

Report
CSE 331/ETE 332/EEE 332
Microprocessor and Assembly
Language Programming
Presented By
Dr. Shazzad Hosain
Asst. Prof. EECS, NSU
Books
• Fundamentals of Digital Logic and
Microcomputer Design – M. Rafiaquzzaman
• The Intel Microprocessors 8086/8088 … , and
Pentium Pro Processors – Barry B. Brey
• Assembly Language Programming and
Organization of the IBM PC – Ytha Yu, Charles
Marut
Mark Distribution
Items
Percentage
Attendance
5%
Quizzes
25%
Mid Term
25%
Lab
10%
Final
35%
Total
100%
Best 3 out of 5
There will be no makeup for quizzes or exams. For details please visit
http://www.northsouth.edu/php/faculty/shazzad/teaching.html and follow the
corresponding link.
Assembly Language Programming
What is Microcomputer?
The Microprocessor and Its
Architecture
• ALU (Arithmetic and Logic Unit)
• The Control Unit
• Registers
Microprocessor
R1
R3
Cache
Memory
RAM
HDD
R1
The Programming Model
• Program visible registers
– We can access via programs
• Program invisible registers
– We can not access via programs
Registers
16 bit Segment registers
Example Data
• If AX = 20A2H then AH = 20H, AL = A2H
• In other words, if AH = 1CH and AL = A2H then AX = 1CA2H
AH
AL
0010 0000
1010 0010
AX
The FLAGS register
• FLAGS indicate the condition of the MP
• Also control the operations
• FLAGS are upward compatible from 8086/8088
to Pentium/Pentium Pro
Figure 2.2: The EFLAG and FLAG registers
The FLAGs
• Carry Flag – C
–
–
–
–
C = 1 if there is a carry out from the msb on addition
Or, there is a borrow into the msb on subtraction
Otherwise C = 0
C flag is also affected by shift and rotate instructions
10101010
11101010
111010100
C = 1, in this case
The FLAGs
• Parity Flag – P
– P = 1 for even parity, if number contains even
number of ones
– P = 0 for odd parity, if odd number of ones
10101010
Even number of ones
P=1
10101011
Odd number of ones
P=0
Definition changes from microprocessor to microprocessor
The FLAGs
• Zero Flag – Z
– Z = 1 for zero result
– Z = 0 for non-zero result
• Sign Flag – S
– S = 1 if msb of a result is 1, means negative number
– S = 0 if msb of a result is 0, means positive number
The FLAGs
• Trap Flag – T
– Enables trapping through an on-chip debugging feature
– T = 1 MP interrupts the flow of a program, i.e. debug
mode is enabled
– T = 0 debug mode is disabled
• Direction Flag – D
– Selects increment/decrement mode of SI and/or DI registers
during string instructions
– D = 1, decrement mode, STD (set direction) instruction used
– D = 0, increment mode, CLD (clear direction) instruction used
The FLAGs
• Overflow Flag – O
– O = 1 if signed overflow occurred
– O = 0 otherwise
– Overflow is associated with the fact of range of
numbers represented in a computer
•
•
•
•
8 bit unsigned number range (0 to 255)
8 bit signed number range (-128 to 127)
16 bit unsigned number range (0 to 65535)
16 bit signed number range (-32768 to 32767)
Signed vs. Unsigned Overflow
• Let, AX = FFFFh, BX = 0001h and execute
• ADD AX, BX
1111 1111 1111 1111 AX
+ 0000 0000 0000 0001 BX
1 0000 0000 0000 0000
• Unsigned interpretation
–
–
–
–
Correct answer is 10000h = 65536
But this is out of range.
1 is carried out of msb, AX = 0000h, which is wrong
Unsigned overflow occured
• Signed interpretation
– FFFFh = -1, 0001h = 1, summation is -1+1 = 0
– Singned overflow did not occur
How instructions affect the flags?
• Every time the processor executes a
instruction, the flags are altered to reflect the
result
• Let us take the following flags and instructions
•
•
•
•
Sign Flag – S
Parity Flag – P
Zero Flag – Z
Carry Flag – C
•
•
•
•
MOV/XCHG
ADD/SUB
INC/DEC
NEG
None
All
All except C
All (C = 1 unless result is 0)
Example 1
• Let AX = FFFFh, BX = FFFFh and execute ADD AX, BX
FFFFh
+ FFFFh
1 FFFEh
The result stored in AX is FFFEh = 1111 1111 1111 1110
S = 1 because the msb is 1
P = 0 because the are 15 of 1 bits, odd parity
Z = 0 because the result is non-zero
C = 1 because there is a carry out of the msb on addition
Example 2
• Let AX = 8000h, BX = 0001h and execute SUB AX, BX
8000h
- 0001h
7FFFh
The result stored in AX is 7FFFh = 0111 1111 1111 1111
S = 0 because the msb is 0
P = 0 because the are 15 of 1 bits, odd parity
Z = 0 because the result is non-zero
C = 0 because there is no carry
Registers
16 bit Segment registers
Segment Registers
Segment n
SS
A000h
*
*
*
Segment 2
DS
8000h
Segment 1
16 bit Segment registers
CS
0000h
An Assembly Program
#include <stdio.h>
void main ()
{
int I, j ;
*********
// comment
*********
}
Example 3-5 of Barry B. Brey’s book
An Assembly Program Cont.
AH
00h
AL
10h
AX
BH
AAh
BX
• What is the content of BX?
10h
DATA1
00h
DATA2
00h 00h
DATA3
BL
AAh
AAh AAh
DATA4
Assembly Language Structure
An Assembly Program
• SMALL model allows one data segment and one code
segment
• TINY model directs the assembler to assemble the program
into a single segment
• DB for Define Byte (one single byte)
• DW for Define Word (two consecutive bytes)
10h
DATA1
00h
DATA2
00h 00h
DATA3
AAh AAh
DATA4
Another Example
References
• Ch 6, Digital Logic and Microcomputer Design
– by M. Rafiquzzaman
• Ch 2, Intel Microprocessors – by Brey
• Ch 5, Assembly Language Programming – by
Charls Marut

similar documents