Bài giảng Vi xử lý - Chương 2: Kiến trúc CPU và tập lệnh (Phần 1) - Hồ Trung Mỹ
02-Mar-11
ĐHBK Tp HCM-Khoa Đ-ĐT
BMĐT
Nꢀi dung
GVPT: Hồ Trung Mỹ
Môn học: Vi Xử Lý
2.1 Sꢁ ꢂꢃ KHꢄI CPU 8 BIT Cꢁ BꢅN
2.2 Tꢆ CHꢇC CÁC THANH GHI
2.3 Tꢆ CHꢇC Bꢈ NHꢉ
Chương 2
2.4 GHÉP NꢄI BUS Hꢊ THꢄNG
2.5 CHU Kꢋ BUS, CHU Kꢋ MÁY
2.6 CÁC PHƯꢁNG PHÁP ꢂꢌNH ꢂꢌA CHꢍ
2.7 TꢎP LꢊNH
KIẾN TRÚC CPU VÀ TẬP LỆNH
Vi xử lý
Bus nội và ngoại
• Bus nꢀi (Internal bus) là ꢏꢐꢑng dꢒn ꢏꢓ truyꢔn
dꢕ liꢖu giꢕa các thanh ghi và ALU trong VXL
• Bus ngoꢗi (External bus) dùng cho bên ngoài
nꢘi ꢏꢙn RAM, ROM và I/O
• Có nhiꢀu lꢁai vi xꢂ lý (VXL) tꢃ rꢄt ꢅꢆn giꢇn ꢅꢈn rꢄt
phꢉc tꢊp
• Phꢋ thuꢌc vào ꢅꢌ rꢌng bus dꢍ liꢎu và thanh ghi và
ALU, có các VXL 4 bit , 8 bit , 16bit, 32 bit , 64 bit …
• Thí dꢋ
– Z80 là VXL 8 bit
• ꢂꢀ rꢀng cꢚa bus nꢀi và ngoꢗi có thꢓ khác nhau.
– 8086/88 là VXL 16 bit
• Thí dꢛ
• Tꢄt cꢇ các VXL có
– 8088: bus nꢀi là 16 bit, bus ngoꢗi là 8 bit
– Bus ꢅꢏa chꢐ
– 8086: bus nꢀi là 16 bit, bus ngoꢗi là 16 bit
– Bus dꢍ liꢎu
– Các tín hiꢎu ꢅiꢀu khiꢑn: RD, WR, CLK , RST, INT, . . .
2.1 SƠ ĐỒ KHỐI
CPU 8 BIT CƠ BẢN
1
02-Mar-11
Các ꢏꢐꢑng tín hiꢖu
Sꢆ ꢅꢒ chꢉc nꢓng và gán chân ꢔ chip Z80
• Có 6 nhóm tín hiꢖu:
– Bus ꢏꢜa chꢝ 16 ꢏꢐꢑng (A0 ꢏꢙn A15)
– Bus dꢕ liꢖu 8 ꢏꢐꢑng (D0 ꢏꢙn D7)
– 6 ꢏꢐꢑng ꢏiꢔu khiꢓn hꢖ thꢘng
– 5 ꢏꢐꢑng ꢏiꢔu khiꢓn CPU
– 2 ꢏꢐꢑng ꢏiꢔu khiꢓn bus CPU (
)
– 3 ꢏꢐꢑng dành cho nguꢞn cꢟp ꢏiꢖn và xung nhꢜp
(+5V, GND, và CLK)
Mô tả chân Z80
Mô tả chân Z80
A15-A0 :
MREQ
Bus ꢅꢏa chꢐ (xuꢄt, tích cꢕc cao, 3-state).
Dùng ꢅꢑ truy cꢖp bꢌ nhꢗ va các cꢘng I/O
Memory Request (output, active Low, 3-state). Indicates
memory read/write operation. See M1
Trong chu kꢙ làm tưꢆi I ꢅưꢚc ꢅꢛt trên bus này.
IORQ
Input/Output Request(output,active Low,3-state) Indicates
D7-D0 :
I/O read/write operation. See M1
Bus dꢍ liꢎu (nhꢖp/xuꢄt, tích cꢕc cao, 3-state). Dùng ꢅꢑ
trao ꢅꢘi dꢍ liꢎu vꢗi bꢌ nhꢗ , I/O và ngꢜt.
M1
Machine Cycle One (output, active Low).
RD:
Together with MREQ indicates opcode fetch cycle
Together with IORQ indicates an Int Ack cycle
ꢝꢁc (xuꢄt, tích cꢕc thꢄp, 3-state) cho biꢈt CPU muꢞn ꢅꢁc
dꢍ liꢎu tꢃ bꢌ nhꢗ hay I/O
RFSH
Refresh (output, active Low).
WR:
Ghi (xuꢄt, tích cꢕc thꢄp, 3-state) cho biꢈt bus dꢍ liꢎu
CPU giꢍ dꢍ liꢎu hꢚp lꢎ sꢟ ꢅưꢚc cꢄt vào bꢌ nhꢗ hay thiꢈt
Together with MREQ indicates refresh cycle.
Lower 7-bits address is refresh address to DRAM
bꢏ I/O.
Mô tả chân Z80
ꢀINT
Mô tả chân Z80
ꢀBUSREQ
ꢁInterrupt Request (input, active Low).
ꢁInterrupt Request is generated by I/O
devices.
ꢁBus Request (input, active Low).
ꢁhigher priority than NMI
ꢁrecognized at the end of the current
machine cycle.
ꢁChecked at the end of the current
instruction
ꢁIf flip-flop (IFF) is enabled.
ꢀNMI
ꢁforces the CPU address bus, data
bus, and MREQ, IORQ, RD, and WR to
high-imp.
ꢁNon-Maskable Interrupt
ꢁ(Input, negative edge-triggered).
ꢁHigher priority than INT.
ꢁRecognized at the end of the current
Instruction
ꢁIndependent of the status of IFF
ꢁForces the CPU to restart at location 0066H.
ꢀBUSACK
ꢁBus Acknowledge (output, active,Low)
ꢁindicates to the requesting device
that address, data, and control signals
MREQ, IORQ, RD, and WR have
entered their high-impedance states.
2
02-Mar-11
Mô tả chân Z80
Kiến trúc hệ thống
RESET
Reset (input, active Low).
RESET initializes the CPU as follows:
Resets the IFF
Clears the PC and registers I and R
Sets the interrupt status to Mode 0.
During reset time, the address and data
bus go to a high-impedance state And all
control output signals go to the inactive
state.
must be active for a minimum of three full
clock cycles before the reset operation is
complete.
Z80 CPU
B
U
F
8
INTERNAL DATA BUS (8 BIT)
F
E
R
DATA BUS
MUX
MUX
F
A
TMP
INSTRUCTION
REGISTER
W'
Z'
W
B
Z
I
R
A'
F'
B'
C'
C
2.2 TỔ CHỨC CÁC THANH GHI
D'
H'
E'
L'
D
H
E
L
ACT
DECODER
IX
IY
SP
PC
ALU
CONTROLLER
SEQUENCER
k
k
CONTROL
SECTION
ADDRESS BUS
CONTROL BUS
B
U
F
16
INTERNAL ADDRESS BUS (16 BIT)
F
E
R
B
U
F
13
INTERNAL CONTROL BUS
F
E
R
Mô hình lập trình Z80
Tập thanh ghi
• A : Accumulator Register
• F : Flag register
• Two sets of six general-purpose registers
– may be used individually as 8-bit A F B C D E H L (A’ F’ B’ C’ D’ E’
H’ L’)
– or in pairs as 16-bit registers AF BC DE HL (AF’ BC’ DE’ HL’)
• The Alternative registers (A’ F’ B’ C’ D’ E’ H’ L’) not
visible to the programmer but can access via:
– EXX
(BC)<->(BC') , (DE)<->(DE') , (HL)<->(HL')
– EX AF, AF’ (AF)<->(AF')
what is this instruction useful for?
3
02-Mar-11
Tập thanh ghi (tt)
Thanh ghi cờ (Flag Register)
7
6
5
4
3
2
1
0
• 4 16-bit registers hold memory address (pointers)
– index registers (IX) and (IY) are 16-bit memory pointers
– 16 bit stack pointer (SP)
P
S Z X H X
N C
V
S Sign Flag (1:negativ)*
Z Zero Flag (1:Zero)
– Program counter (PC)
• Program counter (PC)
H Half Carry Flag (1: Carry from Bit 3 to Bit 4)**
P Parity Flag (1: Even)
– PC points to the next opcode to be fetched from ROM
– when the µP places an address on the address bus to fetch the
byte from memory, it then increments the program counter by
one to the next location
V Overflow Flag (1:Overflow)*
N Operation Flag (1:previous Operation was subtraction)**
C Carry Flag (1: Carry from Bit n-1 to Bit n,
with n length of operand)
• Special purpose registers
– I : Interrupt vector register.
– R : memory Refresh register
*: 2-complement number representation
**:
used in DAA-operation for BCD-arithmetic
DAA - Decimal Adjust Accumulator
Adjusts the content of the Accumulator A for BCD addition and subtraction
operations such as ADD, ADC, SUB, SBC, and NEG according to the table:
Stack Pointer (SP)
Dùng làm con trꢠ chꢐ ꢅꢈn
stack bꢌ nhꢗ ngoài
•
•
before DAA
Bits 4-7
after DAA
A=A+..
Khi ꢅưa dꢍ liꢎu vào
15
0
Op
N
C
H
Bits 0-3
C
Data
stack (PUSH), SP giꢇm ꢅi 2
(toán hꢊng 2 byte).
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
1
1
1
0
0
1
1
0-9
0-8
0-9
A-F
9-F
A-F
0-2
0-2
0-3
0-9
0-8
7-F
6-F
0
0
1
0
0
1
0
0
1
0
1
0
1
0-9
A-F
0-3
0-9
A-F
0-3
0-9
A-F
0-3
0-9
6-F
0-9
6-F
00
06
06
60
66
66
60
66
66
00
FA
A0
9A
0
0
0
1
1
1
1
1
1
0
0
1
1
•
•
Khi lꢄy dꢍ liꢎu ra khꢠi stack
(POP), SP tꢓng thêm 2 (toán
hꢊng 2 byte).
ADD
ADC
Vì Z80 theo little endian nên
byte thꢄp cꢡa dꢍ liꢎu sꢟ ꢔ ꢅꢏa
chꢐ thꢄp
SUB
SBC
NEG
Tꢘ chꢉc bꢌ nhꢗ
• Tꢘ chꢉc bꢌ nhꢗ tùy theo ꢉng dꢋng khác nhau ta có
các tꢘ chꢉc khác nhau và tùy theo ROM, SRAM,
DRAM mà ta có các kꢈt nꢞi tín hiꢎu ꢅiꢀu khiꢑn khác
nhau.
2.3 TỔ CHỨC BỘ NHỚ
• Vꢗi ꢅꢏa chꢐ 16 ꢅưꢢng (A0 ꢅꢈn A15), Z80 có thꢑ làm
viꢎc ꢅꢈn tꢞi ꢅa 64KB bꢌ nhꢗ.
• Tám ꢅưꢢng ꢅꢏa chꢐ thꢄp (A0 ꢅꢈn A7) cꢣng ꢅưꢚc dùng
ꢅꢑ truy cꢖp tꢗi 256 cꢘng I/O.
• ꢝꢑ minh hoꢊ phꢤn này ta sꢟ khꢇo sát mꢌt sꢞ thí dꢋ.
4
02-Mar-11
Giao tiếp ROM 1KB và 2 RAM 256 x 4
Giao tiếp với RAM
A9..A0
A7..A0
A7..A0
Ta muꢞn Z80 kꢈt nꢞi vꢗi các bꢌ nhꢗ (vꢗi các chip ROM 1K x 8 và
RAM 256 x 4) theo bꢇng bꢌ nhꢗ sau
ROM 1 KB : 0000H–03FFH
RAM 256 bytes : 0400H–04FFH
Thí dụ giao tiếp DRAM 8 KB xây dựng
từ các DRAM 4KB
Giao tiếp với SRAM 1KB
Hệ máy tính Z80 tối thiểu
2.4 GHÉP NỐI BUS HỆ THỐNG
5
02-Mar-11
Thí dụ sơ đồ phần cứng một kit dựa trên Z80
Mở rộng giao tiếp cho Z80
•
ꢝꢑ có thꢑ mꢔ rꢌng giao tiꢈp cho Z80, hãng Zilog ꢅã phát triꢑn các
chip hꢥ trꢚ sau:
– Z80 PIO là bꢌ ꢅiꢀu khiꢑn I/O song song, nó làm cho Z80 mꢔ rꢌng
thêm thành 2 cꢘng I/O song song 8 bit. Chip còn có thêm ꢅưꢢng
tꢊo ngꢜt cho Z80 và cho phép nꢞi logic OR các chân này lꢊi.
– Z80 CTC là mꢊch bꢌ ꢅꢈm-ꢅꢏnh thì (counter-timer circuit) ꢅꢑ cho
ngưꢢi thiꢈt kꢈ hꢎ thꢞng Z80 sꢂ dꢋng nó thꢕc hiꢎn các chꢉc nꢓng
ꢅꢈm và ꢅꢏnh thì.
– Z80 SIO là mꢊch nhꢖp/xuꢄt nꢞi tiꢈp (Serial Input/Output Circuit),
chip này cung cꢄp cho hꢎ Z80 vꢗi 2 cꢘng nꢞi tiꢈp mà có thꢑ sꢂ
dꢋng ꢅꢑ liên lꢊc vꢗi các thiꢈt bꢏ ngoꢊi vi nꢞi tiꢈp khác.
–
Z80 DMA thꢕc hiꢎn viꢎc truy cꢖp bꢌ nhꢗ trꢕc tiꢈp vꢗi thiꢈt bꢏ ngoài.
Chu kỳ lệnh, chu kỳ máy và các trạng thái T
• Chu kꢢ lꢖnh là thꢑi gian cꢣn ꢏꢓ hoàn tꢟt viꢖc thꢤc
thi mꢀt lꢖnh.
2.5 CHU KỲ BUS, CHU KỲ MÁY
• Chu kꢢ máy ꢏꢐꢥc ꢏꢜnh nghꢦa là thꢑi gian cꢣn hoàn
tꢟt mꢀt tác vꢛ truy cꢧp bꢀ nhꢡ, truy cꢧp I/O,…
(Vꢡi Z80, chu kꢢ máy có thꢓ kéo dài tꢨ 3 ꢏꢙn 6 chu
kꢢ xung nhꢜp )
• T-state = 1/f (f: tꢣn sꢘ Clock cꢚa Z80)
– f= 4MHZ ꢂ T-state=0.25 uS
Thí dụ định thì CPU Z80
chu kỳ máy
Có 7 chu kꢙ máy vꢗi Z80:
1. Nhꢖn mã lꢎnh (chu kꢙ M1)
2. ꢝꢁc hoꢛc ghi dꢍ liꢎu bꢌ nhꢗ
3. ꢝꢁc hoꢛc ghi I/O
4. Yêu cꢤu/ghi nhꢖn bus (Bus Request/Acknowledge)
5. Yêu cꢤu/ghi nhꢖn INT
6. Yêu cꢤu/ghi nhꢖn NMI
Chú ý;
7. Thoát khꢠi lꢎnh HALT
•
•
•
1 chu kꢢ lꢖnh (Instruction Cycle) = 1 ꢂ 6 chu kꢢ máy (Machine Cycle)
1 chu kꢢ máy (Machine Cycle) = 3 ꢂ 6 chu kꢢ T (T Cycle)
1 chu kꢢ T = 1/fCLK (fCLK ꢩꢪtꢣn sꢘ cꢚa thꢗch anh gꢫn vào Z80)
6
02-Mar-11
Thanh ghi R (Refresh)
Chu kỳ nhận lệnh (chu kỳ M1)
• ꢂꢐꢥc tꢠng ꢬ mꢭi chu kꢢ M1.
• Bit 7 cꢚa nó không bao giꢑ bꢜ thay ꢏꢮi bꢬi M!;
chꢝ có 7 bit thꢟp tham gia trong phép cꢀng. Vì
vꢧy bit 7 giꢕ nguyên trꢜ cꢯ.
• Ta chꢝ có thꢓ thay ꢏꢮi bit 7 bꢰng lꢖnh LD R,A
• LD A,R và LD R,A truy cꢧp thanh ghi R sau khi
nó ꢏꢐꢥc tꢠng
• R thꢐꢑng ꢏꢐꢥc dùng làm giá trꢜ ngꢒu nhiên
trong chꢐơng trình nhꢐng dꢦ nhiên nó thꢧt sꢤ
không ngꢒu nhiên.
Thêm mꢌt trꢊng thái ꢅꢚi vào chu kꢙ T1
Chu kỳ đọc hoặc ghi bộ nhớ
Chu kỳ nhập hoặc xuất
(Input or Ouput Cycle)
Thêm trạng thái đợi vào bất kỳ
chu kỳ bộ nhớ nào
During I/O operations a single wait state is automatically inserted
7
02-Mar-11
Chu kỳ yêu cầu/ghi nhận ngắt
Chu kỳ yêu cầu bus/ ghi nhận
Two wait states are automatically added to this cycle
Chu kỳ yêu cầu/ghi nhận bus với NMI
Chu kỳ làm tươi M1
• Takes 4T to 6Ts
• Z80 includes built in circuitry for refreshing
DRAM
• This simplifies the external interfacing
hardware
• DRAM consists of MOS transistors, which
store Information as capacitive charges;
each cell needs to be periodically refreshed
• During T3 and T4 (when Z80 is performing
internal ops), the low order address is used
to supply a 7-bit address for refresh
Ngắt (Interrupt)
Tín hiệu Wait
There are two types of interrupts:
• the Z80 samples the wait signal during T2 if
low then Z80 adds wait
• non mask-able (NMI)
– Could not be masked
– Jump to 0066H of memory
• states to extend the machine cycle
• mask-able(INT)
– Has 3 mode
• used to interface memories with slow
response time
– Can be set with the IM x Instruction
– IM 0 sets Interrupt mode 0
– IM 1 sets Interrupt mode 1
– IM 2 sets Interrupt mode 2
• Slow memory is low cost
8
02-Mar-11
Các chế độ ngắt
• Mode 0:
– An 8 bit opcode is Fetched from Data BUS and executed
– The source interrupt device must put 8 bit opcode at data
bus
– 8 bit opcode usually is RST p instructions
• Mode 1:
– A jump is made to address 0038h
– No value is required at data bus
• Mode 2:
– A jump is made to address (register I × 256 + value from
interrupting device that puts at bus)
– I is high 8 bit of interrupt vector
– Value is low 8 bit of interrupt vector
ꢂꢜnh thì RESET
Chu kỳ thoát khỏi HALT
ꢂiꢔu kiꢖn thoát: INT, NMI, RESET
CPU Reset
2.6 CÁC PHƯƠNG PHÁP
ĐỊNH ĐỊA CHỈ
9
02-Mar-11
Định địa chỉ trong Z80
Phꢤn lꢗn các lꢎnh Z80 làm viꢎc vꢗi dꢍ liꢎu ꢅưꢚc lưu trꢍ trong
các thanh ghi CPU, bꢌ nhꢗ ngoài, hoꢛc trong các cꢘng I/O. Z80
có cách ꢅꢏnh ꢅꢏa chꢐ sau:
ꢀꢁnh ꢂꢁa chꢃ tꢄc thꢅi
• Byte theo sau mã lꢎnh là toán hꢊng thꢖt.
•
– ꢀꢁnh ꢂꢁa chꢃ tꢄc thꢅi (hꢆng sꢇ 8 bit)
– ꢀꢁnh ꢂꢁa chꢃ tꢄc thꢅi mꢈ rꢉng (hꢆng sꢇ 16 bit)
– ꢀꢁnh ꢂꢁa chꢃ trꢊc tiꢋp (ꢂꢁa chꢃ 8 bit)
– ꢀꢁnh ꢂꢁa chꢃ trꢊc tiꢋp mꢈ rꢉng (ꢂꢁa chꢃ 16 bit)
– ꢀꢁnh ꢂꢁa chꢃ trang 0 (có sꢌa ꢂꢍi)
– ꢀꢁnh ꢂꢁa chꢃ tương ꢂꢇi
• Thí dꢋ cꢡa loꢊi lꢎnh này là nꢊp hꢦng sꢞ vào
thanh ghi tích lꢣy.
– ꢀꢁnh ꢂꢁa chꢃ theo chꢃ sꢇ
Thí dꢋ:
LD A, 10H
– ꢀꢁnh ꢂꢁa chꢃ thanh ghi
– ꢀꢁnh ꢂꢁa chꢃ hiꢎu ngꢏm
– ꢀꢁnh ꢂꢁa chꢃ gián tiꢋp qua thanh ghi
– ꢀꢁnh ꢂꢁa chꢃ cho bit
ꢀꢁnh ꢂꢁa chꢃ tꢄc thꢅi mꢈ rꢉng
ꢀꢁnh ꢂꢁa chꢃ trꢊc tiꢋp
• Cung cꢄp ꢅꢏa chꢐ 8 bit cꢡa toán hꢊng ngay sau
mã lꢎnh
• Hai byte theo sau mã lꢎnh là toán hꢊng thꢖt.
• TD: IN A, (20H)
• Thí dꢋ cꢡa loꢊi lꢎnh này là nꢊp dꢍ liꢎu 16 bit
vào cꢛp thanh ghi (thí dꢋ HL).
Thí dꢋ:
LD HL, 8010H
Định địa chỉ [trực tiếp] mở rộng
ꢀꢁnh ꢂꢁa chꢃ trang 0 (có sꢌa ꢂꢍi)
• Z80 có lꢎnh CALL ꢅꢛc biꢎt 1 byte ꢅꢑ nhꢇy ꢅꢈn 8 vꢏ trí
(chꢐ bꢔi nhóm bit b5b4b3) cꢡa trang 0 cꢡa bꢌ nhꢗ. Lꢎnh
này ꢅưꢚc thꢕc thi như khꢔi ꢅꢌng lꢊi, nó ꢅꢛt PC có giá
trꢏ ꢅꢏa chꢐ thꢖt ꢔ trang 0. Giá trꢏ cꢡa lꢎnh này là cho
phép dùng 1 byte ꢅꢑ chꢐ ꢅꢏa chꢐ 16 bit.
• Cung cꢄp ꢅꢏa chꢐ 16 bit cꢡa toán hꢊng ngay sau
mã lꢎnh
• Thí dꢋ:
RST p
vꢗi giá trꢏ p có thꢑ là 00H, 08H, 10H, 18H, 20H, 28H,
30H, hoꢛc 38H.
10
02-Mar-11
ꢀꢁnh ꢂꢁa chꢃ tương ꢂꢇi
ꢀꢁnh ꢂꢁa chꢃ theo chꢃ sꢇ
• Sꢂ dꢋng 1 byte dꢍ liꢎu theo sau mã lꢎnh ꢅꢑ chꢐ ꢅꢌ dꢢi
so vꢗi ꢅꢏa chꢐ lꢎnh kꢈ và lꢎnh ꢅꢏnh nhꢇy ꢅꢈn. ꢝꢌ dꢢi D
này sꢞ có dꢄu biꢑu diꢧn theo sꢞ bù 2 và ꢅꢏa chꢐ thꢖt
ꢅưꢚc tính như sau (theo ꢅꢌ dꢢi D và ꢅꢏa chꢐ lꢎnh hiꢎn
tꢊi A):
• Byte dꢍ liꢎu theo mã lꢎnh là ꢅꢌ dꢢi D (sꢞ có
dꢄu bù 2) ꢅưꢚc cꢌng vào vꢗi thanh ghi chꢐ sꢞ
(IX hoꢛc IY) ꢅꢑ chꢐ ꢅꢈn ô nhꢗ dꢍ liꢎu, nghꢨa là
EA = IX (hoꢛc IY) + D. Loꢊi lꢎnh này có mã
lꢎnh dài 2 byte và trong mã lꢎnh có các bit chꢐ
ra thanh ghi chꢐ sꢞ nào ꢅưꢚc chꢁn IX hoꢛc IY.
EA = D + A + 2
ꢝꢌ dꢢi D có thꢑ có giá trꢏ tꢃ -128 ꢅꢈn +127.
• Thí dꢋ: LD A, (IX + 10H)
LD B, (IY + 20H)
• Thí dꢋ:
JR
10H
ꢀꢁnh ꢂꢁa chꢃ thanh ghi
ꢀꢁnh ꢂꢁa chꢃ hiꢎu ngꢏm
• Nhiꢀu mã lꢎnh Z80 chꢉa các bit thông tin cho
biꢈt thanh ghi CPU nào ꢅưꢚc sꢂ dꢋng trong
lꢎnh.
• Mã lꢎnh cho biꢈt 1 hay nhiꢀu thanh ghi CPU
chꢉa toán hꢊng. Thí dꢋ có mꢌt sꢞ lꢎnh hiꢑu
toán hꢊng ꢅꢑ ꢔ thanh ghi tích lꢣy.
• Thí dꢋ:
LD A, B
ꢀꢁnh ꢂꢁa chꢃ cho bit
ꢀꢁnh ꢂꢁa chꢃ gián tiꢋp qua thanh ghi
•
Z80 có nhiꢀu lꢎnh ꢅꢛt bit, xóa bit và kiꢑm tra bit. Các lꢎnh này
cho phép bꢄt cꢉ vꢏ trí bꢌ nhꢗ nào hoꢛc thanh ghi CPU sꢟ ꢅưꢚc sꢂ
dꢋng cho các phép toán bit qua mꢌt trong 3 cách ꢅꢏnh ꢅꢏa chꢐ
trưꢗc (thanh ghi, gián tiꢈp qua thanh ghi và theo chꢐ sꢞ) và 3 bit
trong mã lꢎnh sꢟ cho biꢈt bit nào trong 8 bit ꢅưꢚc xꢂ lý.
• Loꢊi ꢅꢏnh ꢅꢏa chꢐ này cho biꢈt cꢛp thanh ghi 16
bit nào (như HL) ꢅưꢚc dùng làm con trꢠ chꢐ tꢗi
vꢏ trí ô nhꢗ.
•
Thí dꢋ:
LD A, (HL)
Thí dꢋ:
BIT 3, A
SET 0, (HL)
RES 7, (IX + 10H)
LD (HL), 10H
Chú ý là có nhꢍng lꢎnh kꢈt hꢚp mꢌt sꢞ cách ꢅꢏa chꢐ chung trong
mꢌt lꢎnh.
11
02-Mar-11
• Tꢖp lꢎnh Z80 gꢒm có 158 lꢎnh, trong ꢅó ꢅã bao gꢒm
78 lꢎnh cꢡa 8080. Các lꢎnh ꢅưꢚc chia làm các nhóm
chính sau:
– Nꢊp 8 bit và nꢊp 16 bit
– Hoán ꢅꢘi, chuyꢑn khꢞi và tìm kiꢈm
– Sꢞ hꢁc và logic 8 bit
– Sꢞ hꢁc 16 bit
2.7 TẬP LỆNH
– Sꢞ hꢁc ꢅa dꢋng và ꢅiꢀu khiꢑn CPU
– Xoay và dꢏch bit
– Xꢂ lý bit (Các phép toán trên bit)
– Nhꢖp và xuꢄt
– Nhꢇy, rꢟ nhánh chưꢆng trình
– Gꢁi chưꢆng trình và quay vꢀ chưꢆng trình gꢁi.
Pseudo Codes
• Khi viꢈt chưꢆng trình ꢅꢑ thuꢖn tiꢎn thưꢢng ta
dùng hꢚp ngꢍ mà lꢎnh có dꢊng như trong thí
dꢋ sau:
•
ꢝꢑ có thꢑ viꢈt chưꢆng trình dꢧ dàng hꢆn các trình
hꢚp ngꢍ thưꢢng cho thêm các tác vꢋ giꢇ (pseudo
operation) hay còn gꢁi là các lꢎnh giꢇ như: EQU,
DEFB, DEFW, DEFS, ORG, END, MACRO.
1. EQU (nghꢨa là equate=bꢦng; dùng ꢅꢑ gán trꢏ)
–
Thí dꢋ: Nꢌi dung ô nhꢗ SUM = A + 10H
SUM:
EQU 1900H
; SUM = 1900H
COUNT:
EQU 10H
ADD A, COUNT
LD (SUM), A
; ADD A, 10H
2. DEFB (Define Byte = ꢝꢏnh nghꢨa Byte) và DEFW
(Define Word = ꢝꢏnhnghꢨa Word)
3. DEFS (Define Storage = ꢝꢏnh nghꢨa vùng lưu
trꢍ)
Thí dꢋ:
CONST:
EQU
52H
ADRS:
EQU
1900H
ADRS
CONST
Thí dꢋ: (Giꢇ sꢂ lꢎnh DEFS 10H ꢔ ꢅꢏa chꢐ 1800H)
TABLE:
DEFW
DEFB
1800H
1810H
1811H
DEFS 10H ; dành 16 byte lưu trữ
LD
LD
HL, 10H
DE, 20H
Khi ꢅó các vùng nhꢗ (giꢇ sꢂ ꢅꢏa chꢐ ꢔ TABLE là
1951H) như sau
12
02-Mar-11
5. MACRO (ꢝꢏnh nghꢨa mꢌt ꢅoꢊn chưꢆng
trình mà trình hꢚp ngꢍ sꢟ tꢕ ꢅꢌng chèn vào
toàn bꢌ ꢅoꢊn chưꢆng trình này khi có tham
chiꢈu tên macro ꢅó và bꢜt ꢅꢤu ꢅoꢊn macro
bꢦng MACRO và kꢈt thúc bꢦng ENDM)
4. ORG (Origin = bꢜt ꢅꢤu; ꢅꢏnh nghꢨa ꢅꢏa chꢐ bꢜt ꢅꢤu)
và END (kꢈt thúc chưꢆng trình)
Thí dꢋ:
ORG
START: LD
100H ; Chương trình bắt đầu từ 100H
Thí dꢋ:
A, 1FH ; bắt đầu chương trình
REF:
MACRO
INC
A
LD
LD
H, (IX+1)
L, (IY+1)
OUT
END
(11H), A
; kết thúc chương trình
INC IX
INC IY
ENDM
• Thí dꢐ: ꢝiꢀn các sꢞ 0 vào các ô nhꢗ có ꢅꢏa chꢐ
tꢃ 8100H ꢅꢈn 817FH.
ORG 8000H
• Thí dꢐ: Nhân 10 lꢤn giá trꢏ ꢅưꢚc cꢄt trong cꢛp
thanh ghi HL.
LD HL, 8100H
MULT10:
ADD HL, HL
LD D, H
LD E, L
; 2X HL
LD A, 00H
; (HL)=>(DE)
LD C, 80H
LOOP:
LD (HL), A
INC HL
DEC C
ADD HL, HL
ADD HL, HL
ADD HL, DE
RET
; 4 x HL
; 8 x HL
; (8+2) x HL
JP NZ, LOOP
HALT
END
• Thí dꢐ: Chuyꢑn chuꢥi dꢍ liꢎu 737 byte ꢔ vꢏ trí bꢌ
nhꢗ DATA ꢅꢈn vꢏ trí bꢌ nhꢗ BUFFER, tác vꢋ này
ꢅưꢚc lꢖp trình như sau
LD HL, DATA
; Lấy địa chỉ bắt đầu của DATA
LD DE, BUFFER ; Lấy địa chỉ bắt đầu của BUFFER
LD BC, 737
LDIR
; Chiều dài của chuỗi ký tự
; Chuyển chuỗi–Chuyển bộ nhớ chỉ
; bởi HL vào ô nhớ được chỉ bởi DE
; tăng HL và DE lên 1
;Giảm bớt BC đi 1, cho đến khi BC= 0.
13
02-Mar-11
14
02-Mar-11
15
Bạn đang xem tài liệu "Bài giảng Vi xử lý - Chương 2: Kiến trúc CPU và tập lệnh (Phần 1) - Hồ Trung Mỹ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_vi_xu_ly_chuong_2_kien_truc_cpu_va_tap_lenh_phan_1.pdf

