Summery Before Mid-Semester Exam
Dr A Sahu
Dept of Comp Sc & Engg.
IIT Guwahati
Outline
Mid Semester Exam
W
Z
B
C
D
E
H
L
SP
PC
Inc/Dec. ter
Add latch
MUX
Bus 8 Bit
Interrupt Control
Serial I/O Control
IR
I Decode
&
M/C
Encoding
tmp R
ACC
Timing and Control
ALU
Add Buff
Data/Add Buff
Flag
INTR
INTA
RST5.5
ReSeT6.5
RST7.5
TRAP
SID
SOD
8085 Microprocessor Architecture
8086 Architecture
AH
AL
BH
BL
CH
CL
DH
DL
SI (Source Idx )
DI (Dest. Idx)
BP (Base Ptr )
SP (Stack Ptr)
Z (Flag Reg)
CS (Code Seg Reg)
DS (Data Seg Reg )
ES (Extra Seg Reg )
SS (Stack Seg Reg)
IP (Intr Ptr)
Operand
InDirect
Temp A
Temp B
Temp C
Q6
Q5
Q4
Q3
Q2
Q1
Sequencer
Bus Interface Unit
Execution
Unit
SUM
C BUS
A BUS
ALU
8086 Registers
AH
AL
BH
BL
CH
CL
DH
DL
SI (Source Idx )
DI (Dest. Idx)
BP (Base Ptr )
SP (Stack Ptr)
CS (Code Seg Reg)
DS (Data Seg Reg )
ES (Extra Seg Reg )
SS (Stack Seg Reg)
IP (Intr Ptr)
Z (Flag Reg)
Memory layout of C program
int A;
int B=10;
main(){
int Alocal;
int *p;
p=(int*)malloc(10);
}
Data
Code
Heap
Stack
BSS
MASM : Hello world
.model small
.stack 100h ; reserve 256 bytes of stack space
.data
message db "Hello world, I'm learning Assembly$”
.code
main proc
mov ax, seg message ; ax<-data seg. start addr.
mov ds, ax ; Initialize Seg Reg
mov ah, 09 ; 9 in the AH reg indicates Procedure
;hould write a bit-string to the screen.
lea dx, message ;Load Eff Address
int 21h
mov ax,4c00h ; Halt for DOS routine (Exit Program)
int 21h
main endp
end main
GetChar, PutChar
mov dl, ‘a‘ ;dl = ‘a‘
mov ah, 2h ;character output subprogram
int 21h ; call ms-dos output character
mov ah, 1h ; keyboard input subprogram
int 21h ; char input, char is stored in al
mov c, al ; copy character from al to c
Transmission controller
D/A converter
Digital
to
Analog
Converter
D0
D1
D2
Analog Output
Vo
Digital Inputs
Analog output
000
001
011
010
100
101
111
110
LSB
FS
0
1
2
3
4
5
6
7
Resolution, Reference Voltages, Settling Time, Linearity, Speed, Errors
A/D Conversion Techniques
Display
7 Seg 9 Seg 16 Seg 3x5 DotMatix 5x7 9x11
Dot Matrix Display Panel
25x80 character monitor
Multiplexed line and Memory use
40 Bit data line
8 Bit data line
0
1
2
3
4
Data 1
Data 2
Data 3
Data 4
Data 0
Mod 5 Counter
Multiplexed 25x80 Char Display
25x80 character monitor
C
A
T
F
I
R
E
0 1 2 3 4 ….. 78 79
0
1
2
23
24
A
Decoder
Or
ROM
Memory
Decoded Bits
Row Ctr
Col
Ctr
CLK > 50Hzx25x80
Multiplexed 1024x768 pixel display
1024x768 Pixel LCD
0 1 2 3 4 ….. …1023
0
1
2
767
R
Row Ctr
Col
Ctr
CLK > 1024x768x50Hz
B
G
8x3=24 Bits
Frame Buffer
Refresh screen 50 time a Sec
How Keyboard work ? ==1D
0
1
2
3
14
15
+5V
N to Lg(n) decoder
A
B
C
D
. . .
0 0 1 1
Simple keyboard with 64 keys
R0
R1
C0
C1
C6
R2
R6
R7
C7
C2
Scan Row
R6
Scan Col: C2
6,3
Decode to
ACSII
(Memory
ROM)
To
Host
(CPU)
8155 IO/Timer
3 to 8 Decoder
CWR
Port
A
Port
B
Port
C
Timer
MSB LSB
Latch
Clock for timer
PA0-PA7
PB0-PB7
PC0-PC5
Timer Out
A0
A1
A2
ALE
AD0-AD7
A0-A7
D7-D0
0
1
2
3
4
5
CEb
A2 | A1 | A0 | Port |
0 | 0 | 0 | Comm/Status Reg |
0 | 0 | 1 | PA |
0 | 1 | 0 | PB |
0 | 1 | 1 | PC |
1 | 0 | 0 | Timer LSB |
1 | 0 | 1 | Timer MSB |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Timer Command | IEB | IEA | PC | PB | PA | ||
ALT | D3 | D2 | PC5 | PC4 | PC3 | PC2 | PC1 | PC0 |
1 | 0 | 0 | IN | IN | IN | IN | IN | IN |
2 | 0 | 1 | OUT | OUT | OUT | OUT | OUT | OUT |
3 | 1 | 0 | OUT | OUT | OUT | STBA | BFA | INTRA |
4 | 1 | 1 | STBB | BFB | INTRB | STBA | BFA | INTRA |
MSB | |||||||
M2 | M1 | T13 | T12 | T11 | T10 | T9 | T8 |
LSB | |||||||
T7 | T6 | T5 | T4 | T3 | T2 | T1 | T0 |
8255 PPC
Group A
Control
Group B
Control
Read
Write
Control Logic
Data
Bus
Buffer
Gr A
Port A
(8)
Gr A
Port C
(H 4)
Gr B
Port C
(L 4)
Gr B
Port B
(8)
I/O
PA7-PA0
I/O
PC7-PC4
I/O
PC3-PC0
I/O
PB7-PB0
8 bit Internal Data Bus
Bi directional
Data Bus
D7-D0
RDb
WRb
A1
A0
RESET
CSb
CSb | A1 | A0 | Sel |
0 | 0 | 0 | Port A |
0 | 0 | 1 | Port B |
0 | 1 | 0 | Port C |
0 | 1 | 1 | CRW |
D7 D6 D5 D4 D3 D2 D1 D0
7 6 5 4 3 2 1 0
Port A – 1 Input 0 output
Mode select: 00 mode 0;
01 mode 1; 1x mode 2
1 – mode select
0 – bit set/reset
Port C(U) – 1 Input 0 output
Mode select: 0 mode 0; 1 mode 1
Port B – 1 Input 0 output
Port C(L) – 1 Input 0 output
Group A
Group B
D7 D6 D5 D4 D3 D2 D1 D0
BSR Mode
Bit Set/Reset
I/O Mode
Mode 0
Simple I/O for Ports
A, B & C
Mode 1
HS mode
for Ports
A and/or B
Port C bits are used for
HS
Mode 2
Bidirectional
Data mode for
PortA
B can in mode 0/1
Port C bits are used for HS
BSR Mode
Bit Set/Reset
For Port C
No Effect on
I/O Mode
0/1
8259 PIC
8259A
Programmable
Interrupt
Controller
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
8 bit
Data Bus
RDb
WRb
CSb
A0
INT
INTAb
SPb/ENb
Control Logic
Interrupt Service
Register
Priority Resolver
Interrupt Request
Register
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
Interrupt Mask Register
Internal Bus
INTAb
INT
CS | A0 | Initialization | OCW |
0 | 0 | ICW1 | OCW1 |
0 | 1 | ICW2 ICW3,ICW4 | OCW2,OCW3,OCW4 |
1 | X | Not Address | Not Address |
AD0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 | 0 | 0 | 0 | 1 | LTIM | 0 | SGNL | IC4 |
| 0 for x86 | | 0/1 Edge /Level Trigger | | 1=single 0=Cascade | | ||
AD0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | T7 | T6 | T5 | T4 | T3 | T2 | T1 | T0 |
| T7=T0 is the assign to IR0, Vector address for ISR | |||||||
AD0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | M7 | M6 | M5 | M4 | M3 | M2 | M1 | M0 |
| Interrupt Masks: 1= Mask Set, 0 =Mask reset | |||||||
AD0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 | R | SL | EOI | 0 | 0 | L2 | L1 | L0 |
| Roteate | Specific | EOI | | | IR Level to be acted Upon (0-7) | ||
8237 DMA
DMA Req0
DMA Req 1
DMA Req 2
DMA Req 3
Hold Ack
Clock
Reset
Ready
Chip Select
Address Strobe
Hold request
DMA ack0
DMA ack1
DMA ack2
DMA ack3
IO Read
I/O Write
Memory Read
Memory Write
End of Process
To data Bus
To Address
Bus
DREQ0
DREQ1
DREQ2
DREQ3
HLDA
CLK
RESET
READY
CSb
DB0-DB7
A0-A3
A4-A7
ADSTB
HOLD
DACK0
DACK1
DACK2
DACK3
IORDb
IOWRb
MemRDb
MemWRb
EOPb
Reg Addr
Meaning
00
CH0 memory Add reg
01
CH0 Count reg
02
CH1 memory Add reg
03
CH1 Count reg
04
CH2 memory Add reg
05
CH2 Count reg
06
CH3 memory Add reg
07
CH3 Count reg
08
R/W status/Commnd reg
09
WR request reg
10
WR Single mask reg
11
WR mode reg
12
WR Clear byte ptr F/F
13
R/W Master Clear/Temp
14
WR Clear Mask Reg
15
WR all Mask clear bits
A4-A7
DB7-DB0
3 to 8
Decoder
00
CSb
DREQ0
DREQ1
DREQ2
DREQ3
DACK0
DACK1
DACK2
DACK3
EOP
ADSTB
AEN
MEMRb
MEMWb
IORb
IOWb
READY
RESET
CLK
HRQ
HLDA
IO/Mb
A7
A6
A5
A4
A3
A2
A1
A0
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0/1 | 0/1 | 0/1 | 0/1 | 0/1 | 0/1 | 0/1 | 0/1 |
DACK Sense Active Low/High | DREQ Sense Active Low/High | Late/Extended Write Selection | Fixed/ Rotating Priority | Normal/ Compressed Timing | Enable/Disable Controller | Dis/En CH0 Address Hold | Dis/En Mem-mem Transfer |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
00=Demand, 01=Single 10=Bloc, 11=Cascade | INC/DEC Address | Dis/Ena Auto Initialisation | 00=verify Transfer 01=Write , 10=Read transfer | Channel Select 00=CH0, 01=CH1, 10=CH2, 11=CH3 | |||
CMD
Mode
Req
Status
MASK
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
XXXXX Don’t Care | Reset/Set REQ bit | 00-11 Channel Select 00=CH0, 01=CH1, 10=CH2, 11= CH3 | |||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
XXXX Don’t Care | 0/1 | 0/1 | 0/1 | 0/1 | |||
CH3 Mask Bit | CH2 Mask Bit | CH2 Mask Bit | CH0 Mask Bit | ||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0/1, CH3 | 0/1,CH2 | 0/1, CH1 | 0/1, CH0 | 0/1, CH3 | 0/1, CH2 | 0/1, CH1 | 0/1, CH0 |
CH# Request | CH# Has reached TC | ||||||
8251 USART
Data Bus
Buffer
Transmit
Buffer
Receive
Buffer
Transmit
Control
Receive
Control
R/W
Control
Logic
Modem Control
Internal
Line
D7-D0
RESET
CLK
C/Db
RDb
WRb
CSb
DSRb
DTRb
CTSb
RTSb
TXD
TXRDY
TXE
TXC
RXD
RXRDY
RXC
SYBDET
CSb | C/Db | RDb | WRb | Meaning |
1 | X | X | X | Data Bus Tri-state |
0 | X | 1 | 1 | Data Bus Tri-state |
0 | 1 | 0 | 1 | Status 🡪 CPU |
0 | 1 | 1 | 0 | Control Word🡨 CPU |
0 | 0 | 0 | 1 | DataBuff 🡪 CPU |
0 | 0 | 1 | 0 | DataBuff 🡨 CPU |
D7
D6
D5
D4
D3
D2
D1
D0
Framing Control
# of Stop bits
00: invalid
01: 1 bit
10: 1.5 bits
11: 2 bits
Parity Control
X0=No Parity
01: Even
11: Odd
Character length
00: 5 bits
01: 6 bits
10: 7 bits
11: 8 bits
Baud Rate
00: Syn. Mode
01: x1 clock
10: x16 clock
11: x64 clock
EH
IR
RTS
ER
SBRK
RxE
DTR
TxE
TxE: transmit enable (0/1 Enable Disable)
DTR: data terminal ready (1=ENABLE DTR)
RxE: receiver enable (1/0=EN/DISABLE)
SBPRK: send break character 1= force TxD low
ER: error reset (Reset Flags: Parity ,Over run, Framing Error of Status Word)
RTS: request to send (1= Enable Request to send)
IR: internal reset (Reset 8251 to mode)
EH: enter hunt mode (1=search for Sync Character)
DSR
SYN
DET
FE
OE
PE
Tx
EMPTY
RxRDY
TxRDY
TxRDY transmit ready (DB Buffer is empty)
RxRDY receiver ready
TxEMPTY transmitter empty
PE parity error (1=when PE detected)
OE overrun error
FE framing error (Aynsc only, Valid
stop bit not detected)
SYNDET sync. character detected
DSR data set ready (DSR set at 0 level)
8254 PIT
Data
Bus
Buffer
Read/
Write
Logic
Counter
0
CLK 0
GATE 0
OUT 0
Internal
Bus
Control Word
Register
Counter
1
CLK 1
GATE 1
OUT 1
Counter
2
CLK 2
GATE 2
OUT 2
D0-D7
RDb
WRb
A0
A1
CSb
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
SC1 | SC2 | RW1 | RW0 | M2 | M1 | M0 | BCD |
Select Counter 00: Counter 0 01: Counter 1 10: Counter 2 11: Read-Back Command | Read Write 00: Counter latch Command 01:RW LSByte only 10: RW MSByte only 11:RW LSByte first then Msbyte | 000 : Mode 0 001 :Mode 1 X10 :Mode 2 X11 :Mode 3 100 :Mode 4 101 : Mode 5 | 0/1 = Binary / BCD Mode | ||||
A1 | A0 | Selection |
0 | 0 | Counter 0 |
0 | 1 | Counter 1 |
1 | 0 | Counter 2 |
1 | 1 | Control Register |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
SC1 | SC2 | COUNTb | STATUSb | CNT2 | CNT1 | CNT0 | 0 |
11: Read-Back Command | If (D5=0) count is lateched | D3=1 select counter 2 D2=1 select counter 1 D1=1 select counter 0 | | ||||
Thanks
&
Good Luck for your Exam