You are on page 1of 525

Kỹthuật vi xửlý

Microprocessors

Giảng viên: Phạm Ngọc Nam


© DHBK 2005 2/Chapter1

Your instructor
• Bộmôn kỹthuật điện tửtin học
 Office: C9-401
 Email: pnnam-fet@mail.hut.edu.vn

• Research:
 FPGA, PSoC, hệnhúng
 Trí tuệnhân tạo
• Education:
 K37 điện tử-ĐHBK Hà nội (1997)

 Master vềtrí tuệnhân tạo 1999, Đại học K.U. Leuven,


vương quốc Bỉ
 Đềtài: Nhận dạng chữviết tay
 Tiến sỹkỹthuật chuyên ngành điện tử-tin học, 9/ 2004, Đại
học K.U. Leuven, Vương Quốc Bỉ
 Đềtài: quản lý chất lượng dị
ch vụtrong các ứng dụng đa
phương tiện tiên tiến
© DHBK 2005 3/Chapter1

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế
© DHBK 2005 4/Chapter1

Tài liệu tham khảo


• Slides
• Văn ThếMinh, Kỹthuật vi xửlý, Nhà xuất bản giáo
dục, 1997.
• Barry B. Brey, The Intel Microprocessors:
8086/8088, 80186/80188, 80286, 80386, 80486,
Pentium and Pentium Pro Processor: Architecture,
Programming, and Interfacing, Fourth Edition,
Prentice Hall, 1997.
• Quách Tuấn Ngọc và cộng sự, Ngôn ngữlập trình
Assembly và máy vi tính IBM-PC, 2 tập, Nhà xuất
bản giáo dục, 1995.
• Cảm ơn giáo sưRudy Lauwereins đã cho phép sử
dụng slides của ông
© DHBK 2005 5/Chapter1

Mục đích của môn học


• Nắm được cấu trúc, nguyên lý hoạt động của bộvi
xửlý và hệvi xửlý
• Có khảnăng lập trình bằng hợp ngữcho vi xửlý
• Có khảnăng lựa chọn vi xửlý thích hợp cho các
ứng dụng cụthể
• Nắm được các bộvi xửlý trên thực tế
© DHBK 2005 6/Chapter1

Bài tập lớn và thi


• Bài tập lớn: thiết kếmột ứng dụng trên vi điều khiển:
20% tổng sốđiểm
Làm theo nhóm 2-6 sinh viên
Nộp danh sách các nhóm vào 3/1
Các nhóm trình bày ý tưởng 17/1
• Kiểm tra: 10%
3 bài kiểm tra không báo trước
dựđủít nhất 2 bài và kết quảcủa 2 bài > 5: 1 điểm
thiếu 2 bài trởlên: không được thi lần 1
• Thi học kỳ:
1 câu lý thuyết, 2 câu bài tập (lập trình và thiết kế)
70% tổng sốđiểm
Chương 1
© DHBK 2005 7/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
Chương 1
© DHBK 2005 8/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
Chương 1
© DHBK 2005 9/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
Thếhệ-1: The early days (…-1642)
© DHBK 2005 10/Chapter1

• Bàn tính, abacus, đã được sửdụng đểtính toán.


Khái niệm vềgiá trịtheo vịtrí đã được xửdụng
Thếhệ-1: The early days (…-1642)
© DHBK 2005 11/Chapter1

• Thếkỷ12: Muhammad ibn


Musa Al'Khowarizmi đưa
ra khái niệm vềgiải
thuật algorithm
Thếhệ-1: The early days (…-1642)
© DHBK 2005 12/Chapter1

• Codex Madrid - Leonardo Da Vinci (1500)


 Vẽmột cái máy tính cơkhí
Chương 1
© DHBK 2005 13/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
© DHBK 2005 14/Chapter1

Thếhệ0: Mechanical (1642-1945)

• Blaise Pascal, con trai của một người thu thuế, đã


chếtạo một máy cộng có nhớvào năm 1642
© DHBK 2005 15/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Năm 1801, Joseph-Marie Jacquard đã phát minh ra
máy dệt tựđộng sửdụng bìa đục lỗđểđiều khiển hoạ
tiết dệt trên vải
• Bìa đục lỗlưu trữchương trình: máy đa năng đầu
tiên
© DHBK 2005 16/Chapter1

Thếhệ0: Mechanical (1642-1945)


• 1822, Charles Babbage
nhận ra rằng các bảng
tính dùng trong hàng
hải có quá nhiều lỗi dẫn
tới việc rất nhiêu tàu bị
mất tích

• Ông đã xin chính phủ


Anh hỗtrợđểnghiên
cứu vềmáy tính
© DHBK 2005 17/Chapter1

Thếhệ0: Mechanical (1642-1945)


© DHBK 2005 18/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Babbage đã thiết kếmột cái máy vi phân Difference Engine để
thay thếtoàn bộbảng tính: máy thực hiện một ứng dụng cụthể
đầu tiên (application specific hard-coded machine)
© DHBK 2005 19/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Ada Augusta King, trở
thành lập trình viên đầu
tiên vào năm 1842 khi
cô viết chương trình cho
Analytical Engine, thiết
bịthứ2 của Babbage
© DHBK 2005 20/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Herman Hollerith, ngừời Mỹ, thiết kếmột máy tính
đểxửlý dữliệu vềdân sốMỹ1890
• Ông thành lập công ty, Hollerith Tabulating
Company, sau đấy là Calculating-Tabulating-
Recording (C-T-R) company vào năm 1914 và sau
này được đổi tên là IBM (International Business
Machine) vào năm 1924.
© DHBK 2005 21/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Konrad Zuse, Berlin, Đức, phát triển vào năm 1935 máy
tính Z-1 sửdụng rơle và sốnhịphân
• Chu kỳlệnh: 6 giây (0.17 Hz)
© DHBK 2005 22/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Máy tính cơđiện tựđộ ng lớn đa năng đầu tiên là
máy Harvard Mark I ( IBM Automatic Sequence Control
Calculator ), phát minh bởi Howard Aiken vào cuối 1930
• ASCC không phải là máy tính có chương trình lưu trữ
sằn mà các lệnh được ghi vào các băng giấy.
© DHBK 2005 23/Chapter1

Thếhệ0: Mechanical (1642-1945)


• Grace Murray Hopper found the first computer bug beaten to
death in the jaws of a relay. She glued it into the logbook of
the computer and thereafter when the machine stops
(frequently) she told Howard Aiken that they are "debugging"
the computer.

Numbered pages
for USA patents

Lab book!!
Chương 1
© DHBK 2005 24/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
© DHBK 2005 25/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)

• Năm 1943, John


Mauchly và J.
Presper Eckert
bắt đầu nghiên
cứu vềENIAC
© DHBK 2005 26/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)

• 18000 vacuum tubes, 1500 rơle, 30 tấn, 140 kW, 20 thanh ghi
10 chữsốthập phân, 100 nghìn phép tính/ giây
• “Trong tương lai máy tính sẽnặng tối đa là 1.5 tấn” (Popular
Mechanics, 1949)
© DHBK 2005 27/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)

• Lập trình thông qua 6000 công tắc nhiều nấc và hàng tấn d ây
© DHBK 2005 28/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)


• Năm 1946, John von Neumann phát minh ra máy
tính có chương trình lưu trong bộnhớ
• Máy tính của ông gồm có một đơn vịđiều khiển, một
ALU, một bộnhớchương trình và dữliệu và sửdụng
sốnhịphân thay vì sốthập phân.
• Máy tính ngày nay đều có cấu trúc von Neumann
• ông đặt nền móng cho hiện tượng “von Neumann
bottleneck”, sựkhông tương thích giữa tốc độcủa
bộnhớvới đơn vịxửlý
© DHBK 2005 29/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)


• Năm 1948, máy tính có chương trình lưu trữtrong bộnhớđầu
tiên được vận hành tại trường đại học Manchester:
Manchester Mark I
© DHBK 2005 30/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)


• Năm 1951, máy tính Whirlwind lần đầu tiên sửdụng
bộnhớlõi từ(magnetic core memories). Gần đây
nguyên lý này đã được sửdụng lại đểchếtạo MRAM
ởdạng tích hợp.
© DHBK 2005 31/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)


• Một magnetic core lưu trữ256 bits
© DHBK 2005 32/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)


• John von Neumann năm 1952 với chiếc máy tính mới của ông
© DHBK 2005 33/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)


• Năm 1954, John Backus, IBM phát minh ra
FORTRAN
Chương 1
© DHBK 2005 34/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
35/Chapter1

Th ếhệ2: Discrete transistors (1955-1965)


© DHBK 2005

• Năm 1947, William Shockley, John Bardeen, and


Walter Brattain phát minh ra transistor
36/Chapter1

Th ếhệ2: Discrete transistors (1955-1965)


© DHBK 2005

• Năm 1955, IBM công bốIBM704, máy tính


mainframe sửdụng tranzistor
• Đây là máy tính với phép toán dấu phấy động đầu
tiên (5 kFlops, clock: 300 kHz)
Chương 1
© DHBK 2005 37/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
38/Chapter1

Thếhệ3: Integrated circuits (1965-1980)


© DHBK 2005

• Năm 1958, Jack St. Clair Kilby of Texas


Instruments (Nobel prize physics, 2000) đưa ra và
chứng minh ý tưởng tích hợp 1 transistor với các
điện trởvà tụđiện trên một chip bán dẫn với kích
thước 1 nửa cái kẹp giấy. Đây chính là IC.
39/Chapter1

Thếhệ3: Integrated circuits (1965-1980)


© DHBK 2005

• 7/4/1964 IBM đưa ra System/360, họmáy tính tương


thích đầu tiên của IBM
40/Chapter1

Thếhệ3: Integrated circuits (1965-1980)


© DHBK 2005

• Năm 1965, Digital


Equipment Corporation, đưa
ra chiếc máy tính mini
đầu tiên DP-8
© DHBK 2005 41/Chapter1

Thếhệ3: Integrated circuits (1965-1980)

• Năm 1971, Ted Hoff chếtạo Intel 4004 theo đơn đặt hàng của một
công ty Nhật bản đểtạo chip sản xuất calculator. Đây là vi xửlý đầu
tiên với 2400 transistor (microprocessor, processor-on-a-chip).
• 4 bít dữliệu, 12 bit đị
a chỉ
© DHBK 2005 42/Chapter1

Thếhệ3: Integrated circuits (1965-1980)

• 1973-1974, Edward Roberts, William Yates and Jim Bybee


chếtạo MITS Altair 8800, máy tính cá nhân đầ u tiên
• Giá $375, 256 bytes of memory, không keyboard, không
màn hình và không bộnhớngoài
• Sau đó, Bill Gate và Paul Allen viết chương trình dị
ch
BASIC cho Altair
Chương 1
© DHBK 2005 43/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
Thếhệ-1: The early days (…-1642)
Thếhệ0: Mechanical (1642-1945)
Thếhệ1: Vacuum tubes (1945-1955)
Thếhệ2: Discrete transistors (1955-1965)
Thếhệ3: Integrated circuits (1965-1980)
Thếhệ4: VLSI (1980-?)
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
© DHBK 2005 44/Chapter1

Thếhệ4: VLSI (1980-?)

• Năm 1981, IBM bắ t đầu với IBM "PC" sử


dụng hệđiều hành DOS.
© DHBK 2005 45/Chapter1

Thếhệ4: VLSI (1980-?)


• Năm 1984, Xerox PARC (Palo Alto Research Center) đưa ra
máy tính đểbàn Alto với giao diện người và máy hoàn toàn
mới: windows, biểu tượng, mouse

Con chuột đầu tiên


© DHBK 2005 46/Chapter1

Thếhệ4: VLSI (1980-?)


• Năm 1986, siêu máy tính Cray-XMP với 4 bộxửlý đã đạt
tốc độtính toán là 840 MFlops. Nó được làm mát bằng nước
© DHBK 2005 47/Chapter1

Thếhệ4: VLSI (1980-?)


• Tốc độtính toán này đã đạt được với máy tính cá
nhân 1 vi xửlý, Pentium III, vào quý 1 năm 2000
Chương 1
© DHBK 2005 48/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
© DHBK 2005 49/Chapter1

Phân loại vi xửlý


© DHBK 2005 50/Chapter1

Phân loại vi xửlý

• BMW > 100 processors


• Trung bình 1 công dân Mỹ~ 75 processors

*Intelligent Transportation *Cabin Air


System (ITS)
Quality
*Lighting
*Safety Systems

*Engine
Performance and
Emission Control
(Traction Control)

*Suspension *Digital Car


*Steering Controls*Entertainment
and
Braking Control
*Gear Box Radio
© DHBK 2005 51/Chapter1

Phân loại vi xửlý


Phân loại theo giá thành:

Type Giá (USD) Example application


Disposable system 1 Greeting cards
Embedded system 10 Watches, cars,
appliances
Game computer 100 Home video games
Personal computer 1K Desktop computer
Server 10K Network server
Collection of 100K Departmental
workstations supercomputer
Mainframe 1M Batch processing in
bank
Supercomputer 10M Weather forecasting
© DHBK 2005 52/Chapter1

Phân loại vi xửlý


• Phân loại theo chức năng:
 Vi xửlý đa năng (General Purpose Microprocessor)
 DSP (Digital Signal Processor)
 Vi điều khiển (Microcontroller)
 ASIP (Application Specific Integrated Processor)
• Phân loại theo tập lệnh:
 CISC (complex Instruction Set computer): máy tính có tập lệnh phức tạp
 nhiều lệnh
 cấu trúc phức tạp
 mỗi lệnh: có độdài khác nhau và thực hiện trong 1 đến chục chu kỳ
xung nhị p
 RISC (reduced instruction Set computer): máy tính có tập lệnh rút
gọn
 ít lệnh
 mỗi lệnh có độdài cốđị nh và thực hiện trong 1 đến 2 chu ký xung nhị
p
 cấu trúc vi xửlý đơn giản, có nhiều thanh ghi
 tốc độxung nhị
p lớn và tiêu thụnăng lượng thấp
Chương 1
© DHBK 2005 53/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
Thập phân, Nhịphân, Hệ8, Hệ16
Cộng, trừ, nhân, chia
Các sốâm
Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi


xửlý
Chương 1
© DHBK 2005 54/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
Thập phân, Nhịphân, Hệ8, Hệ16
Cộng, trừ, nhân, chia
Các sốâm
Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi


xửlý
© DHBK 2005 55/Chapter1

Hệthập phân
• 1234,56710=
 1•1000+2•100+3•10+4•1+5•0.1+6•0.01+7•0.001
 1•103+2•102+3•101+4•100+5•10-1+6•10-2+7•10-3
 r = cơsố(r = 10), d=digit (0 d 9), m = sốchữsốtrước dấu phẩy,
n = sốchữsốsau dấu phẩy

m 1
D d i r i

i n
© DHBK 2005 56/Chapter1

Hệnhịphân
• 1011,0112=
 1•8+0•4+1•2+1•1+0•0.5+1•0.25+1•0.125
 1•23+0•22+1•21+1•20+0•2-1+1•2-2+1•2-3
 r = cơsố(r = 2), d=digit (0 d 1), m = sốchữsốtrước dấu phẩy, n
= sốchữsốsau dấu phẩy

m
1
B d i 2 i

i n
© DHBK 2005 57/Chapter1

Hệ8 (Octal)
• 7654,328=
 7•512+6•64+5•8+4•1+3•0.125+2•0.015625
 7•83+6•82+5•81+4•80+3•8-1+2•8-2
 r = cơsố(r = 8), d=digit (0 d 7), m = sốchữsốtrước dấu phẩy, n
= sốchữsốsau dấu phẩy

m 1
O d i 8 i

i n
© DHBK 2005 58/Chapter1

Hệ16 (Hexadecimal)
• FEDC,7616=
 15•4096+14•256+13•16+12•1+7•1/16+6•1/256
 15•163+14•162+13•161+12•160+7•16-1+6•16-2
 r = cơsố(r = 16), d=digit (0 d F), m = sốchữsốtrước dấu phẩy,
n = sốchữsốsau dấu phẩy

m
1
H di 
16 i

i n
© DHBK 2005 59/Chapter1

Chuyển đổi giữa các hệđếm


• Chuyển từhệthập phân sang nhịphân
Quy tắc: lấy sốcần đổi chia cho 2 và ghi nhớphần dư, lấy
thương chia tiếp cho 2 và ghi nhớphần dư. Lặp lại khi
thương bằng 0. Đảo ngược thứtựdãy các sốdưsẽđược chứ
sốcủa hệnhịphân cần tìm

Ví dụ: Đổi 34 sang hệnhịphân: 100010

• Chyển từhệnhịphân sang hệ16 và ngược lại


1011 0111B = B7H
Chương 1
© DHBK 2005 60/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
Thập phân, Nhịphân, Hệ8, Hệ16
Cộng, trừ, nhân, chia
Các sốâm
Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi


xửlý
© DHBK 2005 61/Chapter1

Cộng nhịphân
• Cộng thập phân
Nhớ 0 1 0

x 8273

y 562

Tổng 8835

• Cộng nhịphân

Nhớ 0 0 1 1 1 1 1

x 10011011

y 1010111

Tổng 11110010
© DHBK 2005 62/Chapter1

Trừnhịphân

x 11101

y 1111

Mượn 1110

Hiệu 01110
© DHBK 2005 63/Chapter1

Nhân nhịphân
• Nguyên tắc: cộng và dị
ch

1110

1101

1110

0000

1110

1110

10110110
© DHBK 2005 64/Chapter1

Chia nhịphân

10111010 1110
1110
1101
1001010
1110
10010
0000
10010
1110
100

• Nguyên tắc: trừvà dị


ch
Chương 1
© DHBK 2005 65/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
Thập phân, Nhịphân, Hệ8, Hệ16
Cộng, trừ, nhân, chia
Các sốâm
Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi


xửlý
Biểu diễn bằng dấu và độlớn
© DHBK 2005 66/Chapter1

(Sign-Magnitude)
• Một sốcó dấu bao gồm 2 phần: dấu và độlớn

• Ví dụhệ10: +12310 (thông thường ‘123’) và -12310

• Hệnhịphân: bít dấu là bít MSB; ‘0’ = dương, ‘1’ = âm


• Ví dụ: 011002 = +1210 và 111002 = -1210

• Các sốcó dấu 8 bít sẽcó giá trịtừ-127 đến +127 với
2 số0: 1000 0000 (-0) và 0000 0000 (+0)
© DHBK 2005 67/Chapter1

Sốbù 2
• Sốbù 1 (bù lô gic): đảo bit
1001 => 0110
0100 => 1011
• Sốbù 2 (bù sốhọc): sốbù 1 +1

• Ví dụ: Tìm sốbù 2 của 13

13 = 0000 1101
Sốbù 1 của 13 =1111 0010
Cộng thêm 1: 1
Sốbù 2 của 13= 1111 0011 (tức là -13)
© DHBK 2005 68/Chapter1

Sốbù 2
• Ví dụ: Tìm sốbù 2 của 0

0 = 0000 0000
Sốbù 1 của 0 =1111 1111
Cộng thêm 1: 1
Sốbù 2 của 0= 0000 0000 (tức là -0)

• Nhưvậy với sốbù 2, số0 được biểu diễn 1 cách duy


nhất
• Sốcó dấu 8 bít sẽcó giá trịtừ-128 đến 127
© DHBK 2005 69/Chapter1

Sốbù 2

Decimal Sốbù 2 Sign-magnitude


-8 1000 -
-7 1001 1111
-6 1010 1110
-5 1011 1101
-4 1100 1100
-3 1101 1011
-2 1110 1010
-1 1111 1001
0 0000 1000 & 0000
1 0001 0001
2 0010 0010
3 0011 0011
4 0100 0100
5 0101 0101
6 0110 0110
7 0111 0111
Chương 1
© DHBK 2005 70/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
Thập phân, Nhịphân, Hệ8, Hệ16
Cộng, trừ, nhân, chia
Các sốâm
Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi


xửlý
© DHBK 2005 71/Chapter1

Sốnguyên (integer)
• 8 bit
unsigned: 0 đến 255
signed : -128 đến 127 ( bù hai)
• 16 bit
unsigned: 0 đến 65535 (216-1)
signed : -32768 (215) đến 32767 (215 -1)
• 32 bit
unsigned: 0 đến 232 -1
signed : -231 đến 231-1
© DHBK 2005 72/Chapter1

Little endian và big endian


• Số1234 H được lưu trữthếnào trong bộnhớ8 bit?

FFFFH FFFFH

..... .....

0101H 12H 0101H 34H


0100H 34H 0100H 12H
..... .....
0000H 0000H

little endian big endian


Intel microprocessors Motorola microprocessors
Sốthực
© DHBK 2005 73/Chapter1

(real number, floating point number)


• Ví dụ: 1,234=1,234*100=0,1234*10 1=...
• 11,01 B= 1,101*21=0,1101*22=...

mantissa exponent

• Real number: (m, e) , e.g. (0.1101, 2)


Single precision: 32 bit
Double precision: 64 bit
Sốthực
© DHBK 2005 74/Chapter1

(real number, floating point number)


• IEEE-754 format cho single-precision

31 30 23 22 0

S biased exponent e fraction f of normalized mantissa

1 sign bit: 0 dương, 1 âm


8 bit biased exponent= exponent + 127
24 bit mantissa chuẩn hoá = 1 bit ẩn + 23 bit fraction

Mantissa chuẩn hoá: có giá trịgiữa 1 và 2 : 1.f

Ví dụ: biểu diễn 0.1011 dưới dạng IEEE-754

Sign bit s=0


chuẩn hoá mantissa: 0.1011=1.011*2-1
Biased exponent: -1 + 127=126=01111110
IEEE format: 0 01111110 0110000000000000000000
Sốthực
© DHBK 2005 75/Chapter1

(real number, floating point number)


• IEEE-754 format cho double-precision

63 62 52 51 0

S biased exponent e fraction f of normalized mantissa

1 sign bit: 0 dương, 1 âm


11 bit biased exponent= exponent + 1023
53 bit mantissa chuẩn hoá = 1 bit ẩn + 52 bit fraction

single precision: (-1)s x 2e-127 x (1.f)2

double precision: (-1)s x 2e-1023 x (1.f)2


Sốthực
© DHBK 2005 76/Chapter1

(real number, floating point number)

Single Precision Double Precision

Machine epsilon 2-23 or 1.192 x 10-7 2 -52 or 2.220 x 10-16

Smallest positive 2 -126 or 1.175 x 10 -38 2 -1022 or 2.225 x 10 -308

Largest positive (2- 2 -23) 2127 or 3.403 x 10 38 (2- 2 -52) 21023 or 1.798 x 10308

Decimal Precision 6 significant digits 15 significant digits


© DHBK 2005 77/Chapter1

BCD
• Binary Coded Decimal number
BCD chuẩn (BCD gói, packed BCD):
1 byte biểu diễn 2 sốBCD Decimal BCD
Ví dụ: 25: 0010 0101 digit
0 0000
1 0001
BCD không gói (unpacked BCD) :
2 0010
1 byte biểu diễn 1 sốBCD
3 0011
ví dụ: 25: 00000010 00000101 4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
ASCII
© DHBK 2005 78/Chapter1

• American Standard Code for Information


Interchange (7-bit code)
b3b2b1b0 000 001 010 011 100 101 110 111
0000 NUL DLE SP 0 @ P ‘ p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 “ 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f V
0111 BEL ETB ‘ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N ^ n ~
1111 SI US / ? O _ o DEL
Chương 1
© DHBK 2005 79/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
Hệvi xửlý
Chương 1
© DHBK 2005 80/Chapter1

Giới thiệu chung vềhệvi xửlý


• Lị
ch sửphát triển của các bộvi xửlý và máy tính
• Phân loại vi xửlý
• Các hệđếm dùng trong máy tính ( nhắc lại)
• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi
xửlý
Hệvi xửlý
© DHBK 2005 81/Chapter1

Hệvi xửlý

Bus dữliệu

Bus điều khiển

Phố
Phố ii ghép
ghép
Bộnhớ
Bộnhớ Vi
Vi xửlý
xửlý Thiết bị
vào/ra
vào/ra
Memory
Memory CPU
CPU vào/ra
(I/O)
(I/O)

Màn hình
Bus đị
a chỉ
Máy in
Bàn phím
DRAM Intel 80X86 ISA Con chuột
SRAM Motorola 680X EISA Ổ cứng
ROM PowerPC PCI Ổ mềm
EEPROM ... VESA CD-ROM
Flash SCSI DVD
USB ...
...
© DHBK 2005 82/Chapter1

Hệvi xửlý
• CPU
Đơn vịsốhọc và logic
Đọc mã lệnh
(Arithmetic Logical Unit)
Thực hiện các phép toán sốhọc
 Cộng, trừ, nhân chia
Giải mã lệnh
Thực hiện các phép toán logic
 And, or, compare..
Đơn vịđiều khiển (Control Unit) Thực hiện lệnh

Các thanh ghi (Registers)


Lưu trữdữliệu và trạng thái của quá trình thực hiện lệnh
© DHBK 2005 83/Chapter1

Hệvi xửlý
• Memory
ROM: không bịmất dữliệu, chứa dữliệu điều khiển hệthống
lúc khởi động
RAM: mất dữliệu khi mất nguồn, chứa chương trình và dữ
liệu trong quá trình hoạt động của hệthống

• Bus dữliệu
8, 16, 32, 64 bit tùy thuộc vào vi xửlý

• Bus đị
a chỉ
:
16, 20, 24, 32, 36 bit
sốô nhớcó thểđánh đị a chỉ
: 2N
Ví dụ: 8088/8086 có 20 đường đị a chỉ=> quản lý được
220 bytes=1Mbytes
© DHBK 2005 84/Chapter1

Hệvi xửlý
Nhà sản xuất Tên vi xửlý Bus Bus Khảnăng đị
a
dữliệu đị
a chỉ chỉ

Intel 8088 8 20 1M
8086 16 20 1M
80186 16 20 1M
80286 16 24 16 M
80386SX 16 24 16 M
80386DX 32 32 4G
80486DX 32 32 4G
Pentium 64 32 4G
Pentium Pro 64 36 64 G
Pentium I, II, III, IV 64 36 64 G
Motorola 68000 16 24 16 M
68010 16 24 16 M
68020 32 32 4G
68030 32 32 4G
68040 32 32 4G
68060 64 32 4G
PowerPC 64 32 4G
© DHBK 2005 1/Chapter2

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế
© DHBK 2005 2/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 3/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
Sơđồkhối
Các thanh ghi đa năng
Các thanh ghi đoạn
Các thanh ghi con trỏvà chỉsố
Thanh ghi cờ
Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 4/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
Sơđồkhối
Các thanh ghi đa năng
Các thanh ghi đoạn
Các thanh ghi con trỏvà chỉsố
Thanh ghi cờ
Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 5/Chapter2

Sơđồkhối 8088/8086

EU
bus đị a chỉ BIU
Các thanh AX 20 bit 
BX
ghi đa năng
CX
DX Bus trong của CPU
Các thanh ghi CS
SP 16 bit dữliệu
Các thanh ghi đoạn và con trỏ DS
BP 20 bit đị
a chỉ
SS
con trỏ SI lệ
nh ES
và chỉsố DI
IP

Bus dữliệ
u Logic
ALU 16 bit
điều khiể
n
Các thanh ghi tạ
m thời bus
Bus ngoài
Khối điều
khiển
ALU của EU
Hàng đợi lệ
nh
Thanh ghi cờ
© DHBK 2005 6/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
Sơđồkhối
Các thanh ghi đa năng
Các thanh ghi đoạn
Các thanh ghi con trỏvà chỉsố
Thanh ghi cờ
Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 7/Chapter2

Các thanh ghi đa năng của 8088/8086


8 bit cao 8 bit thấp

•8088/8086 đến 80286 : 16 bits


AX AH AL •80386 trởlên: 32 bits EAX,
BX BH BL EBX, ECX, EDX

CX CH CL
DX DH DL

• Thanh ghi chứa AX (accumulator): chứa kết quảcủa các phép tính.
Kết quả8 bit được chứa trong AL
• Thanh ghi cơsởBX (base): chứa đị a chỉcơsở, ví dụcủa bảng dùng
trong lệnh XLAT (Translate)
• Thanh ghi đếm CX (count): dùng đểchứa sốlần lặp trong các lệnh lặp
(Loop). CL được dùng đểchứa sốlần dị ch hoặc quay trong các lệnh
dịch và quay thanh ghi
• Thanh ghi dữliệu DX (data): cùng AX chứa dữliệu trong các phép
tính nhân chia số16 bit. DX còn được dùng đểchứa đị a chỉcổng
trong các lệnh vào ra dữliệu trực tiếp (IN/OUT)
© DHBK 2005 8/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
 Sơđồkhối
 Các thanh ghi đa năng
 Các thanh ghi đoạn
 Các thanh ghi con trỏvà chỉsố
 Thanh ghi cờ
 Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 9/Chapter2

Các thanh ghi đoạn


• Tổchức của bộnhớ1 Mbytes
Đoạn bộnhớ(segment) FFFFFH
216 bytes =64 KB
Đoạn 1: địa chỉđầu 00000 H
Đoạn 2: địa chỉđầu 00010 H
Đoạn cuối cùng: FFFF0 H
Ô nhớtrong đoạn:
địa chỉlệch: offset
Ô 1: offset: 0000
Ô cuối cùng: offset: FFFF
a chỉvật lý:
Đị 1FFFFH
Segment : offset Offset=F000
1F000H

10000H 1000
Đị
a chỉvật lý=Segment*16 + offset
Thanh ghi đoạn
Chếđộthực (real mode) 00000H
© DHBK 2005 10/Chapter2

Các thanh ghi đoạn


• Ví dụ: Đị
a chỉvật lý 12345H
Đị
a chỉđoạn Điạchỉlệch

1000 H 2345H

1200 H 0345H

1004 H ?

0300 H ?

• Ví dụ: Cho đị
a chỉđầu của đoạn: 49000 H, xác đị
nh đị
a chỉcuối
© DHBK 2005 11/Chapter2

Các thanh ghi đoạn


• Các thanh ghi đoạn: chứa đị
a chỉđoạn
FFFFF
.............
58FFF
Đoạn dữliệu phụ
extra segment
49000 4900 ES
43FFF
Đoạn ngăn xếp
Stack segment
34000 3400 SS
30000
2FFFF Đoạn mã
Code segment
20000 CS
2000
1FFFF Đoạn dữliệu
Data segment
10000 1000 DS

00000
© DHBK 2005 12/Chapter2

Các thanh ghi đoạn


• Các đoạn chồng nhau
FFFFF

s
t
a d
c a
k 0A480
t 0A47F
a c Stack
o 0A280
d 0A28 SS
0A27F
e Data
0A0F0 DS
0A0F
0A0EF
Code
090F0 090F CS

00000
© DHBK 2005 13/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
 Sơđồkhối
 Các thanh ghi đa năng
 Các thanh ghi đoạn
 Các thanh ghi con trỏvà chỉsố
 Thanh ghi cờ
 Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 14/Chapter2

Các thanh ghi con trỏvà chỉsố


• Chứa đị
a chỉlệch (offset)
 Con trỏlệnh IP (instruction pointer): chứa đị
a chỉlệnh tiếp
theo trong đoạn mã lệnh CS.
CS:IP
Con trỏcơsởBP (Base Pointer): chứa đị a chỉcủa dữliệu
trong đoạn ngăn xếp SS hoặc các đoạn khác
SS:BP
 Con trỏngăn xếp SP (Stack Pointer): chứa đị
a chỉhiện thời
của đỉnh ngăn xếp
SS:SP
Chỉsốnguồn SI (Source Index): chứa đị a chỉdữliệu nguồn
trong đoạn dữliệu DS trong các lệnh chuỗi
DS:SI
Chỉsốđích (Destination Index): chứa địa chỉdữliệu đích
trong đoạn dữliệu DS trong các lệnh chuỗi
DS:DI
SI và DI có thểđược sửdụng nhưthanh ghi đa năng
80386 trởlên 32 bit: EIP, EBP, ESP, EDI, ESI
© DHBK 2005 15/Chapter2

Các thanh ghi con trỏvà chỉsố


• Thanh ghi đoạn và thanh ghi lệch ngầm đị
nh

Segment Offset Chú thích

CS IP Đị
a chỉlệnh

SS SP hoặc BP Đị
a chỉngăn xếp

DS BX, DI, SI, số8 bit Đị


a chỉdữliệu
hoặc số16 bit
ES DI Địa chỉchuỗi
đích
© DHBK 2005 16/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
 Sơđồkhối
 Các thanh ghi đa năng
 Các thanh ghi đoạn
 Các thanh ghi con trỏvà chỉsố
 Thanh ghi cờ
 Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 17/Chapter2

Thanh ghi cờ(Flag Register)

15 14 2 1 0
O D I T S Z A P C

• 9 bit được sửdụng, 6 cờtrạng thái:


C hoăc CF (carry flag)): CF=1 khi có nhớhoặc mượn từMSB
P hoặc PF (parity flag): PF=1 (0) khi tổng sốbít 1 trong kết
quảlà chẵn (lẻ)
A hoặc AF (auxilary carry flag): cờnhớphụ, AF=1 khi có
nhớhoặc mượn từmột sốBCD thấp sang BCD cao
Z hoặc ZF (zero flag): ZF=1 khi kết quảbằng 0
S hoặc SF (Sign flag): SF=1 khi kết quảâm
O hoặc OF (Overflow flag): cờtràn OF=1 khi kết quảlà một
sốvượt ra ngoài giới hạn biểu diễn của nó trong khi thực
hiện phép toán cộng trừsốcó dấu
© DHBK 2005 18/Chapter2

Thanh ghi cờ(Flag Register)

15 14 2 1 0
O D I T S Z A P C

• 3 cờđiều khiển
T hoăc TF (trap flag)): cờbẫy, TF=1 khi CPU làm việc ởchế
độchạy từng lệnh
I hoặc IF (Interrupt enable flag): cờcho phép ngắt, IF=1 thì
CPU sẽcho phép các yêu cầu ngắt (ngắt che được) được
tác động (Các lệnh: STI, CLI)
D hoặc DF (direction flag): cờhướng, DF=1 khi CPU làm
việc với chuỗi ký tựtheo thứtựtừphải sang trái (lệnh STD,
CLD)
© DHBK 2005 19/Chapter2

Thanh ghi cờ(Flag Register)


• Ví dụ: 80h
+
80h

100h

SF=0 vì msb trong kết quả=0


PF=1 vì có 0 bít của tổng bằng 1
ZF=1 vì kết qủa thu được là 0
CF=1 vì có nhớtừbít msb trong phép cộng
OF=1 vì có tràn trong phép cộng 2 sốâm
© DHBK 2005 20/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
 Sơđồkhối
 Các thanh ghi đa năng
 Các thanh ghi đoạn
 Các thanh ghi con trỏvà chỉsố
 Thanh ghi cờ
 Hàng đợi lệnh
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 21/Chapter2

Hà ng đợi lệnh
• 4 bytes đối với 8088 và 6 bytes đối với 8086
• Xửlý pipeline

Không có
pipelining F1 D1 E1 F2 D2 E2 F3 D3 E3

F1 D1 E1
Có pipelining F2 D2 E2
F3 D3 E3
© DHBK 2005 22/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 23/Chapter2

Intel 8088

• 16-bit processor
• introduced in 1979
• 3 m, 5 to 8 MHz, 29
KTOR, 0.33 to 0.66
MIPS
© DHBK 2005 24/Chapter2

Intel 8088

•ChếđộMin và chếđộMax:

MN/MX = 1 chếđộMin
= 0 chếđộMax với bus
controller 8288
© DHBK 2005 25/Chapter2

Intel 8086
© DHBK 2005 26/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 27/Chapter2

Bản đồbộnhớcủa máy tính IBM PC

Vùng nhớ
mởrộng

FFFFF Vùng nhớ


hệthống
A0000 484 Kbytes 1 Mbytes
9FFFF bộnhớthực
Vùng nhớ
chương trình
640 Kbytes
00000
© DHBK 2005 28/Chapter2

Bản đồvùng nhớchương trình

9FFFF
MSDOS
9FFF0

Vùng dành cho các


chương trình ứng dụng

08E30
COMMAND.COM
08490
Device drivers (mouse.sys)
02530
MSDOS
01160
IO.SYS
00700
Vùng DOS
00500
Vùng BIOS
00400
00000 Các vector ngắt
© DHBK 2005 29/Chapter2

Bản đồvùng nhớhệthống

FFFFF
ROM BIOS
F0000
ROM BASIC
E0000

Vùng đểdành

C8000
Video BIOS ROM
C0000
Video RAM (text)
B0000
Video RAM (đồhoạ)
A0000
© DHBK 2005 30/Chapter2

Các cổng vào ra


• Đị
a chỉ
: 0000H –FFFFH, M/IO =0
FFFF

Vùng mởrộng

COM1
03F8
Điều khiển đĩ
a mềm
03F0
CGA adapter
03D0
LPT1
0378
Điều khiển ổcứng
0320
COM2
02F8
8255
0060
Đị
nh thời (8253)
0040
Điều khiển ngắt
0020
0000 Điều khiển DMA
© DHBK 2005 31/Chapter2

Trình tựkhởi động


• Khi bật nguồn hoặc nhấn Reset
CS=FFFFh và IP=0000 => đị a chỉFFFF0 chứa chỉthịchuyển
điều khiển đến điểm khới đầu của các chương trình BIOS
Các chương trình BIOS kiểm tra hệthống và bộnhớ
Các chương trình BIOS khởi tạo bảng vector ngắt và vùng
dữliệu BIOS
BIOS nạp chương trình khởi động (boot program) từđĩ a vào
bộnhớ
Chương trình khởi động nạp hệđiều hành từđĩ a vào bộnhớ
Hệđiều hành nạp các chương trình ứng dụng
© DHBK 2005 32/Chapter2

Vùng nhớd ành riêng của 8088/8086

FFFFF
Reset Bootstrap
FFFF0 program jump

003FF
Các vector ngắt
00000
© DHBK 2005 33/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
 Chếđộđị
a chỉthanh ghi
 Chếđộđị
a chỉtức thì
 Chếđộđị
a chỉtrực tiếp
 Chếđộđị
a chỉgián tiếp qua thanh ghi
 Chếđộđị
a chỉtương đối cơsở
 Chếđộđị
a chỉtương đối chỉsố
 Chếđộđị
a chỉtương đối chỉsốcơsở
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
Chếđộđị a chỉthanh ghi
© DHBK 2005 34/Chapter2

(Register Addressing Mode)


• Dùng các thanh ghi nhưlà các toán hạng
• Tốc độthực hiện lệnh cao

• Ví dụ:
MOV BX, DX ; Copy nội dung DX vào BX
MOV AL, BL ; Copy nội dung BL vào AL
MOV AL, BX ; không hợp lệvì các thanh ghi có kích thước
khác nhau
MOV ES, DS ; không hợp lệ (segment to segment)
MOV CS, AX ; không hợp lệvì CS không được dùng làm
thanh ghi đích

ADD AL, DL ; Cộng nội dung AL và DL rồi đưa vào AL


Chếđộđị a chỉtức thì
© DHBK 2005 35/Chapter2

(Immediate Addressing Mode)


• Toán hạng đích là thanh ghi hoặc ô nhớ
• Toán hạng nguồn là hằng số
• Dùng đểnạp hằng sốvào thanh thi (trừthanh ghi
đoạn và thanh cờ) hoặc vào ô nhớtrong đoạn dữliệu
DS
• Ví dụ:
MOV BL, 44 ; Copy sốthập phân 44 vào thanh ghi BL
MOV AX, 44H ; Copy 0044H vào thanh ghi AX
MOV AL, ‘A’ ; Copy mã ASCII của A vào thanh ghi AL
MOV DS, 0FF0H ; không hợp lệ
MOV AX, 0FF0H ;
MOV DS, AX ;

MOV [BX], 10 ; copy sốthập phân 10 vào ô nhớDS:BX


Chếđộđị a chỉtrực tiếp
© DHBK 2005 36/Chapter2

(Direct Addressing Mode)


• Một toán hạng là đị
a chỉô nhớchứa dữliệu
• Toán hạng kia chỉcó thểlà thanh ghi

• Ví dụ:
MOV AL, [1234H] ; Copy nội dung ô nhớcó đ
ịa chỉDS:1234 vào AL
MOV [ 4320H ], CX ; Copy nộ i dung củ
a CX vào 2 ô nhớliên tiế
p DS:
4320 và DS: 4321
Chếđộđị a chỉgián tiếp qua thanh ghi
© DHBK 2005 37/Chapter2

(Register indirect Addressing Mode)


• Một toán hạng là thanh ghi chứa đị
a chỉcủa 1 ô nhớ
dữliệu
• Toán hạng kia chỉcó thểlà thanh ghi

• Ví dụ:
MOV AL, [BX] ; Copy nộ i dung ô nhớcó đ ịa chỉDS:BX vào AL
MOV [ SI ], CL ; Copy nộ i dung của CL vào ô nhớcó đị
a chỉDS:SI
MOV [ DI ], AX ; copy nộ
i dung của AX vào 2 ô nhớliên tiế
p DS: DI và DS:
(DI +1)
Chếđộđị a chỉtương đối cơsở
© DHBK 2005 38/Chapter2

(Based relative Addressing Mode)


• Một toán hạng là thanh ghi cơsởBX, BP và các
hằng sốbiểu diễn giá trịdị
ch chuyển
• Toán hạng kia chỉcó thểlà thanh ghi

• Ví dụ:
MOV CX, [BX]+10 ; Copy nộ p có đ
i dung 2 ô nhớliên tiế ịa chỉ
DS:BX+10
và DS:BX+11 vào CX
MOV CX, [BX+10] ; Cách viết khác củ a lệ
nh trên
MOV AL, [BP]+5 ; copy nộ
i dung củ a ô nhớSS:BP+5 vào thanh ghi AL
Chếđộđị a chỉtương đối chỉsố
© DHBK 2005 39/Chapter2

(Indexed relative Addressing Mode)


• Một toán hạng là thanh ghi chỉsốSI, DI và các hằng
sốbiểu diễn giá trịdị
ch chuyển
• Toán hạng kia chỉcó thểlà thanh ghi

• Ví dụ:
MOV AX, [SI]+10 ; Copy nộ p có đ
i dung 2 ô nhớliên tiế ịa chỉDS:SI+10 và
DS:SI+11 vào AX
MOV AX, [SI+10] ; Cách viết khác của lệnh trên
MOV AL, [DI]+5 ; copy nộ
i dung củ a ô nhớDS:DI+5 vào thanh ghi AL
40/Chapter2

Chếđộđị
a chỉtương đối chỉsốcơsở
© DHBK 2005

( Based Indexed relative Addressing Mode)

• Ví dụ:
MOV AX, [BX] [SI]+8 ; Copy nộ p có đ
i dung 2 ô nhớliên tiế ịa chỉ
DS:BX+SI+8 và DS:BX+SI+9 vào AX
MOV AX, [BX+SI+8] ; Cách viế t khác của lệnh trên
MOV CL, [BP+DI+5] ; copy nộ i dung củ a ô nhớSS:BP+DI+5 vào thanh
ghi CL
© DHBK 2005 41/Chapter2

Tóm tắt các chếđộđị


a chỉ
Chếđộđị
a chỉ Toán hạng Thanh ghi đoạn ngầm đị
nh

Thanh ghi Thanh ghi

Tức thì Dữliệ


u

Trực tiế
p [offset] DS

Gián tiế
p qua thanh ghi [BX] DS
[SI] DS
[DI] DS

Tương đối cơsở [BX] + dị


ch chuyể
n DS
[BP] + dị
ch chuyể
n SS
Tương đối chỉsố [DI] + dị
ch chuyển DS
[SI] + dị
ch chuyể
n DS
Tương đối chỉsốcơsở [BX] + [DI]+ dị
ch chuyể
n DS
[BX] + [SI]+ dị
ch chuyể n DS
[BP] + [DI]+ dịch chuyển SS
[BP] + [SI]+ dị
ch chuyể n SS
Bỏchếđộngầm định thanh ghi đoạn
© DHBK 2005 42/Chapter2

(Segment override)

• Ví dụ:
MOV AL, [BX]; Copy nộ
i dung ô nhớcó địa chỉDS:BX vào AL
MOV AL, ES:[BX] ; Copy nội dung ô nhớcó địa chỉES:BX vào AL
© DHBK 2005 43/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 44/Chapter2

Cách mã hoá lệnh của 8086

Opcode MOD-REG-R/M Dịch chuyển Tức thì


1-2 byte 0-1 byte 0-2 byte 0-2 byte

• Một lệnh có độdài từ1 đến 6 byte

D W

W=0 dữliệu 1 byte


Opcode
W=1 dữliệu 2 byte

D=1 dữliệu đi đến thanh ghi cho bởi 3 bit REG


D=0 dữliệu đi từthanh ghi cho bởi 3 bit REG
© DHBK 2005 45/Chapter2

Cách mã hoá lệnh của 8086

MOD REG R/M


MOD <> 11

00 không có dịch chuyển Thanh ghi Mã Mã Chếđộđị


a chỉ
01 dịch chuyển 8 bit
10 dị
ch chuyển 16 bit W=1 W=0 000 DS:[BX+SI]
11 R/M là thanh ghi AX AL 000 001 DS:[BX+DI]
BX BL 011 010 SS:[BP+SI]
CX CL 001 011 SS:[BP+DI]
DX DL 010 100 DS:[SI]
SP AH 100 101 DS:[DI]
DI BH 111 110 SS:[BP]
BP CH 101 111 DS:[BX]
SI DH 110
© DHBK 2005 46/Chapter2

Cách mã hoá lệnh của 8086


• Ví dụ: chuyển lệnh MOV CL, [BX] sang mã máy
opcode MOV: 100010
Dữliệu là 1 byte: W=0
Chuyển tới thanh ghi: D=1
Không có dị ch chuyển: MOD=00
[BX] nên R/M=111
CL nên REG=001

1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1

MOV MOD CL [BX]


D W

Ví dụ2: chuyển lệnh MOV [SI+F3H], CL sang mã máy


© DHBK 2005 47/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
 Các lệnh di chuyển dữliệu
 Các lệnh sốhọc và logic
 Các lệnh điều khiển chương trình
• Cách đánh đị
a chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 48/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
 Các lệnh di chuyển dữliệu
 Các lệnh sốhọc và logic
 Các lệnh điều khiển chương trình
• Cách đánh đị
a chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 49/Chapter2

Cá c lệnh di chuyển dữliệu


• MOV, XCHG, POP, PUSH, POPF, PUSHF, IN, OUT
• Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW

• MOV
Dùng đểchuyển giữa các thanh ghi, giữa 1 thanh ghi và 1 ô
nhớhoặc chuyển 1 sốvào thanh ghi hoặc ô nhớ
Cú pháp: MOV Đích, nguồn
 Lệnh này không tác động đến cờ
Ví dụ:
MOV AX, BX
MOV AH, ‘A’
MOV AL, [1234H]
© DHBK 2005 50/Chapter2

Cá c lệnh di chuyển dữliệu


• Khảnăng kết hợp toán hạng của lệnh MOV

Đích Thanh ghi Thanh ghi ô nhớ Hằng số


đa năng đoạn
Nguồn
Thanh ghi YES YES YES NO
đa năng

Thanh ghi YES NO YES NO


đoạn

Ô nhớ YES YES NO NO

Hằng số YES NO YES NO


© DHBK 2005 51/Chapter2

Cá c lệnh di chuyển dữliệu


• Lệnh XCHG
 Dùng đểhoán chuyển nội dung giữa hai thanh ghi, giữa 1 thanh ghi
và 1 ô nhớ
 Cú pháp: XCHG Đích, nguồn
 Giới hạn: toán hạng không được là thanh ghi đoạn
 Lệnh này không tác động đến cờ
 Ví dụ:
 XCHG AX, BX
 XCHG AX, [BX]
© DHBK 2005 52/Chapter2

Cá c lệnh di chuyển dữliệu


• Lệnh PUSH
 Dùng đểcất 1 từtừ thanh ghi hoặc ô nhớvào đỉ
nh ngăn xếp
 Cú pháp: PUSH Nguồn
 Mô tả: SP=SP-2, Nguồn => {SP}
 Giới hạn: thanh ghi 16 bit hoặc là 1 từnhớ
 Lệnh này không tác động đến cờ
 Ví dụ:
 PUSH BX
 PUSH PTR[BX]

• Lệnh PUSHF
 Cất nội dung của thanh ghi cờvào ngăn xếp
© DHBK 2005 53/Chapter2

Cá c lệnh di chuyển dữliệu


• Ví dụvềlệnh PUSH PUSH AX PUSH BX
SP
1300A 1300A 1300A
13009 13009 12 13009 12
13008 13008 SP 13008
34 34
13007 13007 13007 78
13006 13006 13006 SP
56
13005 13005 13005
13004 13004 13004
13003 13003 13003
13002 13002 13002
13001 13001 13001
13000 13000 13000

SS 1300 SS 1300 SS 1300

SP 000A SP 0008 SP 0006

AX 1234 AX 1234 BX 7856


© DHBK 2005 54/Chapter2

Cá c lệnh di chuyển dữliệu


• Lệnh POP
 Dùng đểlấy lại 1 từvào thanh ghi hoặc ô nhớtừđỉ nh ngăn xếp
 Cú pháp: POP Đích
 Mô tả: {SP} => Đích, SP=SP+2
 Giới hạn: thanh ghi 16 bit (trừCS) hoặc là 1 từnhớ
 Lệnh này không tác động đến cờ
 Ví dụ:
 POP BX
 POP PTR[BX]
• Lệnh POPF
 Lấy 1 từtừđỉ
nh ngăn xếp rồi đưa vào thanh ghi cờ
© DHBK 2005 55/Chapter2

Cá c lệnh di chuyển dữliệu


• Ví dụlệnh POP POP DX

1300A 1300A
13009 12 13009 12
13008 34 13008 34 SP
13007 78 13007 78
13006 SP 13006
56 56
13005 13005
13004 13004
13003 13003
13002 13002
13001 13001
13000 13000

SS 1300 SS 1300

SP 0006 SP 0008

DX 3254 DX 7856
© DHBK 2005 56/Chapter2

Cá c lệnh di chuyển dữliệu


• Lệnh IN
 Dùng đểđọc 1 byte hoặc 2 byte dữliệu từcổng vào thanh ghi AL
hoặc AX
 Cú pháp: IN Acc, Port
 Lệnh này không tác động đến cờ
 Ví dụ:
 IN AX, 00H
 IN AL, F0H
 IN AX, DX
• Lệnh OUT
 Dùng đểđưa 1 byte hoặc 2 byte dữliệu từthanh ghi AL hoặc AX ra
cổng
 Cú pháp: OUT Port, Acc
 Lệnh này không tác động đến cờ
 Ví dụ:
 OUT 00H, AX
 OUT F0H, AL
 OUT DX, AX
© DHBK 2005 57/Chapter2

Cá c lệnh di chuyển dữliệu


• Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW
Dùng đểchuyển một phần tửcủa chuỗi này sang một chuỗi
khác
Cú pháp: MOVS chuỗi đích, chuỗi nguồn
MOVSB
MOVSW
Thực hiện:
DS:SI là địa chỉcủa phần tửtrong chuỗi nguồn
ES:DI là địa chỉcủa phần tửtrong chuỗi đích
Sau mỗi lần chuyển SI=SI +/- 1, DI=DI +/- 1 hoặc SI=SI +/- 2,
DI=DI +/- 2 tuỳthuộc vào cờhướng DF là 0/1
 Lệnh này không tác động đến cờ
Ví dụ:
MOVS byte1, byte2
© DHBK 2005 58/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
 Các lệnh di chuyển dữliệu
 Các lệnh sốhọc và logic
 Các lệnh điều khiển chương trình
• Cách đánh đị
a chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 59/Chapter2

Các lệnh sốhọc và logic


• ADD, ADC, SUB, MUL, IMUL, DIV, IDIV, INC, DEC
• AND, OR, NOT, NEG, XOR
• Lệnh quay và dịch: RCL, RCR, SAL, SAR, SHL, SHR
• Lệnh so sánh: CMP, CMPS

• Lệnh ADD
Lệnh cộng hai toán hạng
Cú pháp: ADD Đích, nguồn
Thực hiện: Đích=Đích + nguồn
Giới hạn: toán hạng không được là 2 ô nhớvà thanh ghi
đoạn
Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF
Ví dụ:
ADD AX, BX
ADD AX, 40H
© DHBK 2005 60/Chapter2

Các lệnh sốhọc và logic


• Lệnh ADC
 Lệnh cộng có nhớhai toán hạng
 Cú pháp: ADC Đích, nguồn
 Thực hiện: Đích=Đích + nguồn+CF
 Giới hạn: toán hạng không được là 2 ô nhớvà thanh ghi đoạn
 Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF
 Ví dụ:
 ADC AL, 30H
• Lệnh SUB
 Lệnh trừ
 Cú pháp: SUB Đích, nguồn
 Thực hiện: Đích=Đích - nguồn
 Giới hạn: toán hạng không được là 2 ô nhớvà thanh ghi đoạn
 Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF
 Ví dụ:
 SUB AL, 30H
© DHBK 2005 61/Chapter2

Các lệnh sốhọc và logic


• Lệnh MUL
Lệnh nhân sốkhông dấu
Cú pháp: MUL nguồn
Thực hiện:
 AX=AL* nguồn8bit
DXAX=AX*nguồn16bit
Lệnh này thay đổi cờ: CF, OF
Ví dụ:
MUL BL
• Lệnh IMUL
 nhân sốcó dấu
© DHBK 2005 62/Chapter2

Các lệnh sốhọc và logic


• Lệnh DIV
Lệnh chia 2 sốkhông dấu
Cú pháp: DIV nguồn
Thực hiện:
AL = thương (AX / nguồn8bit) ; AH=dư(AX / nguồn8bit)
AX = thương (DXAX / nguồn16bit) ; DX=dư(DXAX / nguồn16bit)
Lệnh này không thay đổi cờ
Ví dụ:
DIV BL
• Lệnh IDIV
 chia 2 sốcó dấu
© DHBK 2005 63/Chapter2

Các lệnh sốhọc và logic


• Lệnh INC
Lệnh cộng 1 vào toán hạng là thanh ghi hoặc ô nhớ
Cú pháp: INC Đích
Thực hiện: Đích=Đích + 1
Lệnh này thay đổi cờ: AF, OF, PF, SF, ZF
Ví dụ:
INC AX
• Lệnh DEC
Lệnh trừ1 từnội dung một thanh ghi hoặc ô nhớ
Cú pháp: DEC Đích
Thực hiện: Đích=Đích - 1
Lệnh này thay đổi cờ: AF, OF, PF, SF, ZF
Ví dụ:
DEC [BX]
© DHBK 2005 64/Chapter2

Các lệnh sốhọc và logic


• Lệnh AND
Lệnh AND logic 2 toán hạng
Cú pháp: AND Đích, nguồn
Thực hiện: Đích=Đích And nguồn
Giới hạn: toán hạng không được là 2 ô nhớhoặc thanh ghi
đoạn
Lệnh này thay đổi cờ: PF, SF, ZF và xoá cờCF, OF
Ví dụ:
AND BL, 0FH
• Lệnh XOR, OR: tương tựnhưlệnh AND

• Lệnh NOT: đảo từng bit của toán hạng


• Lệnh NEG: xác định sốbù 2 của toán hạng
© DHBK 2005 65/Chapter2

Các lệnh sốhọc và logic


• Lệnh CMP
 Lệnh so sánh 2 byte hoặc 2 từ
 Cú pháp: CMP Đích, nguồn
 Thực hiện:
 Đích = nguồn : CF=0 ZF=1
 Đích> nguồn : CF=0 ZF=0
 Đích < nguồn : CF=1 ZF=0
 Giới hạn: toán hạng phải cùng độdài và không được là 2 ô nhớ
• Lệnh CMPS
 Dùng đểso sánh từng phần tửcủa 2 chuỗi có các phần tửcùng
loại
 Cú pháp: CMPS chuỗi đích, chuỗi nguồn
CMPSB
CMPSW
 Thực hiện:
 DS:SI là đị
a chỉcủa phần tửtrong chuỗi nguồn
 ES:DI là đị
a chỉcủa phần tửtrong chuỗi đích
 Sau mỗi lần so sánh SI=SI +/- 1, DI=DI +/- 1 hoặc SI=SI +/- 2, DI=DI +/- 2
tuỳthuộc vào cờhướng DF là 0/1
 Cập nhật cờAF, CF, OF, PF, SF, ZF
© DHBK 2005 66/Chapter2

Các lệnh sốhọc và logic


• Lệnh RCL
Lệnh quay trái thông qua cờnhớ
Cú pháp: RCL Đích, CL (với sốlần quay lớn hơn 1)
RCLĐích, 1
RCL Đích, Sốlần quay (80286 trởlên)
Thực hiện: quay trái đích CL lần
Đích là thanh ghi (trừthanh ghi đoạn) hoặc ô nhớ
Lệnh này thay đổi cờ: CF, OF

CF MSB LSB

• Lệnh RCR
Lệnh quay phải thông qua cờnhớ
© DHBK 2005 67/Chapter2

Các lệnh sốhọc và logic


• Lệnh ROL
Lệnh quay trái
Cú pháp: ROL Đích, CL (với sốlần quay lớn hơn 1)
ROL Đích, 1
ROL Đích, Sốlần quay (80286 trởlên)
Thực hiện: quay trái đích CL lần
Đích là thanh ghi (trừthanh ghi đoạn) hoặc ô nhớ
Lệnh này thay đổi cờ: CF, OF

CF MSB LSB

• Lệnh ROR
Lệnh quay phải
© DHBK 2005 68/Chapter2

Các lệnh sốhọc và logic


• Lệnh SAL
Lệnh dị
ch trái sốhọc
Cú pháp: SAL Đích, CL (với sốlần dịch lớn hơn 1)
SAL Đích, 1
SAL Đích, sốlần dị ch (80286 trởlên)

Thực hiện: dị
ch trái đích CL bit tương đương với
Đích=Đích*2CL
Lệnh này thay đổi cờSF, ZF, PF
CF MSB LSB

• Lệnh SHL
Lệnh dị
ch trái logic tương tựnhưSAL
© DHBK 2005 69/Chapter2

Các lệnh sốhọc và logic


• Lệnh SAR
Lệnh dị
ch phải sốhọc
Cú pháp: SAR Đích, CL (với sốlần dị ch lớn hơn 1)
SAR Đích, 1
hoặc SAR Đích, sốlần dị ch (80286 trởlên)
Thực hiện: dị
ch phải đích CL bit
Lệnh này thay đổi cờSF, ZF, PF, CF mang giá trịcủa MSB

MSB LSB CF
© DHBK 2005 70/Chapter2

Các lệnh sốhọc và logic


• Lệnh SHR
Lệnh dị
ch phải logic
Cú pháp: SHR Đích, CL (với sốlần dị
ch lớn hơn 1)
SHR Đích, 1
hoặc SHR Đích, sốlần dị
ch (80286 trởlên)
Thực hiện: dị
ch phải đích CL bit
Lệnh này thay đổi cờSF, ZF, PF, CF mang giá trịcủa LSB

MSB LSB CF

Chú ý:
Trong các lệnh dị
ch và quay, toán hạng không được là thanh ghi đoạn
© DHBK 2005 71/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
 Các lệnh di chuyển dữliệu
 Các lệnh sốhọc và logic
 Các lệnh điều khiển chương trình
 Lệnh nhảy không điều kiện: JMP
 Lệnh nhảy có điều kiện JE, JG, JGE, JL, JLE...
 Lệnh lặp LOOP
 Lệnh gọi chương trình con CALL
 Lệnh gọi chương trình con phục vụngắt INT và IRET

• Cách đánh đị
a chỉởchếđộbảo vệởcác máy tính từ80286
© DHBK 2005 72/Chapter2

Lệnh nhảy không điều kiện JMP


• Dùng đểnhảy tới một đị a chỉtrong bộnhớ
• 3 loại: nhảy ngắn, gần và xa
Lệnh nhảy ngắn (short jump)
Độdài lệnh 2 bytes:
E B Độlệch

Phạm vi nhảy: -128 đến 127 bytes so với lệnh tiếp theo lệnh
JMP
Thực hiện: IP=IP + độlệch

Ví dụ:

XOR BX, BX
Nhan: MOV AX, 1
ADD AX, BX
JMP SHORT Nhan
© DHBK 2005 73/Chapter2

Lệnh nhảy không điều kiện JMP


Lệnh nhảy gần (near jump)
Phạm vi nhảy: ± 32 Kbytes so với lệnh tiếp theo lệnh JMP
Ví dụ:

XOR BX, BX XOR CX, CX XOR CX, CX


Nhan: MOV AX, 1 MOV AX, 1 MOV AX, 1
ADD AX, BX ADD AX, BX ADD AX, BX
JMP NEAR Nhan JMP NEAR PTR BX JMP WORD PTR [BX]

Thực hiện: IP=IP+ độlệch IP=BX IP=[BX+1] [BX]

E 9 Độlệ
chLo Độlệ
chHi
Nhảy gián tiếp
© DHBK 2005 74/Chapter2

Lệnh nhảy không điều kiện JMP


Lệnh nhảy xa (far jump)
Độdài lệnh 5 bytes đối với nhảy tới nhãn:

E A IP Lo IP Hi CS Lo CS Hi

Phạm vi nhảy: nhảy trong 1 đoạn mã hoặc nhảy sang đoạn mã


khác
Ví dụ:
EXTRN Nhan: FAR XOR CX, CX
Next: MOV AX, 1 MOV AX, 1
ADD AX, BX ADD AX, BX
JMP FAR PTR Next JMP DWORD PTR [BX]
........
JMP FAR Nhan
IP = [BX+1][BX]
Thực hiện: IP=IP của nhãn CS= [BX+3][BX+2]
CS=CS của nhãn
© DHBK 2005 75/Chapter2

Tóm tắt lệnh JMP

FFFFFH

Đoạn mã 2

Nhảy xa

+127 Đoạn mã 1
Nhảy ngắn
JMP Nhảy gần

-128

00000H
© DHBK 2005 76/Chapter2

Lệnh nhảy có điều kiện


• JE or JZ, JNE or JNZ, JG, JGE, JL, JLE (dùng cho
sốcó dấu) và JA, JB, JAE, JBE (dùng cho sốkhông
dấu) ...
• Nhảy được thực hiện phụthuộc vào các cờ
• Là các lệnh nhảy ngắn
• Ví dụ:

Nhan1: XOR BX, BX


Nhan2: MOV AX, 1
CMP AL, 10H
Thực hiện: IP=IP + độdị
ch
JNE Nhan1
JE Nhan2
© DHBK 2005 77/Chapter2

Lệnh lặp LOOP


• LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ
• Là lệnh phối hợp giữa DEC CX và JNZ

XOR AL, AL XOR AL, AL XOR AL, AL

MOV CX, 16 MOV CX, 16 MOV CX, 16

Lap: INC AL Lap: INC AL Lap: INC AL

LOOP Lap CMP AL, 10 CMP AL, 10


LOOPE Lap LOOPNE Lap

Lặp đến khí CX=0 Lặp đến khí CX=0 Lặp đến khí CX=0
hoặc AL<>10 hoặc AL=10
© DHBK 2005 78/Chapter2

Lệnh CALL
• Dùng đểgọi chương trình con
• Có 2 loại: CALL gần và CALL xa
CALL gần (near call): tương tựnhưnhảy gần
Gọi chương trình con ởtrong cùng một đoạn mã

Tong PROC NEAR Tong PROC NEAR CALL WORD PTR [BX]
ADD AX, BX
ADD AX, BX
ADD AX, CX
ADD AX, CX RET
Tong ENDP
RET
...
Tong ENDP MOV BX, OFFSET Tong
CALL BX
...
CALL Tong
Cất IP vào ngăn xế
p Cất IP vào ngăn xế
p Cất IP vào ngă n xế
p
IP=IP + dịch chuyển IP= BX IP= [BX+1] [BX]
RET: lấy IP từngăn xế
p RET: lấy IP từngăn xế
p RET: lấ y IP từngăn xế
p
© DHBK 2005 79/Chapter2

Lệnh CALL
CALL xa (far call): tương tựnhưnhảy xa
Gọi chương trình con ởngoài đoạn mã

Tong PROC FAR CALL DWORD PTR [BX]


ADD AX, BX
ADD AX, CX
RET
Tong ENDP
...
CALL Tong
Cất CS vào ngăn xế p Cất CS vào ngăn xế p
Cất IP vào ngăn xế p Cất IP vào ngăn xếp
IP=IP của Tong IP = [BX+1][BX]
CS =CS của Tong CS= [BX+3][BX+2]
RET: lấy IP từngăn xếp RET: lấy IP từngăn xếp
lấy CS từngăn xế p lấy CS từngăn xế p
© DHBK 2005 80/Chapter2

Lệnh ngắt INT và IRET


• INT gọi chương trình con phục vụngắt (CTCPVN)
• Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H
256 vector ngắt
1 vector 4 bytes, chứa IP và CS của CTCPVN
32 vector đầu dành riêng cho Intel
224 vector sau dành cho người dùng

• Cú pháp: INT Number


• Ví dụ: INT 21H gọi CTCPVN của DOS
© DHBK 2005 81/Chapter2

Lệnh ngắt INT và IRET


• Thực hiện INT:
Cất thanh ghi cờvào ngăn xếp
IF=0 (cấm các ngắt khác tác động), TF=0 (chạy suốt)
Cất CS vào ngăn xếp
Cất IP vào ngăn xếp
IP=[N*4], CS=[N*4+2]
• Gặp IRET:
Lấy IP từngăn xếp
Lấy CS từngăn xếp
Lấy thanh ghi cờtừngăn xếp
© DHBK 2005 82/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086


• Cấu trúc bên trong
• Sơđồchân
• Bản đồbộnhớcủa máy tính IBM-PC
• Các chếđộđị a chỉcủa 8086
• Cách mã hoá lệnh của 8086
• Mô tảtập lệnh của 8086
• Cách đánh địa chỉởchếđộbảo vệởcác máy tính từ
80286
© DHBK 2005 83/Chapter2

Đánh đị
a chỉbộnhớởchếđộbảo vệ
• Cho phép truy cập dữliệu và chương trình ởvùng
nhớtrên 1M
• Thanh ghi lệch chứa đị
a chỉlệch
• Thanh ghi đoạn chứa từchọn đoạn (segment
selector)
từchọn đoạn chọn 1 phần tửtrong 1 trong 2 bảng mô tả
đoạn (descriptor table), mồi bảng có kích thước 64 KB
Bảng mô tảđoạn toàn cục (Global DT): chứa thông tin vềcác
đoạn của bộnhớmà tất cảcác chương trình có thểtruy nhập
Bảng mô tảđoạn cục bộ(Local DT): chứa thông tin vềcác đoạn
của 1 chương trình
Mô tảđoạn chứa thông tin vềđị
a chỉbắt đầu của đoạn
© DHBK 2005 84/Chapter2

Đánh đị
a chỉbộnhớởchếđộbảo vệ

15 2 1 0

Index TI RPL

RPL: mức ưu tiên yêu cầu, 00 cao nhất, 11 thấp nhất


TI=0, sửdụng bảng toàn cục, TI=1 sửdụng bảng cục bộ
Index: 13 bit chỉsốđểchọn 1 trong 8K mô tảđoạn trong bảng mô tảđoạn

Limit
7 7
GDOA
00000000 00000000 6 Base(B31-B24)
V (L19-L16) 6
5 Access rights Base(B23-B16) 4 5 Access rights Base(B23-B16) 4
3 Base(B15-B0) 2 3 Base(B15-B0) 2
1 Limit(L15-L0) 0 1 Limit(L15-L0) 0

mô tảđoạn của 80286 mô tảđoạn từ80386

Base: xác đị nh địa chỉbắt đầu của đoạn


Limit: giới hạn kích thước tối đa của đoạn
© DHBK 2005 85/Chapter2

Đánh đị
a chỉbộnhớởchếđộbảo vệ
• 80286
 Base 24 bit: 000000H đến FFFFFFH (16 MB)
 Limit 16 bit: kích thước đoạn: từ1 đến 64 KB
 Địa chỉvật lý= Base + độlệch
 1 chương trình có thếsửdụng tối đa: 2*8K*64 K= 1GB bộ
nhớ=> bộnhớảo (virtual memory)
• 80386/486/Pentium
 Base 32 bit: 00000000H đến FFFFFFFFH (4 GB)
 Limit 20 bit:
 G=0: kích thước đoạn: từ1 đến 1MB
 G=1: kích thước đoạn từ4K đến 4 GB
 Địa chỉvật lý= Base + độlệch
 1 chương trình có thếsửdụng tối đa: 2*8K*4 GB= 64
Terabytes bộnhớ
© DHBK 2005 1/Chapter3

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế
© DHBK 2005 2/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 3/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
 Cú pháp của chương trình hợp ngữ
 Dữliệu cho chương trình
 Biến và hằng
 Khung của một chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 4/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
 Cú pháp của chương trình hợp ngữ
 Dữliệu cho chương trình
 Biến và hằng
 Khung của một chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 5/Chapter3

Cú pháp của chương trình h ợp ngữ


1. .Model Small
u kích thước bộnhớ
khai báo kiể
2. .Stack 100
khai báo đoạn ngăn xếp
3. .Data
4.
5.
Tbao DB ‘Chuoi da sap xep:’, 10, 13
MGB DB ‘a’, ‘Y’, ‘G’, ‘T’, ‘y’, ‘Z’, ‘U’, ‘B’, ‘D’, ‘E’, khai báo đoạn dữliệ
u
6. DB ‘$’
7. .Code

8. MAIN Proc
khai báo đoạn mã lệ
nh
9. MOV AX, @Data ;khoi dau DS
10.
11.
MOV DS, AX
MOV BX, 10 ;BX: so phan tu cua mang bắt đầu chương trình chính
12. LEA DX, MGB ;DX chi vao dau mang byte
13. DEC BX ;so vong so sanh phai lam
14. LAP: MOV SI, DX ; SI chi vao dau mang
15. MOV CX, BX ; CX so lan so cua vong so
16. MOV DI, SI ;gia su ptu dau la max

chú thích bắt đầu


17. MOV AL, [DI] ;AL chua phan tu max
18. TIMMAX:
19. INC SI ;chi vao phan tu ben canh
20. CMP [SI], AL ; phan tu moi > max? bằng dấu ;
21. JNG TIEP ;khong, tim max
22. MOV DI, SI ; dung, DI chi vao max
23. MOV AL, [DI] ;AL chua phan tu max
24. TIEP: LOOP TIMMAX ;tim max cua mot vong so
25. CALL DOICHO ;doi cho max voi so moi
26. DEC BX ;so vong so con lai
27. JNZ LAP ;lam tiep vong so moi
28. MOV AH, 9 ; hien thi chuoi da sap xep
29. MOV DX, Tbao
30. INT 21H
31. MOV AH, 4CH ;ve DOS
32. INT 21H
33. MAIN Endp
34.
35.
DOICHO Proc
PUSH AX
t thúc chương trình chính
kế
36. MOV AL, [SI]
37. XCHG AL, [DI]
38.
39.
MOV
POP
[SI], AL
AX bắt đầu chương trình con
40. RET
41.
42.
DOICHO Endp
END MAIN t thúc đoạn mã
kế
© DHBK 2005 6/Chapter3

Cú pháp của chương trình h ợp ngữ


• Tên Mã lệnh Các toán hạng ; chú giải
• Chương trình dị
ch không phân biệt chữhoa, chữ
thường
• Trường tên:
chứa các nhãn, tên biến, tên thủtục
độdài: 1 đến 31 ký tự
tên không được có dấu cách, không bắt đầu bằng số
được dùng các ký tựđặc biệt: ? . @ _ $ %
dấu . phải được đặt ởvịtrí đầu tiên nếu sửdụng
Nhãn kết thúc bằng dấu :

TWO_WORD
?1
two-word
.@?
1word
Let’s_go
© DHBK 2005 7/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
 Cú pháp của chương trình hợp ngữ
 Dữliệu cho chương trình
 Biến và hằng
 Khung của một chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 8/Chapter3

Dữliệu cho chương trình


• Dữliệu:
các sốhệsố2: 0011B
hệsố10: 1234
hệsố16: 1EF1H, 0ABBAH
Ký tự, chuỗi ký tự: ‘A’, ‘abcd’
© DHBK 2005 9/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
 Cú pháp của chương trình hợp ngữ
 Dữliệu cho chương trình
 Biến và hằng
 Khung của một chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 10/Chapter3

Biến và hằng
• DB (define byte): đị
nh nghĩa biến kiểu byte
• DW (define word): định nghĩa biến kiểu từ
• DD (define double word): định nghĩa biến kiểu từkép

• Biến byte:
 Tên DB gia_trị
_khởi đầu
Ví dụ:
MOV AL, B1
B1 DB 4
B1 DB ? LEA BX, B1
C1 DB ‘$’ MOV AL, [BX]
C1 DB 34
© DHBK 2005 11/Chapter3

Biến và hằng
• Biến từ:
 Tên DW gia_trị
_khởi đầu 1300A
13009
Ví dụ:
13008 9
W1 DW 4
13007 8
W2 DW ? 13006 7
• Biến mảng: 13005 6
13004 5
M1 DB 4, 5, 6, 7, 8, 9
13003 4 M1
13002
M2 DB 100 DUP(0) 13001
M3 DB 100 DUP(?) 13000

M4 DB 4, 3, 2, 2 DUP (1, 2 DUP(5), 6)

M4 DB 4, 3, 2, 1, 5, 5, 6, 1, 5, 5, 6
© DHBK 2005 12/Chapter3

Biến và hằng
• Biến mảng 2 chiều:
1300A
1 6 3
13009
4 2 5 13008 5
13007 2
13006 4
13005 3
M1 DB 1, 6, 3 13004 6
DB 4, 2, 5 13003 1 M1
13002
13001
13000
M2 DB 1, 4
DB 6, 2 MOV AL, M1 ; copy 1 vao AL
MOV AH, M1[2]
DB 3, 5 MOV BX, 1
MOV SI, 1
MOV CL, M1[BX+SI]
MOV AX, Word Ptr M1[BX+SI+2]
MOV DL, M1[BX][SI]
© DHBK 2005 13/Chapter3

Biến và hằng
• Biến kiểu xâu ký tự
STR1 DB ‘string’
STR2 DB 73h, 74h, 72h, 69h, 6Eh, 67h
STR3 DB 73h, 74h, ‘r’, ‘i’, 6Eh, 67h

• Hằng có tên
Có thểkhai báo hằng ởtrong chương trình
Thường được khai báo ởđoạn dữliệu
Ví dụ:
CR EQU 0Dh ;CR là carriage return
LF EQU 0Ah ; LF là line feed
CHAO EQU ‘Hello’

MSG DB CHAO, ‘$’


© DHBK 2005 14/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
 Cú pháp của chương trình hợp ngữ
 Dữliệu cho chương trình
 Biến và hằng
 Khung của một chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 15/Chapter3

Khung của chương trình hợp ngữ


• Khai báo quy mô sửdụng bộnhớ
 .MODEL Kiểu kích thuớc bộnhớ
 Ví dụ: .Model Small

Kiể
u Mô tả

Tiny (hẹ
p) mã lệ u gói gọn trong một đoạn
nh và dữliệ

Small (nhỏ) nh nằm trong 1 đoạn, dữliệ


mã lệ u 1 đoạn

Medium (tB) mã lệ u đoạn, dữliệ


nh nằm trong nhiề u 1 đoạn

Compact (gọn) nh nằm trong 1 đoạn, dữliệ


mã lệ u đoạn
u trong nhiể

Large (lớn) mã lệnh nằm trong nhiều đoạn, dữliệ u đoạn, không
u trong nhiề
có mảng nào lớn hơn 64 K
Huge (đồsộ) mã lệ
nh nằm trong nhiề u đoạn, dữliệ u đoạn, các
u trong nhiề
mảng có thểlớn hơn 64 K
© DHBK 2005 16/Chapter3

Khung của chương trình hợp ngữ


• Khai báo đoạn ngăn xếp
 .Stack kích thuớc (bytes)
 Ví dụ:
 .Stack 100 ; khai báo stack có kích thước 100 bytes
 Giá trịngầm đị
nh 1KB

• Khai báo đoạn dữliệu:


 .Data
 Khai báo các biến và hằng

• Khai báo đoạn mã


 .Code
© DHBK 2005 17/Chapter3

Khung của chương trình hợp ngữ

Stack

SS chương trình
chương trình CS
DS
100h ES 100h
PSP PSP

.COM . EXE
© DHBK 2005 18/Chapter3

Khung của chương trình hợp ngữ


• Khung của chương trình hợp ngữđểdị
ch ra file .EXE

.Model Small
.Stack 100
.Data
;các đị
nh nghĩ
a cho biế
n và hằng
.Code
MAIN Proc
;khới đầu cho DS
MOV AX, @data
MOV DS, AX
nh của chương trình
;các lệ
;trởvềDOS dùng hàm 4CH của INT 21H
MOV AH, 4CH
INT 21H
MAIN Endp
;các chương trình con nếu có
END MAIN
© DHBK 2005 19/Chapter3

Khung của chương trình hợp ngữ


• Chương trình Hello.EXE
.Model Small
.Stack 100
.Data
CRLF DB 13,10,’$’
MSG DB ‘Hello! $’
.Code
MAIN Proc
;khới đầu cho DS
MOV AX, @data
MOV DS, AX
;vềđầu dòng mới dùng hàm 9 của INT 21H
MOV AH,9
LEA DX, CRLF
INT 21H
;Hiển thịlời chào dùng hàm 9 của INT 21H
MOV AH,9
LEA DX, MSG
INT 21H
;vềđầu dòng mới dùng hàm 9 của INT 21H
MOV AH,9
LEA DX, CRLF
INT 21H
;trởvềDOS dùng hàm 4CH của INT 21H
MOV AH, 4CH
INT 21H
MAIN Endp
END MAIN
© DHBK 2005 20/Chapter3

Khung của chương trình hợp ngữ


• Khung của chương trình hợp ngữđểdị
ch ra file .COM

.Model Tiny
.Code
ORG 100h
START: JMP CONTINUE
;các định nghĩa cho biế
n và hằng
CONTINUE:
MAIN Proc
nh của chương trình
;các lệ
INT 20H ;trởvềDOS
MAIN Endp
;các chương trình con nếu có
END START
© DHBK 2005 21/Chapter3

Khung của chương trình hợp ngữ

FFFFH
SP
Chiề
u tiế
n của ngăn xế
p

Chiề
u tiế
n của mã và dữliệ
u

CONTINUE:

Dữliệ
u
0100H JMP CONTINUE IP
Đoạn đầu chương trình
0000H Program segment prefix
© DHBK 2005 22/Chapter3

Khung của chương trình hợp ngữ


• Chương trình Hello.COM
.Model Tiny
.Code
ORG 100H
START: JMP CONTINUE
CRLF DB 13,10,’$’
MSG DB ‘Hello! $’
CONTINUE:
MAIN Proc
;vềđầ u dòng mới dùng hàm 9 của INT 21H
MOV AH,9
LEA DX, CRLF
INT 21H
;Hiển thịlời chào dùng hàm 9 của INT 21H
MOV AH,9
LEA DX, MSG
INT 21H
;vềđầ u dòng mới dùng hàm 9 của INT 21H
MOV AH,9
LEA DX, CRLF
INT 21H
;trởvềDOS
INT 20H
MAIN Endp
END START
© DHBK 2005 23/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 24/Chapter3

Cách tạo một chương trình hợp ngữ


p văn bản của chương trình
Tạo ra tệ
*.asm

Dùng MASM đểdị ch ra mã máy


*.obj

Dùng LINK đểnối tệ


p . obj thành
*.exe

không
ch được ra .com?
Dị

Dùng exe2bin đểdịch *.exe thành


*.com

chạy chương trình


© DHBK 2005 25/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
 Cấu trúc lựa chọn
 Cấu trúc lặp
• Một sốchương trình cụthể
© DHBK 2005 26/Chapter3

Cấu trúc lựa chọn If-then


• If điều_kiện then công_việc
• Ví dụ: Gán cho BX giá trịtuyệt đối của AX

; If AX<0
CMP AX, 0 ; AX<0 ?
JNL End_if ; không, thoát ra
; then
NEG AX ; đúng, đảo dấu
End_if: MOV BX, AX ;gán
© DHBK 2005 27/Chapter3

Cấu trú c lựa chọn If-then-else


• If điều_kiện then công_việc1 else công_việc2
• Ví dụ: if AX<BX then CX=0 else CX=1

; if AX<BX
CMP AX, BX ; AX<BX ?
JL Then_ ; đúng, CX=0
;else
MOV CX, 1 ; sai, CX=1
JMP End_if
Then_: MOV CX, 0;
End_if:
© DHBK 2005 28/Chapter3

Cấu trúc lựa chọn case


• Case Biểu thức
Giá trị1: công việc 1
Giá trị2: công việc 2
...
Giá trịN: công việc N
END CASE
CMP AX, 0 ;
• Ví dụ: JL AM ; AX<0
JE Khong ; AX=0
Nếu AX<0 thì CX=-1 JG DUONG; AX>0
Nếu AX=0 thì CX=0 AM: MOV CX, -1
Nếu AX>0 thì CX=1 JMP End_case
Khong: MOV CX, 0
JMP End_case

DUONG: MOV CX, 1


End_case:
© DHBK 2005 29/Chapter3

Cấu trúc lặp FOR-DO


• For sốlần lặp Do công việc

khởi tạo bộđếm ví dụ: Hiển thịmột dòng ký tự$ trên màn hình

công việ
c
MOV CX, 80 ;sốlần lặp
MOV AH,2 ;hàm hiể n thị
giảm bộđếm đi 1 MOV DL,’$’ ;DL chứa ký tựcần hiể
n thị
HIEN: INT 21H ; Hiển thị
LOOP HIEN
End_for
S
bộđế
m=0?

Đ
© DHBK 2005 30/Chapter3

Cấu trúc lặp While-DO


• While điều kiện Do công việc

ví dụ: đếm sốký tựđọc được từbàn phím,


S khi gặp ký tựCR thì thôi
Điề
u kiệ
n

XOR CX, CX ;CX=0


Đ MOV AH,1 ;hàm đọc ký tựtừbàn phím
TIEP: INT 21H ; đọc một ký tựvào AL
CMP AL, 13 ; đọc CR?
công việ
c
JE End_while ; đúng, thoát
INC CX ; sai, thêm 1 ký tựvào tổng
JMP TIEP ; đọc tiế p
End_while:
© DHBK 2005 31/Chapter3

Cấu trúc lặp Repeat-until


• Repeat công việc until điều kiện

ví dụ: đọc từbàn phím cho tới khi gặp ký tựCR thì thôi

công việ
c

MOV AH,1 ;hàm đọc ký tựtừbàn phím


TIEP: INT 21H ; đọc một ký tựvào AL
CMP AL, 13 ; đọc CR?
Điều kiệ
n JNE TIEP ; chưa, đọc tiế
p
End_:
Đ
S
© DHBK 2005 32/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086


• Giới thiệu khung của chương trình hợp ngữ
• Cách tạo và chạy một chương trình hợp ngữtrên
máy IBM PC
• Các cấu trúc lập trình cơbản thực hiện bằng hợp
ngữ
• Một sốchương trình cụthể
© DHBK 2005 33/Chapter3

Xuất nhập dữliệu


• 2 cách:
 Dùng lệnh IN, OUT đểtrao đổi với các thiết bịngoại vi
 phức tạp vì phải biết đị
a chỉcổng ghép nối thiết bị
 Các hệthống khác nhau có đị a chỉkhác nhau
 Dùng các chương trình con phục vụngắt của DOS và BIOS
 đơn giản, dễsửdụng
 không phụthuộc vào hệthống
• Ngắt 21h của DOS:
 Hàm 1: đọc 1 ký tựtừbàn phím
 Vào: AH=1
 Ra: AL=mã ASCII của ký tự, AL=0 khi ký tựlà phím chức năng
 Hàm 2: hiện 1 ký tựlên màn hình
 Vào: AH=2
DL=mã ASCII của ký tựcần hiển thị
 Hàm 9: hiện chuỗi ký tựvới $ ởcuối lên màn hình
 Vào: AH=9
DX=đị
a chỉlệch của chuỗi ký tựcần hiẻn thị
 Hàm 4CH: kết thúc chương trình loại .exe
 Vào: AH=4CH
© DHBK 2005 34/Chapter3

Một sốchương trình cụthể


• Ví dụ1: Lập chương trình yêu cầu người sửdụng gõ vào một
chữcái thường và hiển thịdạng chữhoa và mã ASCII dưới
dạng nhịphân của chữcái đó lên màn hình
 Ví dụ:
 Hay nhap vao mot chu cai thuong: a
 Mã ASCII dưới dạng nhịphân của a la: 11000001
 Dang chu hoa cua a la: A
 Giải:
• Ví dụ2: Đọc từbàn phím một sốhệhai (dài nhất là 16 bit), kết
quảđọc được đểtại thanh ghi BX. Sau đó hiện nội dung thanh
ghi BX ra màn hình.
 Giải:
• Ví dụ3: Nhập một dãy số8 bit ởdạng thập phân, các sốcách
nhau bằng 1 dấu cách và kết thúc bằng phím Enter. Sắp xếp
dãy sốtheo thứtựtăng dần và in dãy sốđã sắp xếp ra màn
hình.
 Giải:
© DHBK 2005 35/Chapter3

Một sốchương trình cụthể


• Ví dụ4: Viết chương trình cho phép nhập vào kích
thước M*N và các phần tửcủa một mảng 2 chiều
gồm các sốthập phân 8 bit.
Tìm sốlớn nhất và nhỏnhất của mảng, in ra màn hình
Tính tổng các phần tửcủa mảng và in ra màn hình
Chuyển thành mảng N*M và in mảng mới ra màn hình

Hãy nhập giá trịM=


Hãy nhập giá trịN=
Nhập phần tử[1,1]=
Nhập phần tử[1,2]
......
Giải:
Sốlớn nhất là phần tử[3,4]=15
Sốnhỏnhất là phần tử[1,2]=2
Tổng=256
...
© DHBK 2005 1/Chapter4

Nội dung môn học


1. Giới thiệu chung về hệ vi xử lý
2. Bộ vi xử lý Intel 8088/8086
3. Lập trình hợp ngữ cho 8086
4. Tổ chức vào ra dữ liệu
5. Ngắt và xử lý ngắt
6. Truy cập bộ nhớ trực tiếp DMA
7. Các bộ vi xử lý trên thực tế
© DHBK 2005 2/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 3/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
‰ Các tín hiệu của 8086
‰ Phân kênh và việc đệm cho các bus
‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
‰ Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 4/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
; Các tín hiệu của 8086
‰ Phân kênh và việc đệm cho các bus
‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
‰ Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 5/Chapter4

Các chân tín hiệu của 8086

M/IO (S2) 16 đường


AD0-AD15 địa chỉ thấp/dữ liệu
DT/R(S1)
RD A16/S3
Tín hiệu điều
khiển hệ thống WR (LOCK)
A17/S4
DEN (S0) 4 đường
A18/S5 bus C/ địa chỉ cao
SS0
A19/S6
READY
BHE/S7
NMI
8086
INTR
Tín hiệu điều HOLD(RQ/GT0)
RESET
khiển CPU HLDA(RQ/GT1)
MN/MX Tín hiệu điều
INTA(QS1) khiển bus
TEST
CLK ALE(QS0)
đồng hồ Vcc
và nguồn
GND
GND
© DHBK 2005 6/Chapter4

Các chân tín hiệu của 8086


• AD0-AD15:
‰ ALE =1: 16 chân địa chỉ cho bộ nhớ hoặc I/O
‰ ALE=0: 16 đường dữ liệu
• A19/S6-A16/S3
‰ 4 bit địa chỉ cao
S4 S3
‰ 4 bit trạng thái:
Ö S6 luôn bằng 1 0 0 ES
Ö S5: trạng thái của IF
0 1 SS
Ö S4, S3: bit trạng thái về thanh ghi đoạn
đang truy cập 1 0 CS or No
1 1 DS
• READY: input pin,
‰ 0 => vi xử lý vào trạng thái đợi
‰ 1: has no effect
• INTR: interrupt request
‰ IF=1 và INTR=1=> cho phép ngắt
• TEST
‰ nếu =0, CPU ở trạng thái đợi và thực hiện lệnh NOP
‰ =1, lệnh WAIT đợi đến khi TEST=0
© DHBK 2005 7/Chapter4

Các chân tín hiệu của 8086


• NMI (Non-maskable interrupt)
‰ NMI=1 => thực hiện INT 2
• RESET
‰ 1: khởi động lại hệ thống và thực hiện lệnh tại ô nhớ FFFF0H
• MN/MX
‰ 1: chế độ min
‰ 0: chế độ max
• BHE/S7:
‰ 0: cho phép truy cập byte cao dữ liệu
‰ Trạng thái S7 luôn bằng 1
• RD
‰ 0: CPU đọc dữ liệu từ bộ nhớ hoặc thiết bị ngoại vi
• Các chân ở chế độ min
‰ M/IO
Ö 1: truy cập bộ nhớ
Ö 0: truy cập thiết bị ngoại vi I/O
‰ WR
Ö 0: dữ liệu hợp lệ tại bus dữ liệu để đưa ra bộ nhớ hoặc thiết bị ngoại vi
© DHBK 2005 8/Chapter4

Các chân tín hiệu của 8086


• Các chân ở chế độ min
‰ INTA: interrupt acknowledge
Ö 0: khi INTR=1 và IF=1
‰ ALE: address latch enable
‰ DT/R: data transmit/receive
Ö 1: bus dữ liệu đang truyền dữ liệu đi
Ö 0: bus dữ liệu đang nhận dữ liệu
‰ DEN: Data enable
Ö 0: kích hoạt đệm dữ liệu ngoài
‰ HOLD
Ö 1: CPU tạm dừng hoạt động để nhường quyền điều khiển cho DMA, các
bus được đặt ở trạng thái trở kháng cao
‰ HLDA (Hold Acknowledge)
Ö khi HOLD=1, HLDA=1
© DHBK 2005 9/Chapter4

Các chân tín hiệu của 8086


• Các chân ở chế độ Max
‰ S2, S1, S0
Ö ghép nối với điều khiển bus 8288

S2 S1 S0 chu kỳ điều khiển của bus


0 0 0 chấp nhận yêu cầu ngắt
0 0 1 đọc thiết bị ngoại vi
0 1 0 Ghi thiết bị ngoại vi
0 1 1 Dừng
1 0 0 đọc mã lệnh
1 0 1 đọc bộ nhớ
1 1 0 ghi bộ nhớ
1 1 1 bus rỗi
© DHBK 2005 10/Chapter4

Các chân tín hiệu của 8086


• Các chân ở chế độ Max
‰ RQ/GT0 và RQ/GT1: Request/Grant
Ö Tín hiệu yêu cầu dùng bus của các bộ vi xử lý khác/chấp nhận treo bus
của CPU
Ö GT0 có mức ưu tiên cao hơn GT1
‰ LOCK
Ö 0: cấm các bộ vi xử lý khác dùng bus
‰ QS0 và QS1:
Ö trạng thái của hàng đợi lệnh

QS1 QS0 Trạng thái hàng đợi lệnh


0 0 không hoạt động
0 1 đọc byte mã lệnh đầu tiên
1 0 hàng đợi rỗng
1 1 đọc byte tiếp theo
© DHBK 2005 11/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
‰ Các tín hiệu của 8086
; Phân kênh và việc đệm cho các bus
‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
‰ Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 12/Chapter4

Phân kênh và đệm cho các bus


• Vì sao phải phân kênh và khuyếch đại đệm:
‰ Các bus địa chỉ và dữ liệu dùng chung chân
‰ Nâng cao khả năng tải của bus
• Các vi mạch phân kênh và đệm:
‰ 74LS373: phân kênh
‰ 74LS245: đệm dữ liệu 2 chiều
‰ 74LS244: đệm 3 trạng thái theo 1 chiều
© DHBK 2005 13/Chapter4

Phân kênh và đệm cho các bus


M/IO M/I
RD ‘244 RD
WR WR
BHE/S7 BH
A19/S6 74LS373 A19

A16/S3 G A16
A15

A8
A7
8086
A0

ALE G G
74LS373 74LS373

AD15 D15

‘245
AD8 G DIR D8
AD7 D7
‘245

AD0 G DIR D0
DEN
DT/R
© DHBK 2005 14/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
‰ Các tín hiệu của 8086
‰ Phân kênh và việc đệm cho các bus
; Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
‰ Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
Mạch tạo xung nhịp 8284 và mạch
© DHBK 2005 15/Chapter4

điều khiển bus 8288


© DHBK 2005 16/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
‰ Các tín hiệu của 8086
‰ Phân kênh và việc đệm cho các bus
‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
; Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 17/Chapter4

Biểu đồ thời gian


© DHBK 2005 18/Chapter4

Biểu đồ thời gian


• Các ký hiệu trong biểu đồ thời gian:

Min max Units

CS 1 CS hold time 60 ns
1
2 CS to data 30 ns
Data valid

3 Data hold time 5 10 ns


2 3
© DHBK 2005 19/Chapter4

Biểu đồ thời gian


• Một chu kỳ ghi/đọc của CPU (chu kỳ bus): 4 chu kỳ
xung nhịp T
‰ 5 MHz: 4*200 ns=800 ns
‰ T1:
Ö CPU đưa ra địa chỉ của bộ nhớ hoặc I/O, DT/R, M/IO, ALE
‰ T2:
Ö CPU đưa ra RD hoặc WR, DEN và dữ liệu trên D0-D15 nếu là
lệnh ghi
Ö CPU đọc tín hiệu READY tại cuối chu kỳ của T2 để xử lý trong
chu kỳ tiếp theo khi nó làm việc với bộ nhớ hay I/O chậm
‰ T3:
Ö Nếu READY=0 => T3 trở thành chu kỳ đợi: Tw=n*T
Ö Tại cuối T3, CPU sẽ đọc dữ liệu nếu là lệnh đọc dữ liệu
‰ T4:
Ö Các tín hiệu trên bus được giải phóng
Ö WR chuyển từ 0 lên 1 kích hoạt quá trình ghi của bộ nhớ
© DHBK 2005 20/Chapter4

Biểu đồ thời gian


© DHBK 2005 21/Chapter4

Biểu đồ thời gian


© DHBK 2005 22/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
‰ Các loại bộ nhớ bán dẫn
‰ Giải mã địa chỉ cho bộ nhớ
‰ Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 23/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
; Các loại bộ nhớ bán dẫn
‰ Giải mã địa chỉ cho bộ nhớ
‰ Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 24/Chapter4

Các loại bộ nhớ bán dẫn


• Bộ nhớ không bị mất dữ liệu (non-volatile)
‰ ROM (Read Only Memory)
‰ PROM (Programmable ROM)
‰ EPROM (Electrically programmable ROM)
‰ Flash
‰ EEPROM (Electrically Erasable Programmable ROM)
‰ FeRAM (Ferroelectric Random Access Memory)
‰ MRAM (Magnetoelectronic Random Access Memory)
• Bộ nhớ bị mất dữ liệu (volatile)
‰ SRAM (Static RAM)
‰ SBSRAM (Synchronous Burst RAM)
‰ DRAM (Dynamic RAM)
‰ FPDRAM (Fast Page mode Dynamic RAM)
‰ EDO DRAM (Extended Data Out Dynamic RAM)
‰ SDRAM (Synchronous Dynamic RAM)
‰ DDR-SDRAM (Double Data Rate SDRAM)
‰ RDRAM (Rambus Dynamic RAM)
© DHBK 2005 25/Chapter4

Các loại bộ nhớ bán dẫn

A0 D0
Tín hiệu A1 D1
Dữ liệu
địa chỉ A2 D2

Am Dn

WR WE
CS OE

WR: write
WE: Write enable
chọn chip RD OE: Output enable
CS: Chip Select
RD: read
© DHBK 2005 26/Chapter4

EPROM

Isolator Floating
Gate
Gate
Source Drain

n+ n+
p
© DHBK 2005 27/Chapter4

EPROM

No charges on floating gate


Infinite number
of free electrons
Vss
Vss Vss

Many free Many free


electrons electrons
n+ n+
p

D=Vss
Hardly any
G=Vss free electrons:
no conducting path
between Source
and Drain
S=Vss
© DHBK 2005 28/Chapter4

EPROM

No charges on floating gate

Vcc
Vss Vss

n+ n+
p

D=Vss
Many free electrons
attracted by positive
G=Vcc gate voltage:
conducting channel
between Source
S=Vss and Drain
© DHBK 2005 29/Chapter4

EPROM

Many electrons trapped on floating gate

Vcc
Vss Vss

n+ n+
p

D=Vss No free electrons:


positive gate voltage
is shielded by
G=Vcc
negative floating
gate: no conducting
channel between
S=Vss Source and Drain
© DHBK 2005 30/Chapter4

EPROM: reading
Vcc Vcc Vcc Vcc

Address

2-to-4 Decoder

2
MSB

2
LSB
2-to-4 Mux

Data
© DHBK 2005 31/Chapter4
Read(0x6)
EPROM: reading
Vcc Vcc Vcc Vcc

0110

2-to-4 Decoder

01

10

2-to-4 Mux

0
© DHBK 2005 32/Chapter4
Read(0x8)
EPROM: reading
Vcc Vcc Vcc Vcc

1000

2-to-4 Decoder

10

00

2-to-4 Mux

1
© DHBK 2005 33/Chapter4

EPROM: erasing UV
light
Vcc Vcc Vcc Vcc

Address

2-to-4 Decoder

2
MSB

2
LSB
2-to-4 Mux

Data
© DHBK 2005 34/Chapter4
Write 1 at 0x2
EPROM: writing 12V

Vcc Vcc Vcc Vcc

Address
0010

2-to-4 Decoder

2
00
MSB

2
10
LSB
2-to-4 Mux

Data
© DHBK 2005 35/Chapter4

EPROM
• Ghi vào EPROM
‰ Dùng mạch nạp với điện áp 12 V
‰ 1 ms một bit
• Xoá EPROM
‰ 20 phút dưới tia tử ngoại
‰ Số lần ghi 3 lần
• Đọc EPROM
‰ 100 ns
• EPROM họ 27xxx
‰ 2708 (1K*8), 2716 (2K*8), 2732 (4K*8), 2764 (8K*8)
‰ 27128 (16K*8), 27256 (32K*8), 27512 (64K*8)
© DHBK 2005 36/Chapter4

EPROM
• Ví dụ: 2716 EPROM

U2

8
A0 O0
9 Address
7 10
6 A1 O1 11
5 A2 O2 13
4 A3 O3 14
3 A4 O4 15 CE
2 A5 O5 16
1 A6 O6 17
23 A7 O7
22 A8
A9
19
A10 Output
20
18 OE 120 100
CE
21
VPP
450

2716
© DHBK 2005 37/Chapter4

So sánh các loại ROM

Loại ROM Thời gian ghi Thời gian đọc số lần ghi Kích thước

ROM NA 35 ns 0 Mbits

PROM 1μs/bit 35 ns 1 128 Kbits


EPROM 1ms/bit 45 ns 3 16 Mbits
Flash 1μs/2 KB 35 ns 1 triệu GBits
EEPROM 10 ms/page 200 ns 10000 Mbit
FeRAM 60 ns 50 ns 1000 tỉ 32 Mbits
MRAM 5ns 5ns 1015 4 Mbits
© DHBK 2005 38/Chapter4

SRAM
One row of cells is read out at once

MUX selects one out of these cells


0110

1bit 1bit 1bit 1bit


2-to-4 Decoder cell cell cell cell

01
1bit 1bit 1bit 1bit
cell cell cell cell

1bit 1bit 1bit 1bit


4 cell cell cell cell

1bit 1bit 1bit 1bit


cell cell cell cell
10

2-to-4 Mux
© DHBK 2005 39/Chapter4

SRAM bit cell


Bit line Bit line inverse

Word

Vcc

Acts as
a resistor
© DHBK 2005 40/Chapter4

Storage SRAM bit cell


Bit line Bit line inverse

Word

Vcc

5V 0V

Current

Assumption
Stable situation; stores a ‘1’

Dissipates continuously
© DHBK 2005 41/Chapter4

Storage SRAM bit cell


Bit line Bit line inverse

Word

Vcc

0V 5V

Current

Assumption
Stable situation; stores a ‘0’

Dissipates continuously
© DHBK 2005 42/Chapter4

Reading of a ‘1’ SRAM bit cell


Bit line Bit line inverse

Word

Vcc

5V 0V

Current

1 0
© DHBK 2005 43/Chapter4

Reading of a ‘0’ SRAM bit cell


Bit line Bit line inverse

Word

Vcc

0V 5V

Current

0 1
© DHBK 2005 44/Chapter4

Writing of a ‘1’ SRAM bit cell


Vcc Vcc

Word
Word
Vcc
Bit line
Bit R
Bit line
line inverse
0V
5V 5V
0V

Current

Current
Current
W.D’ W.D
© DHBK 2005 45/Chapter4

SRAM
• Đặc điểm:
‰ 6 transistors 1 bit: đắt!
‰ Bị mất dữ liệu khi mất nguồn
‰ nhanh: thời gian đọc và ghi 5 ns
‰ Liên tục tiêu thụ năng lượng
‰ Kích thước: 16 Mbit
• ứng dụng:
‰ Bộ nhớ nhỏ và nhanh (cache)
‰ Không dùng cho các thiết bị chạy pin
• Ví dụ: 4016 (2K*8), 250 ns
A0-A10
D0-D7
OE
WE
CS
© DHBK 2005 46/Chapter4

Bit DRAM Word


line line

Address

1bit 1bit 1bit 1bit


2-to-4 Decoder cell cell cell cell
2
MSB
1bit 1bit 1bit 1bit
cell cell cell cell

1bit 1bit 1bit 1bit


4 cell cell cell cell

1bit 1bit 1bit 1bit


cell cell cell cell
2
LSB
2-to-4 Mux

Data
47/Chapter4

DRAM
© DHBK 2005

One row of cells is read out at once

MUX selects one out of these cells


0110

1bit 1bit 1bit 1bit


2-to-4 Decoder cell cell cell cell

01
1bit 1bit 1bit 1bit
cell cell cell cell

1bit 1bit 1bit 1bit


4 cell cell cell cell

1bit 1bit 1bit 1bit


cell cell cell cell
10

2-to-4 Mux

Data
DRAM bit cell
© DHBK 2005 48/Chapter4

Vcc/2
1 bit
Pre-
cell
charge
Word
line

Vcc/2 Vcc/2 Vcc/2 Bit line


Refresh

Sense
amplifier

MUX
DRAM bit cell
49/Chapter4
© DHBK 2005
Storage

Vcc/2
Pre-
charge
Word
line
5V 0V 5V

0V 5V 5V

Vcc/2 Vcc/2 Vcc/2


30 fF in
Refresh

.2 μm
Stores
.5 M e-

MUX
DRAM bit cell
50/Chapter4
© DHBK 2005
Read

Vcc/2
Pre-
charge
Word
line
2.55V
5V 2.45V
0V 2.55V
5V
2.55V
2.5V
5V

0V 5V 5V

Vcc/2 Vcc/2 Vcc/2


Refresh

MUX
© DHBK 2005 51/Chapter4

DRAM bit cell


• Chu kỳ đọc
‰ 1. Precharge
‰ 2. RAS (Row Address Select): đọc tất cả các bit trong hàng
được chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị
thay đổi
‰ 3. Khuếch đại tín hiệu trên các cột tương ứng
‰ 4.a CAS (Column Address Select): chọn 1 cột và đưa dữ liệu
ra ngoài
‰ 4.b Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được
chọn ở bước 2.
DRAM bit cell
52/Chapter4
© DHBK 2005
Write

Vcc/2
Pre-
charge
Word
line
2.55V
5V 2.45V
5V
0V 2.55V
5V

0V 5V 5V

Vcc/2 Vcc/2 Vcc/2


Refresh

MUX
© DHBK 2005 53/Chapter4

DRAM bit cell


• Chu kỳ ghi
‰ 1. Precharge
‰ 2. RAS (Row Address Select): đọc tất cả các bit trong hàng
được chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị
thay đổi
‰ 3. Khuếch đại tín hiệu trên các cột tương ứng
‰ 4.a CAS (Column Address Select): chọn 1 cột và đưa giá trị
cần ghi vào cột đó
‰ 4.b Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được
chọn ở bước 2 trừ bit vừa mới được ghi vào.
DRAM bit cell
54/Chapter4
© DHBK 2005
Refresh

Vcc/2
Pre-
charge
Word
line
2.51V
5V
3V 2.49V
0V
2V 2.51V
5V
3V

2.49V
2V
0V 2.51V
3V
5V 2.51V
3V
5V

Vcc/2 Vcc/2 Vcc/2


Refresh

MUX
© DHBK 2005 55/Chapter4

DRAM bit cell


• Chu kỳ làm tươi
‰ 1. Precharge
‰ 2. RAS (Row Address Select): đọc tất cả các bit trong hàng
được chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị
thay đổi
‰ 3. Khuếch đại tín hiệu trên các cột tương ứng
‰ 4. Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được
chọn ở bước 2.
© DHBK 2005 56/Chapter4

DRAM
• Đặc điểm:
‰ 1 transistor 1 bit: rẻ, tuy nhiên việc điều khiển quá trình
làm tươi làm tăng giá thành của DRAM
‰ Chỉ tiêu thụ năng lượng trong quá trình làm tươi và truy
nhập
‰ Tương đối nhanh: thời gian đọc và ghi 50 ns
‰ Mỗi một hàng phải được làm tươi sau 4 ms
Ö Nếu có 1024 hàng, chu kỳ làm tươi sẽ là 4 μs
‰ Kích thước: 4 Gbits
• Được dùng làm bộ nhớ chính trong các hệ vi xử lý
• Ví dụ: TMS 4464 (64K*4)

A0-A7
D0-D3 CAS: cho phép chốt địa chỉ cột
OE WE
RAS: cho phép chốt địa chỉ hàng

CAS RAS
© DHBK 2005 57/Chapter4

DRAM
• Đặc điểm:
‰ 1 transistor 1 bit: rẻ, tuy nhiên việc điều khiển quá trình
làm tươi làm tăng giá thành của DRAM
‰ Chỉ tiêu thụ năng lượng trong quá trình làm tươi và truy
nhập
‰ Tương đối nhanh: thời gian đọc và ghi 50 ns
‰ Mỗi một hàng phải được làm tươi sau 4 ms
Ö Nếu có 1024 hàng, chu kỳ làm tươi sẽ là 4 μs
‰ Kích thước: 4 Gbits
• Được dùng làm bộ nhớ chính trong các hệ vi xử lý
• Ví dụ: TMS 4464 (64K*4)

A0-A7
D0-D3 CAS: cho phép chốt địa chỉ cột
OE WE
RAS: cho phép chốt địa chỉ hàng

CAS RAS
© DHBK 2005 58/Chapter4

DRAM
• Examples of DRAM:
‰ SIMM (Single Inline Memory Module): 72 pins
‰ DIMM (Dual Inline Memory Module): 168 pins

72-Pin SIMM
© DHBK 2005 59/Chapter4

SRAM - DRAM

Cost
SRAM

DRAM

Refresh
controller
Size
© DHBK 2005 60/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
‰ Các loại bộ nhớ bán dẫn
; Giải mã địa chỉ cho bộ nhớ
; Dùng cổng NAND
; Dùng bộ giải mã 74LS138, 74LS139
; Dùng PROM
; Dùng PAL (Programmable Array Logic)
‰ Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
Giải mã địa chỉ bộ nhớ
© DHBK 2005 61/Chapter4

dùng cổng NAND


• Ví dụ: Ghép EPROM 2716 (2K * 8) với 8088
• Phân tích:
‰ 2716: 11 đường địa chỉ A10-A0
‰ 8088: 20 đường địa chỉ A20-A0
‰ Chọn vùng nhớ 2K trong 1M?
Ö EPROM: 00000H-003FFH: không được phép
Ö chọn: FF800H-FFFFFH: chứa đoạn khởi động FFFF0H-FFFFFH

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• FF800: 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Giải mã địa chỉ bộ nhớ
© DHBK 2005 62/Chapter4

dùng cổng NAND


A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0
• FF800: 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

A19
A18 8088 A
A17 A0-A10 8088 D
Bus
A16 D0-D7 Bus
A15
A14
CS OE
A13
A12
A11
RD
IO/M
Giải mã địa chỉ bộ nhớ
© DHBK 2005 63/Chapter4

dùng bộ giải mã
• Ví dụ: Dùng EPROM 2764 (8K*8) để ghép thành bộ nhớ 64 K cho 8088
bắt đầu từ địa chỉ F0000H
• Phân tích:
‰ Địa chỉ bắt đầu F0000H => địa chỉ kết thúc: FFFFFH
‰ Cần ghép 8 EPROM 2764 vì 64=8*8K
A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• F0000: 1 1 1 1 0000 0000 0000 0000 IC 1


• F1FFF: 1 1 1 1 0001 1111 1111 1111

• F2000: 1 1 1 1 0010 0000 0000 0000


IC 2
• F3FFF: 1 1 1 1 0011 1111 1111 1111

• F4000: 1 1 1 1 0100 0000 0000 0000 IC 3


• F5FFF: 1 1 1 1 0101 1111 1111 1111
...
...
• FE000: 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 IC 8
Giải mã địa chỉ bộ nhớ
© DHBK 2005 64/Chapter4

dùng bộ giải mã
• Dùng
U1 bộ giải mã 3-8 74LS138
1 15 C B A G2B G2A G1 y0 y1 y2 y3 y4 y5 y6 y7
A Y0
2 14 x x x 1 x x 1 1 1 1 1 1 1 1
3 B Y1 13
C Y2 x x x x 1 x 1 1 1 1 1 1 1 1
12
6 Y3 11 x x x x x 0 1 1 1 1 1 1 1 1
4 G1 Y4 10 0 0 0 0 0 1 0 1 1 1 1 1 1 1
5 G2A Y5 9
G2B Y6 0 0 1 0 0 1 1 0 1 1 1 1 1 1
7
Y7 0 1 0 0 0 1 1 1 0 1 1 1 1 1
0 1 1 0 0 1 1 1 1 0 1 1 1 1
74LS138 1 0 0 0 0 1 1 1 1 1 0 1 1 1
1 0 1 0 0 1 1 1 1 1 1 0 1 1
1 1 0 0 0 1 1 1 1 1 1 1 0 1
1 1 1 0 0 1 1 1 1 1 1 1 1 0
Giải mã địa chỉ bộ nhớ
© DHBK 2005 65/Chapter4

dùng bộ giải mã
• Dùng bộ giải mã 3-8 74LS138

A0-A12 A0-A12
A0-A10
D0-D7 D0-D7
A0-A10
2764
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
2764
A0-A10
OE D0-D7
A13 1 15 2764
A0-A10
CS OE D0-D7
2 A Y0 14 A0-A10
A14 B Y1 2764
CS OE D0-D7
A0-A10
3 13 2764
CS OE D0-D7
A15 C Y2 12 2764
CS OE D0-D7
Y3
A16
6
G1 Y4
11 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9 CS
G2B Y6 7
A17 CS
Y7
A18
A19 74LS138
Giải mã địa chỉ bộ nhớ
© DHBK 2005 66/Chapter4

dùng bộ giải mã
• Dùng bộ giải mã kép 2-4 74LS139

1A 1Y0
1B 1Y1
1Y2
1G 1Y3

2A 2Y0
2B 2Y1
2Y2
2G 2Y3

• Ví dụ: Dùng EPROM 27128 (16K*8) để ghép thành bộ


nhớ 64 K cho 8088 bắt đầu từ địa chỉ F0000H
Giải mã địa chỉ bộ nhớ
© DHBK 2005 67/Chapter4

dùng PROM
• Dùng PROM TPB28L42 (512*8)

A0-A12 A0-A12
A0-A10
D0-D7 D0-D7
A0-A10
2764
D0-D7
A0-A10
RD 2764
OE D0-D7
2764
A0-A10
OE D0-D7
A13 A0 O0 2764
A0-A10
CS OE D0-D7
A14 A1 O1 A0-A10
2764
CS OE D0-D7
A15 A2 O2 A0-A10
2764
CS OE D0-D7
A16 A3 O3 2764
CS OE D0-D7
A17 A4 TPB28L42
O4 CS OE 2764
A18 A5
O5 CS OE
A19 A6
O6 CS
A7
CS
A8 O7
G

IO/M
Giải mã địa chỉ bộ nhớ
© DHBK 2005 68/Chapter4

dùng PAL
© DHBK 2005 69/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
‰ Các loại bộ nhớ bán dẫn
‰ Giải mã địa chỉ cho bộ nhớ
; Ghép nối 8088 với bộ nhớ
; Ghép nối 8088 với ROM
; Ghép nối 8088 với SRAM
; Ghép nối 8088 với DRAM
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 70/Chapter4

Ghép nối 8088 với bộ nhớ


• Nguyên tắc:
‰ Ghép trực tiếp:
Ö Thời gian truy cập bộ nhớ của CPU > thời gian truy cập của bộ
nhớ + thời gian giải mã địa chỉ
‰ Ghép có chèn thêm thời gian đợi của CPU
Ö Thời gian truy cập bộ nhớ của CPU < thời gian truy cập của bộ
nhớ + thời gian giải mã địa chỉ

8088 hoạt động ở 5 MHz có thời gian truy cập bộ nhớ


420 ns
© DHBK 2005 71/Chapter4

Ghép nối 8088 với ROM


• Ví dụ: ghép nối 8088 với EPROM 2732-450 ns

A0-A11 A0-A11
A0-A10
D0-D7 D0-D7
A0-A10
2732
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
2764
A0-A10
OE D0-D7
A12 1 15 F8000-F8FFF 2764
A0-A10
CS OE D0-D7
2 A Y0 14 A0-A10
A13 B Y1
F9000-F9FFF 2764
CS OE D0-D7
A0-A10
3 13 2764
CS OE D0-D7
A14 C Y2 12 2764
CS OE D0-D7
Y3
A15
6
G1 Y4
11 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9 CS
A16 G2B Y6 7 FF000-FFFFF CS
Y7
A17
A18 Bộ tạo Tw
74LS138
A19
Tới chân RDY1 của 8284
© DHBK 2005 72/Chapter4

Ghép nối 8088 với SRAM


• Ví dụ: ghép nối 8088 với SRAM 62256 (32K*8) để
được bộ nhớ 256 KB, bắt đầu từ địa chỉ 00000H

A0-A14 A0-A14
A0-A10
D0-D7 D0-D7
A0-A10
62256
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
WR 2764
A0-A10
OE D0-D7
WE
A15 1 15 00000-07FFF 2764
A0-A10
CS OE D0-D7
2 A Y0 14 A0-A10
A16 B Y1
08000-0FFFF 2764
CS OE D0-D7
A0-A10
3 13 10000-17FFF 2764
CS OE D0-D7
A17 C Y2 12 2764
CS OE D0-D7
Y3
A18 6
G1 Y4
11 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9 CS
G2B Y6 7 38000-3FFFF CS
Y7
A19
74LS138
© DHBK 2005 73/Chapter4

Ghép nối 8088 với DRAM


• Cần có DRAM controller:
‰ Dồn kênh 2 loại tín hiệu địa chỉ cho mỗi mạch nhớ và cung
cấp xung cho phép chốt địa chỉ RAS và CAS
‰ Cung cấp tín hiệu việc ghi đọc bộ nhớ
‰ Làm tươi bộ nhớ trong thời gian thích hợp
‰ Đảm bảo không có xung đột trong hoạt động ghi đọc với
công việc làm tươi
© DHBK 2005 74/Chapter4

Ghép nối 8088 với DRAM


• Ví dụ: ghép 8088 với TMS 4464 (64K*4) DRAM để
được bộ nhớ 128 KB, bắt đầu tại địa chỉ 00000H

A0-A7
RA0-RA7
MA0-MA7 A0-A7

A8-A15 CA0-CA7 2x4464


RAS0 RAS
ALE ALE
CAS CAS
A16 REN1
RD ACR TMS 4500A
WR ACW
A0-A7
RDY RDY
RAS1
2x4464
CLK CLK RAS
A17
A18 CAS
A19 CS
IO/M
© DHBK 2005 75/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
© DHBK 2005 76/Chapter4

Ghép nối 8086 với bộ nhớ


FFFFF FFFFE
FFFFD
8088 8086
FFFFC
FFFFB FFFFA
8 bit 16 bit
IO/M M/IO
BHE

00005 00004
00003 00002
BHE A0 Chức năng
00001 00000
Bank cao Bank thấp
(bank lẻ) (Bank chẵn)
0 0 chọn cả 2 bank

0 1 chọn bank cao

1 0 chọn bank thấp

1 1 không chọn bank nào


© DHBK 2005 77/Chapter4

Ghép nối 8086 với bộ nhớ


• Ví dụ: Ghép EPROM 2716 (2K * 8) với 8086 để được
vùng bộ nhớ FF000H-FFFFFH
‰ Cần 2 IC vì 4KB=2*2KB

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• FF000: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Bank thấp
• FFFFE: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

• FF001: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1
Bank cao
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
© DHBK 2005 78/Chapter4

Ghép nối 8086 với bộ nhớ


A19
A18
A17 A1-A11 A0-A10
D0-D7 D0-D7
A16
A15 2716
A14
CS OE
A13
A12
M/IO RD
A0
A19
A18
A17 A1-A11 A0-A10
D0-D7 D8-D15
A16
A15 2716
A14
CS OE
A13
A12
M/IO RD
BHE
© DHBK 2005 79/Chapter4

Ghép nối 8086 với bộ nhớ


BHE
HRD
RD A1-A11 A0-A10
D0-D7 D0-D7
A0 LRD 2716

CS OE

LRD
A19
A18
A17 A1-A11 A0-A10
D0-D7 D8-D15
A16
A15 2716
A14
CS OE
A13
A12
M/IO HRD
© DHBK 2005 80/Chapter4

Ghép nối 8086 với bộ nhớ


• Ví dụ: ghép nối 8086 với SRAM 62256 (32K*8) để
được bộ nhớ 256 KB, bắt đầu từ địa chỉ 00000H

BHE
HWR
WR

A0 LWR
© DHBK 2005 81/Chapter4

Ghép nối 8086 với bộ nhớ


• Ví dụ: thiết kế hệ thống nhớ cho 8086 với 64 KB
EPROM và 128 KB SRAM sử dụng SRAM 62256
(32K*8) và EPROM 27128 (16K*8)
© DHBK 2005 82/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 83/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
Các kiểu giao tiếp giữa vi xử lý và
© DHBK 2005 84/Chapter4

thiết bị ngoại vi

Memory bus
CPU Memory

Bus
Adapter
I/O Bus

I/O I/O I/O


Controller Controller Controller

I/O I/O I/O


Device Device Device
Các kiểu giao tiếp giữa vi xử lý và
© DHBK 2005 85/Chapter4

thiết bị ngoại vi
• Giao tiếp kiểu thăm dò, móc nối (handshaking)
1. CPU kiểm tra trạng thái của thiết bị ngoại vi
2. Nếu thiết bị ngoại vi sẵn sàng trao đối dữ liệu việc trao đối sẽ được
thực hiện bởi tín hiệu móc nối
3. Nếu thiết bị ngoại vi chưa sẵn sàng, CPU sẽ thực hiện công việc
khác và quay lại bước 1
• Giao tiếp bằng ngắt (Interrupt)
1. Thiết bị ngoại vi muốn trao đổi dữ liệu với CPU, nó sẽ gửi tín hiệu
yêu cầu ngắt tới chân INTR của CPU
2. CPU chấp nhận yêu cầu ngắt bằng cách gửi tín hiệu INTA tới thiết
bị ngoại vi
3. CPU thực hiện chương trình con phục vụ ngắt
• Giao tiếp bằng truy cập bộ nhớ trực tiếp (DMA)
1. Thiết bị ngoại vi muốn truy cập trực tiếp bộ nhớ không thông qua
CPU, nó đưa tín hiệu yêu cầu tới chân HOLD của CPU thông qua
khối điều khiển DMA
2. CPU chấp nhận và gửi tín hiệu HLDA tới khối điều khiển DMA và
treo các bus
3. Khối điều khiển DMA sẽ điều khiển việc trao đổi dữ liệu giữa thiết
bị ngoại vi và bộ nhớ
© DHBK 2005 86/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
; Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 87/Chapter4

Các kiểu ghép nối vào ra


• Thiết bị vào ra có không gian địa chỉ cách biệt:
FFFF Địa chỉ: 0000H-FFFFH
M/IO=0
Vùng mở rộng

03FF Vào ra dữ liệu bằng lệnh IN, OUT


COM1
03F8
03F0
Điều khiển đĩa mềm Ví dụ:
CGA adapter IN AX, 00H
03D0
LPT1 IN AL, F0H
0378
Điều khiển ổ cứng IN AX, DX
0320
COM2
02F8
8255 OUT 00H, AX
0060
Định thời (8253)
OUT F0H, AL
0040 OUT DX, AX
Điều khiển ngắt
0020
0000 Điều khiển DMA
© DHBK 2005 88/Chapter4

Các kiểu ghép nối vào ra


• Thiết bị vào ra có không gian địa chỉ cách biệt:
© DHBK 2005 89/Chapter4

Các kiểu ghép nối vào ra


• Thiết bị vào/ra có cùng không gian địa chỉ với bộ nhớ
FFFFF

M/IO=1

Vào ra dữ liệu bằng bất kỳ lệnh


di chuyển dữ liệu nào giữa
I/O CPU và bộ nhớ

Ví dụ:
MOV AX, [0FF3H]

00000

Memory + I/O
© DHBK 2005 90/Chapter4

Các kiểu ghép nối vào ra


• Ví dụ cổng vào đơn giản:
VCC

8
7
6
5
4
3
2
1
10K

10
11
12
13
14
15
16
9

U1

2 18
4 A1 Y1 16
6 A2 Y2 14
8 A3
A4
Y3
Y4
12 Tới bus dữ liệu
11 9
13 A5
A6
Y5
Y6
7 của CPU
15 5
17 A7 Y7 3
A8 Y8
1
19 1OE
2OE

74ALS244
SEL

Từ giải mã địa chỉ cổng


© DHBK 2005 91/Chapter4

Các kiểu ghép nối vào ra


• Ví dụ cổng ra đơn giản:
VCC

330

U2

3 2
4 D0 Q0 5
7 D1 Q1 6
Từ bus dữ liệu 8 D2
D3
Q2
Q3
9
13 12
của CPU 14 D4 Q4 15
17 D5 Q5 16
18 D6 Q6 19
D7 Q7
11
CLK
1
OE

SEL 74ALS374

Từ giải mã địa chỉ cổng


© DHBK 2005 92/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
; Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 93/Chapter4

Giải mã địa chỉ cho các thiết bị vào/ra


• 8 bit địa chỉ hay 16 bit?
‰ Tổng số thiết bị < 256: 8 bit A0-A7: 00H-FFH
‰ Tổng số thiết bị >256: 16 bit A0-A15: 0000H-FFFFH
• 8 bit dữ liệu hay 16 bit?
‰ Nếu cổng là 8 bit: chọn 1 trong 2 bank
‰ Nếu cổng là 16 bit: chọn cả 2 bank

BHE A0
FFFF FFFE
FFFD FFFC
FFFB FFFA

D8-D15 D0-D7

0005 0004
0003 0002
0001 0000
Bank cao Bank thấp
(bank lẻ) (Bank chẵn)
© DHBK 2005 94/Chapter4

Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho thiết bị ra 8 bit với địa chỉ
07H
‰ 07H= 0000 0111

A0 A0
A1 D0-D7 D8-D15
A1
A2 D0-D7 A2 D0-D7
A3 A3
A4 A4
CS WE CS WE
A5 A5
A6 A6
A7 A7
WR WR
IO/M M/IO
BHE
8088 8086
© DHBK 2005 95/Chapter4

Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho thiết bị ra 16 bit với địa chỉ
cổng 64H và 65H
‰ 64H= 0110 0100
‰ 65H= 0110 0101
D8-D15 D8-D15

CS WE
A1
A2
A3 WR
A4
A5
A6 D7-D0 D0-D7
A7
M/IO CS WE
© DHBK 2005 96/Chapter4

Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho các cổng vào ra 8 bit ở
bank thấp với các địa chỉ 10H, 12H, 14H, 16H, 18H,
1AH, 1CH, 1EH
‰ 10H=0001 0000
‰ 12H=0001 0010
‰ ....
‰ 1EH=0001 1110 U1

A1 1 15 10H
2 A Y0 14
A2 3 B Y1 13
12H
14H
A3 C Y2 12 16H
6 Y3 11
A0
18H
4 G1 Y4 10 1AH
M/IO 5 G2A Y5 9 1CH
A4 G2B Y6 7 1EH
A5 Y7
A6
A7 74LS138
© DHBK 2005 97/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
; Mạch ghép nối vào ra song song lập trình được 8255A
; Cấu trúc của 8255A
; Các chế độ làm việc của 8255A
; Lập trình cho 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 98/Chapter4

Cấu trúc của 8255A


• Giao tiếp các thiết bị tương thích TTL với vi xử lý
• Thường được dùng để giao tiếp bàn phím và máy in
trong các may tính PC (dưới dạng là một khối trong
chíp tích hợp)
• Cần chèn trạng thái đợi khi làm việc với vi xử lý >8
Mhz
• Có 24 đường vào ra và có 3 chế độ làm việc
• Trong các máy PC, địa chỉ cổng của 8255 là 60H-
63H
© DHBK 2005 99/Chapter4

Cấu trúc của 8255A


© DHBK 2005 100/Chapter4

Cấu trúc của 8255A


© DHBK 2005 101/Chapter4

Cấu trúc của 8255A

RD
WR
© DHBK 2005 102/Chapter4

Các chế độ làm việc của 8255A


© DHBK 2005 103/Chapter4

Các chế độ làm việc của 8255A


• Chế độ 0: Chế độ vào ra đơn giản: các cổng có thể
làm việc như là cổng vào có đệm hoặc cổng ra có
chốt đệm.
• Chế độ 1: Chế độ này cho phép cổng A và B làm việc
như các thiết bị vào hoặc ra có tín hiệu móc nối
(handshaking) do các bit tương ứng của cổng C
trong cùng nhóm đảm nhiệm
• Chế độ 2: chế độ này cho phép cổng A làm việc 2
chiều với các tín hiệu móc nối do cổng PCH đảm
nhiệm. Cổng B có thể làm việc ở chế độ 1 hoặc 0
© DHBK 2005 104/Chapter4

Chế độ 0

RD
WR
© DHBK 2005 ; Lập trình cho 8255 105/Chapter4

Chế độ 0
MOV AL, 10000000B ; Port A, Port B mode 0, output
MOV DX, 703H
OUT DX, AL
; Thủ tục hiển thị LED từ dữ liệu chứa trong bộ nhớ

• Giả thiết địaPUSHF


chỉ của các cổng; cất của 8255
vào ngăn xếp là 0700H-
DISP PROC NEAR
các thanh ghi

0703H
PUSH AX
PUSH BX
PUSH DX
PUSH SI
; Thiết lập các thanh ghi để hiển thị
MOV BX, 8 ;số LED
MOV AH, 7FH ;chọn LED đầu tiên 0111 1111
MOV SI, OFFSET MEM-1 ; địa chỉ chứa dữ liệu
MOV DX,701H ; địa chỉ cổng B
;Hiển thị 8 số
DISP1: MOV AL, AH ;chọn 1 số
OUT DX, AL
DEC DX ; địa chỉ cổng A
MOV AL, [BX+SI] ; dữ liệu của 7 đoạn led
OUT DX, AL
CALL Delay ; trễ 1 ms
ROR AH, 1 ;số tiếp theo
INC DX ; địa chỉ cổng B
DEC BX ;giảm chỉ số
JNZ DISP1 ; lặp lại 8 lần
;khôi phục lại các thanh ghi
POP SI
POP DX
POP BX
POP AX
POPF
RET
DISP ENDP
© DHBK 2005 106/Chapter4

Chế độ 0
© DHBK 2005 107/Chapter4

Chế độ 0
© DHBK 2005ROWS EQU 4 ; 4 hàng 108/Chapter4

Chế độ 0
COLS EQU 4 ; 4 cột
PORTA EQU 50H
PORTB EQU 51H
KEY PROC NEAR USES CX
CALL SCAN ;test all keys SCAN PROC NEAR USES BX
JNZ KEY ; if key closed MOV CL, ROWS ;form row mask
CALL DELAY ; đợi 10 ms MOV BH, OFFH
CALL SCAN SHL BH, CL
JNZ KEY MOV CX, COLS ;load column count
KEY1: MOV BL, OFEH ;get selection mode
CALL SCAN SCAN1:
JZ KEY1 ; if no key closed MOV AL, BL ;select column
CALL DELAY OUT PORTB, AL
CALL SCAN ROL BL, 1
JZ KEY1 IN AL, PORTA; read rows
PUSH AX ;cất mã hàng OR AL,BH
MOV AL, COLS ;cal starting row key CMP AL, 0FFH ;test for a key
SUB AL, CL JNZ SCAN2
MOV CH, ROWS LOOP SCAN1
MUL CH
MOV CL, AL SCAN2:
DEC CL RET
POP AX SCAN ENDP
KEY2:
ROR AL,1 ;find row position DELAY PROC NEAR USES CX
INC CL MOV CX, 5000 ;10ms (8MHZ)
JC KEY2 DELAY1:
MOV AL,CL ;move code to AL LOOP DELAY1
RET RET
KEY ENDP DELAY ENDP
© DHBK 2005 109/Chapter4

Chế độ 1
• Port A và B làm việc ở chế độ cổng vào có chốt:
‰ dữ liệu sẽ được giữ tại cổng A, B cho đến khi CPU sẵn sàng
‰ cổng C làm cổng điều khiển và cấp tín hiệu móc nối
© DHBK 2005 110/Chapter4

Chế độ 1
© DHBK 2005 111/Chapter4

Chế độ 1

PA0-PA7 ASCII D0-D7

STB
PC4 DAV

82C55 Keyboard

Bit5 EQU 20H


PortC EQU 22H
PortA EQU 20H

Read PROC NEAR

IN AL, PortC ; read PortC


Test AL, Bit5 ; test IBF
JZ READ ; if IBF=0
IN AL, PortA ; read data
RET
Read Endp
© DHBK 2005 112/Chapter4

Chế độ 1
• Port A và B làm việc ở chế độ cổng ra có chốt:
‰ tương tự như cổng ra ở chế độ 0
‰ cổng C làm cổng điều khiển và cấp tín hiệu móc nối

1
© DHBK 2005 113/Chapter4

Chế độ 1
© DHBK 2005 114/Chapter4

Chế độ 1

PB0-PB7 ASCII D0-D7

ACK
PC2 ACK

PC4 DS

82C55 Printer

DS: data strobe


© DHBK 2005 115/Chapter4

Chế độ 1

BIT1 EQU 2
PORTC EQU 62H
PORTB EQU 61H
CMD EQU 63H

PRINT PROC NEAR


;check printer ready
IN AL,PORTC ;get OBF
TEST AL, BIT1 ;test OBF
JZ PRINT ;if OBF=0

;send character to printer


MOV AL, AH ;get data
OUT PORTB, AL ;print data
;send data strobe to printer

MOV AL, 8 ;clear DS


OUT CMD,AL
MOV AL, 9 ;set DS
OUT CMD, AL
RET
PRINT ENDP
© DHBK 2005 116/Chapter4

Chế độ 2
• Chỉ cho phép đối với cổng A
• Cổng A là cổng 2 chiều, dùng để giao tiếp giữa 2
máy tính hoặc dùng trong chuẩn giao tiếp IEEE-488
GPIB...
© DHBK 2005 117/Chapter4

Chế độ 2
© DHBK 2005 118/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
; Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 119/Chapter4

Mạch điều khiển 8279


• Điều khiển bàn phím và màn hiển thị 8279:
‰ quét và mã hoá cho bàn phím tới 64 phím
Ö bộ đệm FIFO có thể chứa 8 ký tự
‰ Điều khiển màn hiển thị tới 16 số
Ö 16*8 RAM để chứa thông tin về 16 số hiển thị
• Các tín hiệu chính:
‰ A0: chọn giữa chế độ dữ liệu hoặc điều khiển
‰ BD: xoá trắng màn hiển thị
‰ CLK: tín hiệu xung nhịp vào
‰ CN/ST (control/Strobe): cổng vào nối với
phím điều khiển của bàn phím
‰ CS : chip select
‰ DB7-DB0: bus dữ liệu 2 chiều
‰ IRQ: =1 khi có phím bấm
‰ OUTA3-OUTA0: dữ liệu tới màn hiển thị (bit cao)
‰ OUTB3-OUTB0: dữ liệu tới màn hiển thị (bit thấp)
‰ RD: cho phép đọc dữ liệu từ thanh ghi điều khiển hoặc trạng thái
‰ RL7-RL0: xác định phím được nhấn
‰ SHIFT: nối với phím shift của bàn phím
‰ SL3-SL0: tín hiệu quét màn hình và màn hiển thị
‰ WR: viết dữ liệu vào thanh ghi điều khiển hoặc thanh ghi dữ liệu
© DHBK 2005 120/Chapter4

Ghép nối 8279 với 8088


© DHBK 2005 121/Chapter4

Ghép nối 8279 với bàn phím


© DHBK 2005 122/Chapter4

Ghép nối 8279 với màn hiển thị


© DHBK 2005 123/Chapter4

Lập trình cho 8279


• Từ điều khiển: D7D6D5D4D3D2D1D0
© DHBK 2005 124/Chapter4

Lập trình cho 8279


© DHBK 2005 125/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
; Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 126/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 127/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 128/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 129/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 130/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 131/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 132/Chapter4

Bộ định thời lập trình được 8254


© DHBK 2005 133/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
; Giao tiếp truyền thông lập trình được 16550
‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
Giao tiếp truyền thông lập trình được
© DHBK 2005 134/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 135/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 136/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 137/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 138/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 139/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 140/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 141/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 142/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 143/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 144/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 145/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 146/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 147/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 148/Chapter4

16550
Giao tiếp truyền thông lập trình được
© DHBK 2005 149/Chapter4

16550
© DHBK 2005 150/Chapter4

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284,
8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
‰ Các kiểu ghép nối vào/ra
‰ Giải mã địa chỉ cho các thiết bị vào/ra
‰ Mạch ghép nối vào ra song song lập trình được 8255A
‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279
‰ Bộ định thời lập trình được 8254
‰ Giao tiếp truyền thông lập trình được 16550
; Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
© DHBK 2005 151/Chapter4

Bộ biến đổi số tương tự DAC


© DHBK 2005 152/Chapter4

Bộ biến đổi số tương tự DAC


© DHBK 2005 153/Chapter4

Bộ biến đổi tương tự số ADC


© DHBK 2005 154/Chapter4

Bộ biến đổi tương tự số ADC


© DHBK 2005 155/Chapter4

Bộ biến đổi tương tự số ADC


© DHBK 2005 1/Chapter5

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế
© DHBK 2005 2/Chapter5

Chương 5: Ngắt và xửlý ngắt


• Giới thiệu vềngắt
• Đáp ứng của CPU khi có yêu cầu ngắt
• Các thủtục ngắt của người sửdụng
• Xửlý ưu tiên ngắt
• Mạch điều khiển ngắt ưu tiên 8259A
• Ngắt trong máy tính IBM PC
© DHBK 2005 3/Chapter5

Giới thiệu vềngắt

• 2 loai ngắt:
Ngắt cứng: tín hiệu yêu cầu ngắt từ
 NMI (ngắt không che được)
 Lỗi chẵn lẻvà các lỗi hệthống nghiêm trọng khác (ví dụ: mất nguồn)
và INTR (ngắt che được)
Ngắt mềm: CPU thực hiện các lệnh ngắt INT N, 0=< N <=255
© DHBK 2005 4/Chapter5

Giới thiệu vềngắt


© DHBK 2005 5/Chapter5

Giới thiệu vềngắt


© DHBK 2005 6/Chapter5

Đáp ứng của CPU khi có yêu cầu ngắt


• Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H
256 vector ngắt
1 vector 4 bytes, chứa IP và CS của CTCPVN
32 vector đầu dành riêng cho Intel
224 vector sau dành cho người dùng
© DHBK 2005 7/Chapter5

Đáp ứng của CPU khi có yêu cầu ngắt

Chương trình chính CTCPVN

lệnh cất các


CPU: thanh ghi
•Cất thanh ghi cờF
•Xoá IF và TF
•Cất CS và IP
•lấy đị
a chỉCTCPVN

CPU:
•Lấy lại IP và CS lệnh lấy các
•Lấy lại thanh ghi cờF thanh ghi
IRET
© DHBK 2005 8/Chapter5

Các thủtục ngắt của người sửdụng


• Thiết lập vector ngắt:
Cất vector ngắt hiện tại:
Dùng hàm 35H của ngắt 21H của DOS
 Vào: AH=35h, AL= sốhiệu ngắt
 Ra: ES:BX = đị
a chỉđoạn : đị
a chỉoffset của CTCPVN
Cất ES và BX vào thanh ghi hoặc ô nhớ
Đưa vector của thủtục ngắt của người sửdụng vào bảng
vector ngắt:
Dùng hàm 25H của ngắt 21H
 Vào: AH=25H, AL= sốhiệu ngắt, DS:DX= đị
a chỉđoạn: đị
a chỉoffset
cảu CTCPVN của người sửdụng
Khôi phục lại vector cũtrước khi kết thúc CTCPVN của
người sửdụng
© DHBK 2005 9/Chapter5

Các thủtục ngắt của người sửdụng


.Model Small
.Stack 100
.Data
OLD_IP DW ?
OLD_CS DW ?
.Code
Main Proc
;Lấy vector cũcủa ngắt 40H
MOV AH, 35H
MOV AL, 40H
INT 21H
MOV OLD_IP, BX
MOV OLD_CS, ES
;Thiết lậ
p vector ngắt 40H mới
MOV DX, offset New40
MOV AX, CS
PUSH DS
MOV DS, AX
MOV AH, 25H
INT 21H
POP DS
Main Endp
New40 Proc
;các lệ
nh của CTCPVN
New40 Endp
End Main
© DHBK 2005 10/Chapter5

Xửlý ưu tiên ngắt


• Ngắt có mức ưu tiên cao nhất sẽđược phục vụtrước
• Các mức ưu tiên:
Ngắt nội bộ: INT 0, INT 1
Ngắt không che được: NMI
Ngắt che được INTR
Ngắt mềm INT N
• CPU sẽxửlý thếnào nếu CPU đang thực hiện phép
chia và sốchia bằng 0 đồng thời có yêu cầu ngắt từ
chân INTR?
© DHBK 2005 11/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 12/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 13/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 14/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 15/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 16/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 17/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 18/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 19/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 20/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 21/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 22/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 23/Chapter5

Mạch điều khiển ngắt 8259A


© DHBK 2005 24/Chapter5

Các ngắt trong máy tính IBM/PC


Cascaded i8259As

INTR

INT
D0
IRQ0 IR0
D1
IRQ1 IR1
D2
IRQ2 IR2
D3
IRQ3 IR3
IRQ4 IR4
8259A D4
D5
IRQ5 IR5 Master
D6
IRQ6 IR6
D7
IRQ7 IR7
INTA
INTA
Hi SP/EN
CAS1
CAS0 CAS2

INT
D0
IRQ8 IR0 D1
IRQ9 IR1 D2
IRQ10 IR2 D3
IRQ11 IR3
IRQ12 IR4
8259A D4
D5
IRQ13 IR5 Slave D6
IRQ14 IR6 D7
IRQ15 IR7
INTA
Lo SP/EN
© DHBK 2005 25/Chapter5

Các ngắt trong máy tính IBM/PC

Priority Use of PC/AT Interrupt


Highest IRQ0 Timer 0
IRQ1 Keyboard
IRQ2 From slave 8259
IRQ8 Real time clock
IRQ9 *
IRQ10
IRQ11
IRQ12
IRQ13 C0-processor
IRQ14 Hard disk controller
IRQ15

IRQ3 COM2 port


IRQ4 COM1 port
IRQ5 LPT2
IRQ6 Floppydisk controller
Lowest IRQ7 LPT1
* IRQ9 interrupt is redirected to IRQ2 vector
© DHBK 2005
Các ngắt trong máy tính IBM/PC 26/Chapter5

PC/AT VECTOR TABLE

77h IRQ15 Reserved


76h IRQ14 Fixed Disk Controller
75h IRQ13 80x87
74h IRQ12 Reserved
73h IRQ11...Reserved
72h IRQ10 ..Reserved
71h IRQ9 Directed to IRQ2
70h IRQ8 CMOS RTC

67h EMM
66h
User Interrupts
60h

4Ah

ROM BIOS and VIDEO


40h
3Fh

MSDOS SWI (30 -3F reserved)


20h
1Fh

ROM BIOS SWI

10h
0Fh IRQ 7 LPT1
0Eh IRQ6 Floppy Disk
0Dh IRQ5 LPT2
0Ch IRQ4 COM1 Port
0Bh IRQ3 COM2 Port
00028 0Ah IRQ2 Cascade from Slave 8259
00024 09h IRQ1 Keyboard
00020 08h IRQ0 Timer tick
07h 80x87 not present
06h Invalid opcode
05h Print screen (BIOS)
04h Overflow
03h Break point instruction
02h NMI
01h Single step
0000 00h Divide by zero
© DHBK 2005 27/Chapter5

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế
Chương 6: Truy c ập bộnhớtrực tiếp
© DHBK 2005 28/Chapter5

DMA
• Giới thiệu vềDMA
• Mạch DMAC 8237A của Intel
© DHBK 2005 29/Chapter5

Giới thiệu vềDMA


© DHBK 2005 30/Chapter5

Mạch DMAC 8237A của Intel


© DHBK 2005 31/Chapter5

Mạch DMAC 8237A của Intel


• Although i8237A may not appear as a discrete component in
recent PCs, it’s still there… (integrated in chipsets, ISPC)
• The i8237A has four independent DMA channels
• Original PC/XT design had one i8237A for four DMA channels
• PC/AT used two i8237As to provide 7 DMA channels
• i8237A is programmable device and can be configured for
single transfers, block transfers, Reads, Writes or Memory-to-
Memory transfers
© DHBK 2005 32/Chapter5

Mạch DMAC 8237A của Intel


• i8237A allows byte addressing for 8-bit data transfers
• In the PC/AT design, a contrived 16-bit transfer design is
implemented using the i8237A
• i8237A uses a multiplexed address and data bus to reduce the
device pin count.
DB0..DB7 lines contain the data bus along with the high byte of the 16-
bit address bus.
An external latch is required to demultiplex the address lines
© DHBK 2005 33/Chapter5

Mạch DMAC 8237A của Intel


© DHBK 2005 34/Chapter5

Mạch DMAC 8237A của Intel


© DHBK 2005 35/Chapter5

Mạch DMAC 8237A của Intel


© DHBK 2005 36/Chapter5

How the PC uses the i8237A

i8237A Address Latch and


Page Registers
I/O Mapped DM A
A16..A23
to MPU, read Page
[A16..A19
and write Regrs. for PC /XT ]

DM A
A8..A15
Addr.
Latch
IO R D B0..DB 7
IOW
M EM R ADST B
M EM W i8237
DM A A0..A7 A0..A7
four
HR Q DMA
channels DR EQ 0 Hi
DAC K0 Q D
HLD A DR EQ 1 15 usecs.
DAC K1 OUT1
DR EQ 2
C LR
DAC K2
8253
DR EQ 3
EO P DAC K3 (8254)
Tim er/
Floppy Controller Counter
© DHBK 2005 37/Chapter5

DMA Address Tracking


• The i8237A has four registers for tracking memory addresses
during a DMA block
 BASE ADDRESS REGISTER
 BASE WORD COUNT REGISTER
 CURRENT ADDRESS REGISTER
 CURRENT WORD COUNT REGISTER
© DHBK 2005 38/Chapter5

DMA in the
PC/XT
39/Chapter5

DMA Cascadation
© DHBK 2005

Cascaded i8237As in the PC/AT


Cascaded i8237A
DMA Controllers
DREQ0
DACK0

DREQ1
DACK1
i8237A
Slave DREQ2
DACK2
DREQ4
DREQ3
HRQ DACK4 DACK3
MPU
HOLDA DREQ5
i8237A DACK5
Master
DREQ6
DACK6

DREQ7
DACK7
© DHBK 2005 40/Chapter5

PC/AT DMA Channel priorities


• DMA channel 0 (DREQ0) has the highest priority
• DMA channel 7 (DREQ7) has the lowest
• Note, when a DMA transfer is in session, it cannot be 'interrupted' by another
DMA request, even if the DMA request is made by a higher priority DMA
channel.
• The current DMA transfer session will be completed before the pending
DMA request is accepted
© DHBK 2005 41/Chapter5

DMA Channels in the PC/AT

DMA Priority Pre-defined 8-bit or


Use in PC/AT 16-bit
____________________________________________________________
DREQ0 Highest Memory Refresh* 8-bits

DREQ1 Not defined 8-bits

DREQ2 Floppy Disk 8-bits

DREQ3 Not defined 8-bits

DREQ4 Cascade not used

DREQ5 Not defined 16-bits

DREQ6 Not defined 16-bits

DREQ7 Lowest Not defined 16-bits


© DHBK 2005 1/Chapter6

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế
Chương 6: Truy c ập bộnhớtrực tiếp
© DHBK 2005 2/Chapter6

DMA
• Giới thiệu vềDMA
• Mạch DMAC 8237A của Intel
© DHBK 2005 3/Chapter6

Giới thiệu vềDMA


© DHBK 2005 4/Chapter6

Mạch DMAC 8237A của Intel


© DHBK 2005 5/Chapter6

Mạch DMAC 8237A của Intel


• Although i8237A may not appear as a discrete component in
recent PCs, it’s still there… (integrated in chipsets, ISPC)
• The i8237A has four independent DMA channels
• Original PC/XT design had one i8237A for four DMA channels
• PC/AT used two i8237As to provide 7 DMA channels
• i8237A is programmable device and can be configured for
single transfers, block transfers, Reads, Writes or Memory-to-
Memory transfers
© DHBK 2005 6/Chapter6

Mạch DMAC 8237A của Intel


• i8237A allows byte addressing for 8-bit data transfers
• In the PC/AT design, a contrived 16-bit transfer design is
implemented using the i8237A
• i8237A uses a multiplexed address and data bus to reduce the
device pin count.
DB0..DB7 lines contain the data bus along with the high byte of the 16-
bit address bus.
An external latch is required to demultiplex the address lines
© DHBK 2005 7/Chapter6

Mạch DMAC 8237A của Intel


© DHBK 2005 8/Chapter6

Mạch DMAC 8237A của Intel


© DHBK 2005 9/Chapter6

Mạch DMAC 8237A của Intel


© DHBK 2005 10/Chapter6

How the PC uses the i8237A

i8237A Address Latch and


Page Registers
I/O Mapped DM A
A16..A23
to MPU, read Page
[A16..A19
and write Regrs. for PC /XT ]

DM A
A8..A15
Addr.
Latch
IO R D B0..DB 7
IOW
M EM R ADST B
M EM W i8237
DM A A0..A7 A0..A7
four
HR Q DMA
channels DR EQ 0 Hi
DAC K0 Q D
HLD A DR EQ 1 15 usecs.
DAC K1 OUT1
DR EQ 2
C LR
DAC K2
8253
DR EQ 3
EO P DAC K3 (8254)
Tim er/
Floppy Controller Counter
© DHBK 2005 11/Chapter6

DMA Address Tracking


• The i8237A has four registers for tracking memory addresses
during a DMA block
 BASE ADDRESS REGISTER
 BASE WORD COUNT REGISTER
 CURRENT ADDRESS REGISTER
 CURRENT WORD COUNT REGISTER
© DHBK 2005 12/Chapter6

DMA in the
PC/XT
13/Chapter6

DMA Cascadation
© DHBK 2005

Cascaded i8237As in the PC/AT


Cascaded i8237A
DMA Controllers
DREQ0
DACK0

DREQ1
DACK1
i8237A
Slave DREQ2
DACK2
DREQ4
DREQ3
HRQ DACK4 DACK3
MPU
HOLDA DREQ5
i8237A DACK5
Master
DREQ6
DACK6

DREQ7
DACK7
© DHBK 2005 14/Chapter6

PC/AT DMA Channel priorities


• DMA channel 0 (DREQ0) has the highest priority
• DMA channel 7 (DREQ7) has the lowest
• Note, when a DMA transfer is in session, it cannot be 'interrupted' by another
DMA request, even if the DMA request is made by a higher priority DMA
channel.
• The current DMA transfer session will be completed before the pending
DMA request is accepted
© DHBK 2005 15/Chapter6

DMA Channels in the PC/AT

DMA Priority Pre-defined 8-bit or


Use in PC/AT 16-bit
____________________________________________________________
DREQ0 Highest Memory Refresh* 8-bits

DREQ1 Not defined 8-bits

DREQ2 Floppy Disk 8-bits

DREQ3 Not defined 8-bits

DREQ4 Cascade not used

DREQ5 Not defined 16-bits

DREQ6 Not defined 16-bits

DREQ7 Lowest Not defined 16-bits


© DHBK 2005

Nội dung môn học


1. Giới thiệu chung vềhệvi xửlý
2. Bộvi xửlý Intel 8088/8086
3. Lập trình hợp ngữcho 8086
4. Tổchức vào ra dữliệu
5. Ngắt và xửlý ngắt
6. Truy cập bộnhớtrực tiếp DMA
7. Các bộvi xửlý trên thực tế

1
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
2
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
3
© DHBK 2005

Intel 4004
• First microprocessor
(1971)
• 4-bit processor
• 2300 Transistors (P-
MOS), 10 m
• 0.06 MIPS, 108 KHz,
640 bytes addressable
memory
• -15V power supply

4
© DHBK 2005

Intel 8008
• First 8-bit processor
(1972)
• Cost $500; at this time,
a 4-bit processor costed
$50
• Complete system had 2
Kbyte RAM
• 200 KHz clock
frequency, 10 m, 3500
TOR, 0.06 MIPS, 16
Kbyte addressable
memory
• 18 pin package,
multiplexed address
and data bus

5
© DHBK 2005

Intel 8080

• Second gen. 8-bit


processor,
introduced in 1974
• 40 pin package,
NMOS, 500K
instructions/s, 6
m, 2 MHz, ±5V &
+12V power supply,
6 KTOR, 0.64 MIPS
• 64 Kbyte address
space (“as large as
designers want”,
EDN 1974)

6
© DHBK 2005

Intel 8088

• 16-bit processor
• introduced in 1979
• 3 m, 5 a 8 MHz, 29
KTOR, 0.33 a 0.66
MIPS, 1 Mbyte
addressable memory

7
© DHBK 2005

Intel 8086

16
16 bit integer CPU
data

20
address

• Introduced: 1978
• Clock frequency: 8 - 10 MHz

8
© DHBK 2005

Intel 80286

16
MMU 16 bit integer CPU
data

24
address

• Introduced: 1983
• 1.5 m, 134 KTOR, 0.9 to 2.6 MIPS
• Clock frequency: 6 - 25 MHz

9
© DHBK 2005

Intel 80386sx

16
MMU 32 bit integer CPU
data

24
address

• Introduced: 1986
• 1 m, 275 KTOR, 16 to 33 MHz, 5 to 11 MIPS
• Clock frequency: 16 - 25 MHz
• Software support and hardware protection for multitasking

10
© DHBK 2005

Intel 80386dx

32
MMU 32 bit integer CPU
data

32
address

• Introduced: 1988
• Clock frequency: 16 - 40 MHz
• Software support and hardware protection for multitasking

11
© DHBK 2005

Intel 80486dx

32
8 Kbyte cache 32 bit integer CPU
data

MMU 64 bit FPU 32


address

• Introduced: 1989
• Clock frequency: 25 - 50 MHz
• Software support and hardware protection for multitasking
• Support for parallel processing
• Cache required: external memory is not fast enough

12
© DHBK 2005

Intel 80486sx

32
8 Kbyte cache 32 bit integer CPU
data

MMU 32
address

• Introduced: 1989
• 0.8 m, 1.2 MTOR, 20 to 41 MIPS
• Clock frequency: 25 - 50 MHz
• Software support and hardware protection for multitasking
• Support for parallel processing
• Cache required: external memory is not fast enough

13
© DHBK 2005

Intel 80486dx2

32
8 Kbyte cache 32 bit integer CPU
data

MMU 64 bit FPU 32


address

• Introduced: 1992
• Clock frequency: internal: 50 - 66 MHz, external: 25 - 33 MHz
• Software support and hardware protection for multitasking
• Support for parallel processing
• Cache required: external memory is not fast enough

14
© DHBK 2005

Intel Pentium

8 Kbyte 32 bit integer 64


program cache pipelined CPU data
8 Kbyte 32 bit integer
32
data cache pipelined CPU address
Static branch
64 bit FPU
prediction unit

MMU

• Introduced: 1993
• (.8 m, 3.1 MTOR) up to (.35 mm, 4.5 MTOR incl. MMX)
• Clock frequency: internal: 60 - 166 MHz, external: 66 MHz
• Support for parallel processing: cache coherence protocol
• Super scalar

15
© DHBK 2005

Intel Pentium Pro

8 Kbyte L1 32 bit integer 64+ECC


program cache pipelined CPU data
8 Kbyte L1 32 bit integer
36
data cache pipelined CPU address
Dynamic branch 32 bit integer
prediction unit pipelined CPU
64 bit
MMU
pipelined FPU to L2 cache
Instruction Address
dispatch unit generation unit

• Introduced: 1995, 0.35 m, 3.3 V, 5.5 MTOR, 35W, 387 pin
• Clock frequency: 150 - 200 MHz Internal, 60 - >100 MHz External
• Super scalar (4 Instr./cycle), super pipelined (12 stages)
• Support for symmetrical multiprocessing (4 CPU)
• MCM: 256-1024 Kbyte L2 4-way set associative cache

16
© DHBK 2005

Intel Pentium II

16 Kbyte L1 32 bit integer 64+ECC


program cache pipelined CPU data
16 Kbyte L1 32 bit integer
36
data cache pipelined CPU address
Dynamic branch 64 bit
prediction unit pipelined FPU
64 bit ECC
MMU
pipelined FPU to L2 cache
Instruction Address
dispatch unit generation unit

• Introduced: 1997, 0.25 m, 2.0 V, 9 MTOR, 43 W, 242 pin


• Clock frequency: 200 - 550 MHz Internal, 100 - 225 MHz L2 cache, 66
- 100 MHz External
• Super scalar (4 Instr./cycle), super pipelined (12 stages)
• Support for symmetrical multiprocessing (8 CPU)
• Single Edge Contact Cartridge with Thermal Sensor: 256-1024 Kbyte
L2 4-way set associative cache
17
Intel Pentium III
© DHBK 2005

16 Kbyte L1
program cache
16 Kbyte L1 32 bit integer 64+ECC
data cache pipelined CPU data
256 Kbyte L2 unified 32 bit integer
36
cache pipelined CPU address
Dynamic branch 64 bit
prediction unit pipelined FPU
64 bit
MMU
pipelined FPU
Instruction Address
dispatch unit generation unit

• Introduced: 1999, 0.18 m , 6LM, 1.8 V, 28 MTOR, 370 pin


• Clock frequency: 450 - 1130 MHz Internal, 100-133 MHz External
• Super scalar (4 Instr./cycle), super pipelined (12 stages)
• Support for symmetrical multiprocessing (2 CPU)

18
Intel Pentium IV
© DHBK 2005

16 Kbyte L1
program cache
16 Kbyte L1 32 bit integer 64+ECC
data cache pipelined CPU data
32 bit integer
256/512/1024 Kbyte L2 36
pipelined CPU address
Dynamic branch 64 bit
prediction unit pipelined FPU
64 bit
MMU
pipelined FPU
Instruction Address
dispatch unit generation unit

• Introduced: 2002, 0.13 m or 90nm , 1.8 V, 55 MTOR


• Clock frequency: 1,4 to 3.8 GHz Internal, 400 to 800 MHz External
• Super scalar (4 Instr./cycle), super pipelined (12 stages)
• Newer versions: Hyper threading, 3.8 MHz

19
Intel Pentium IV
© DHBK 2005

• Available at 3.80F GHz, 3.60F GHz, 3.40F GHz and 3.20F GHz
• • Supports Hyper-Threading Technology1 (HT Technology) for
all frequencies with 800 MHz front side bus (FSB)
• • Supports Intel® Extended Memory 64Technology2 (Intel®
EM64T)
• Supports Execute Disable Bit capability
• Binary compatible with applications running on previous
members of the Intel microprocessor line
• Intel NetBurst® microarchitecture
• FSB frequency at 800 MHz
• Hyper-Pipelined Technology
• Advance Dynamic Execution
• Very deep out-of-order execution
• Enhanced branch prediction
• 775-land Package
20
Intel Pentium IV
© DHBK 2005

• 16-KB Level 1 data cache


• 1-MB Advanced Transfer Cache (on-die, fullspeed Level 2 (L2)
cache) with 8-way associativity and Error Correcting Code
(ECC)
• 144 Streaming SIMD Extensions 2 (SSE2) instructions
• 13 Streaming SIMD Extensions 3 (SSE3) instructions
• Enhanced floating point and multimedia unit for enhanced
video, audio, encryption, and 3D performance
• Power Management capabilities
• System Management mode
• Multiple low-power states
• 8-way cache associativity provides improved cache hit rate on
load/store operations

21
© DHBK 2005

IA-64 (Itanium)
• Design started in 1994; first samples on the market
in 2001
• 64-bit address space (4x109 Gbyte; we will never
need that much…)
• 256 64-bit integer and 128 82-bit floating point
registers; 64 branch target registers; 64 1-bit
predicate registers
• 41 bit instruction word length
• 10-stage pipeline
• separate L1 data and program, 96 Kbyte L2 unified
on-chip, 4 Mbyte L3 unified off-chip

22
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
23
Trends for general purpose
© DHBK 2005

processors
• Higher clock frequencies: 4.7 -> 30 GHz
• Faster memory: 120 ns -> 50 ns
not proportional to clock frequency increase => use of
caches and special DRAM memories (e.g. SDRAM)
• Limited by power dissipation => decreasing power
supply voltage
• Parallel processing
• Memory with processor instead of processor with
memory

24
© DHBK 2005

The future: general characteristics


Roadmap 2001 2002 2004 2007 2010 2013 2016
Roadmap 1998 1997 1999 2002 2005 2008 2011 2014
Roadmap 1995 1995 1998 2001 2004 2007 2010
Line width (nm) 350 250 180 130 90 65 45 32 22
Number of 18 22 22- 24 24- 26- 28 29-
masks 24 26 28 30
Wafer size 200 200 300 300 300 300
(mm)
Number of 4-5 6 6-7 7 7-8 8-9 9 10
wiring levels
Power supply 3.3 1.8- 1.5- 1.1- 1.0- 0.7- 0.6 0.5 0.4
V: desktop 2.5 1.8 1.5 1.2 0.9
Max. power 80 70 90 130 160 170 175 183
dissipation/chip

Will 22 nm be the end of the scaling race for CMOS?


Some believe10 nm will be the end…
…thereafter, semiconductor drive will be scattered
(MEMS, sensors, magnetic, optic, polymer, bio, …)
Depending on application domain: besides and beyond
silicon
25
Besides and beyond silicon (e.g.
© DHBK 2005

polymer electronics)

26
© DHBK 2005
Besides and beyond silicon: applied to future
ambient intelligent environments

27 © Emile Aarts, HomeLab, Philips


© DHBK 2005
Besides and beyond silicon: applied to future
ambient intelligent environments

28 © Emile Aarts, HomeLab, Philips


© DHBK 2005
Besides and beyond silicon: applied to
ambient intelligent HomeLab (2002)

29 © Emile Aarts, HomeLab, Philips


© DHBK 2005

The future: high performance (P)


Roadmap 2001 2001 2004 2007 2012 2016
Roadmap 1998 1997 1999 2002 2005 2008 2011 2014
Roadmap 1995 1995 1998 2001 2004 2007 2010
Number of TOR 6M 11M 21M 76M 200M 520M 1.4G 3.6G
On chip local 750 1250 2100 3500 6000 10000 16903
clock freq. (MHz)
On chip global 300 375 1200 1600 2000 2500 3000 3674
clock freq. (MHz)
Chip size (mm2 ) 250 300 340 430 520 620 750 901

• CTO Intel says in 2001


2005
425 MTOR
100 nm
1600 mm2
30 GHz on chip
without specific measures like individual transistor power-
down: 3000 W, i.e. 3000 amps...
1.8 GTOR in 2010
30
© DHBK 2005

The future: high performance (P)

31
© DHBK 2005

Processor performance
Performance
1M

100K

10K
55%/year
1K

100

10

1 Time
1980 1985 1990 1995 2000 2005

Exponential growth for 3 decades!


This is called ‘Moore’s law’: number of transistors
doubles every 18 months
(Gordon Moore, founder Intel Corp.)
32
© DHBK 2005

Processor performance
• Smaller line size
More transistors => parallelism
1983: 1 instruction per 4 clock cycles
2002: 8 instructions per clock cycle
Smaller capacitors => faster
1983: 4 MHz
2002: 2800 MHz
Speed-up: 25000
• Enables new applications
UMTS with large rolled-up OLED screen enabling web
downloadable services (e.g. virtual meetings)
• Do we find applications that are demanding enough
for next decade’s processors?

33
© DHBK 2005

The future: DRAM

Roadmap 2001 2003 2007 2011 2016 ? ?


Roadmap 1998 1997 1999 2002 2005 2008 2011 2014
Roadmap 1995 1995 1998 2001 2004 2007 2010
Number of bits 64M 256M 1G 4G 16G 64G 256G 1T
per chip
Chip size (mm 2) 190 280 400 560 790 1120 1580 2240

34
© DHBK 2005

Memory density
Performance
1M Processor

100K

10K
55%/year Gap
1K

100

10 Memory
10%/year
1 Time
1980 1985 1990 1995 2000 2005

35
© DHBK 2005

Memory density
• Skills: center of gravity
USA: processors (Intel, Motorola, TI, …)
Japan: memory (NEC, Toshiba, …)
Future: IC = processor + memory
Where???
• Memory density grows faster than needs
1983: 512 Kbyte @ 64 Kbit/chip = 64 chips/PC
2001: 256 Mbyte @ 512 Mbit/chip = 4 chips/PC
Compensated if you sell at least 16 times more PCs…
… or if you find new applications (UMTS, car,…)
2010: 4 Gbyte @ 64 Gbit/chip = 0.5 chip/PC
No need for such a large memory chip…
… unless you find new applications (3D video…)

36
© DHBK 2005

Power consumption
Power (W/cm2)
1K

Nuclear reactor
100

Hot plate P4
P II P III
10
P P Pro
386
486
1
1.5 1 0.7 0.5 0.35 0.25 0.18 0.13 0.1Line
width

Processor architecture design driven by memory bottleneck


& power problem!

Nevertheless, ‘cooling tower’ is necessary!


37 © Fred Pollack, Keynote at Micro99
© DHBK 2005

Power consumption

Cooling “tower”

38
© DHBK 2005

Power consumption
• Let us do a calculation:
How long could a GSM using a Pentium 3 (hardly powerful
enough…) last on a single battery charge?
Capacity of a battery:
600 mAh @ 4V = 2400 mWh
Power consumption Pentium 3: 45 W
One charge lasts for … 3 minutes!!!
• Let us turn the computation upside down:
We want a GSM to last for 240 hours on a single charge.
How much power may be consumed by the processor?
Capacity of a battery:
600 mAh @ 4V = 2400 mWh
Power consumption processor: 10 mW
Possible via specialization to the application:
dedicated hardware…

39
© DHBK 2005

Summary on technological trends


• Technologically speaking, we can have the same
exponential evolution for another decade
• This gives us at least 4 decades of exponential
evolution, never seen in history
• End-user price stayed the same or even decreased
Since 30 years, the price for a brand new processor is
1000 USD
• So far for the good news…

40
© DHBK 2005

Design issues
Performance Design
1M complexity

100K

10K
55%/year Gap
1K

100
Design
10 productivity
10%/year
1 Time
1980 1985 1990 1995 2000 2005

Unfortunately, Gordon Moore’s law is also valid for the


design complexity, which doubles every 18 months…

… and worse, design productivity doubles only every


10 years
41
© DHBK 2005

Design issues
• We can build exponentially complex circuits, but
we cannot design them
Design of Pentium 4: 8 years, during last 2 years with a
team of 1000 persons
Who can afford this???

42
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
43
© DHBK 2005

Giới thiệu vềvi điều khiển


• Vi điều khiển = CPU + Bộnhớ+ các khối ghép nối
ngoại vi + các khối chức năng
EEPROM
RAM
ADC/DAC
Timer
Bộtạo xung nhị
p
PWM
UART
USB
...

44
© DHBK 2005

Vi xửlý vs. Vi điều khiển


• Vi xửlý là một CPU được sửdụng trong các máy
tính.
• Các vi bộđiều khiển và các bộvi xửlý có ba điểm
khác nhau chính sau:kiến trúc phần cứng, phạm vi
ứng dụng, và đặc điểm tập lệnh.
• Kiến trúc phần cứng: Một bộvi xửlý chỉlà một CPU
đơn lẻtrong khi một bộvi điều khiển là một IC chứa
CPU và các mạch ngoại vi chính của một máy tính
hoàn chỉ nh (nhưRAM, ROM, giao diện nối tiếp, giao
diện song song, bộđịnh thời, mạch xửlý ngắt)
• Ứng dụng: Vi xửlý thường được dùng nhưmột CPU
trong các máy tính trong khi các vi điều khiển được
sửdụng trong các thiết bịnhỏđểđiều khiển các
hoạt động.
45
© DHBK 2005

Vi xửlý vs. Vi điều khiển


• Tập lệnh:
Tập lệnh của vi xửlý thiên vềxửlý dữliệu.
Chúng có thểlàm việc với 4 bit, byte, word, thậm chí
double word.
Chếđộđị a chỉcho phép truy nhập các mảng dữliệu lớn
bằng cách sửdụng con trỏvà đị a chỉoffset.
Tập lệnh của vi điều khiển dùng đểđiều khiển các truy
nhập vào và ra.
Chúng có các lệnh cho phép thiết lập và xoá các bit
riêng rẽvà thực hiện các thao tác với bit.
Có các lệnh cho các hoạt động vào/ra, đo thời gian các
sựkiện, cho phép và thiết lập các mức độưu tiên cho
các ngắt ngoài.
• Khảnăng xửlý của vi điều khiển thấp hơn rất
nhiều so với vi xửlý.

46
© DHBK 2005

Microcontroller facts
• 99% processor market
• Shipments- > 16 Billion in 2000, 8 bit > 1/2 market
• Major Players: Microchip 16Fxx, Intel 8051, Motorola
MC68HC05, National COP800, SGS/Thomson ST62, Zilog
Z86Cxx

47
© DHBK 2005

Motorola MC68331

32 bit 16
2 Timers
integer CPU data
1 Serial asynch. FT unit: watchdog
24
Buffered I/O clock&bus monitor address
12
Programmable
chip selects
7
Interrupt logic

• Clock frequency: > 16 MHz


• MC683xx: modular microcontroller unit: MC68000 core plus
customized peripherals

48
© DHBK 2005

Motorola MC68332

32 bit 16
Timer PU
integer CPU data
1 Serial asynch. FT unit: watchdog
24
Buffered I/O clock&bus monitor address
12
Programmable
2 Kbyte RAM
chip selects
7
Interrupt logic

48
Parallel I/O

• Clock frequency: > 16 MHz


• MC683xx: modular microcontroller unit: MC68000 core plus
customized peripherals

49
© DHBK 2005

Motorola MC68340

32 bit 16
2 Timers
integer CPU data
2 Serial asynch. FT unit: watchdog
32
I/O clock&bus monitor address
4
Programmable 2 channel
chip selects DMA controller
7
Interrupt logic

16
Parallel I/O

• Clock frequency: > 16 MHz


• MC683xx: modular microcontroller unit: MC68000 core plus
customized peripherals

50
© DHBK 2005

Motorola MC68F333

• 64 Kbyte on chip flash EEPROM


• 68020 processor
• 4 Kbyte SRAM
• 8 channel 10-bit ADC
• 16 channel 16-bit timer
• several interfaces
• Introduced in 1994
51
© DHBK 2005

Motorola MC68HC16

• 16-bit microprocessor
• Introduced in 1994
www.freescale.com
52
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
53
© DHBK 2005

Họvi điều khiển 8051

• Hiện nay có hơn 40 công ty sản xuất các loại vi


điều khiển khác nhau của họ8051.
• Một sốcông ty có trên 40 version 8051.
• Các CORE 8051 có thểđược tổhợp trong các
FPGA hay ASIC.
• Trên 100 triệu vi điều khiển 8051 được bán ra mỗi
năm.
• Họ8051 gặt hái được rất nhiều thành công và nó
cũng trực tiếp ảnh hưởng đến cấu trúc của các họ
vi điều khiển hiện nay.

54
© DHBK 2005

MCS-51
• 8051 thuộc họvi điều khiển MCS-51.
• MCS-51 được phát triển bởi Intel và các nhà sản
xuất khác (nhưSiemens, Philips) là các nhà cung
cấp đứng thứhai của họnày.
• Tóm tắt một sốđặc điểm chính của họ8051:
4K bytes ROM trong
128 bytes RAM trong
4 cổng I/O 8-bit
2 bộđịnh thời 16 bit
Giao diện nối tiếp
Quản lý được 64K bộnhớcode bên ngoài
Quản lý được 64K bộnhớdữliệu bên ngoài

55
© DHBK 2005

Họvi điều khiển 8051

C¸c ng¾t ngoµi C¸c sù kiÖn cÇn ®Õm

Ram trong
Thanh ghi 128 byte FF
chøc n¨ng ram
®Æc biÖt
Nguån 80
§iÒu khiÓn
Ng¾t 128 byte 7F
ng¾t
Trong RAM
00

CPU

Bé Qu¶n Port Port Port Port Cæng


dao ®éng lý Bus 0 1 2 3 nèi
tiÕp

XTAL 1,2 PSEN ALE §Þa chØ §Þa Më réng


56
thÊp/d÷ liÖu chØ cao trong 8032
© DHBK 2005

Tham khảo
• Họvi điều khiển 8051
• www.atmel.com/products/8051/
• http://chaokhun.kmitl.ac.th/~kswichit/
• http://www.sunrom.com/

57
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
58
© DHBK 2005

Họvi điều khiển AVR


Bus d÷ liÖu 8 bÝt
Bé nhí flash Bé ®Õm Tr¹ng th¸i vµ Thanh ghi
1k x 16 cho ch-¬ng tr×nh kiÓm tra ®iÒu khiÓn
ch-¬ng tr×nh
Thanh ghi
§¬n vÞ ng¾t
Thanh ghi ®a n¨ng
lÖnh 32 x 8 §¬n vÞ SPI

UART nèi tiÕp


Bé gi¶i
m· lÖnh ALU
Timer/Counter
8 bÝt
C¸c ®-êng ®iÒu Timer/Counter
khiÓn 128 x 8
Data 16 bit víi
SRAM Bé PWM
®Þnh thêi
watchdog

128x8 Bé so s¸nh
analog
EEPROM
15 ®-êng dÉn
vµo/ra
59
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
60
© DHBK 2005

Giới thiệu chung vềPSoC

• PSoC là gì?
Do hãng Cypress sả n xuất
Một loại công nghệIC mới phát triể n trong vài năm gầ
n đây.
Khảnăng tích hợp độ ng các loạ i linh kiện sốvà tương tựđể
tạ
o ra các khố i sốhoặ c tương tựvới chức năng tuỳthuộ c
người dùng.
Kết hợp với một vi điều khiển trung tâm.

61
© DHBK 2005

Cấu trúc PSoC


• Lõi PSoC
Vi xửlý 8bit, 24MHz, 4MIPS
Flash ROM (từ16K)
RAM (128b-2kb)
Bộđiều khiển ngắt
Bus
• Các khốI số
Flip-Flop, cổng logic
• Các khốI tương tự
Các bộkhuếch đạI thuật toán
Điện trở
Tụđiện điều khiển đóng ngắt
• Tài nguyên hệthống
• Đặc biệt: Debugger core

62
© DHBK 2005

Ứng dụng

Xửlý tín hiệu Giao tiếp với cảm biến


• Phát hiện sóng Sin • Điện trởnhiệt
• Đo điện áp • Cặp nhiệt
• Đo tần số • Đo tín hiệu hồng ngoạI thụđộng
• Điền chế/giảI điều chế • Thu siêu âm
• Lọc • Đo áp suất
• Nhân tương tự
• FSK

63
So sánh thiết kếgiữa VXL, VĐK,
VĐK
© DHBK 2005

PSoC
• Ứng dụng: Mạch đo điện áp 0-5V, hiển thịgiá trịra
LED
Thiết kếphần cứng
Thiết kếphần mềm

Nguồn Tương Bộxửlý Hiển thị


điện áp tự/Số trung tâm LED

Nguồn nuôi

64
© DHBK 2005

So sánh

Vi xửlý Vi điều khiển PSoC

Độphức tạp Cao Trung bình Thấp


phần cứng

Giá thành Cao Trung bình Trung bình

Độổn đị
nh Thấp Trung bình Cao

Khảnăng Khó Trung bình Dễ


phát triển hệ
thống

65
© DHBK 2005

Thiết kếhệthống sửdụng PSoC


• Chuẩn bị
IC
Chương trình thiết kế: PSoC Designer
Chương trình nạp và mạch nạp
• Các bước thiết kếPSoC sửdụng PSoC designer
Thiết kế“cứng”
Lựa chọn “linh kiện” đểđưa vào các khốI số, tương tự
Đưa các linh kiện vào các khốI và kết nốI
Thiết lập các thông số
Lập trình
Kích hoạt các linh kiện: Component_Start()
Viết các thuật toán sửdụng linh kiện
Vòng lặp vô tận

66
© DHBK 2005

Một sốlinh kiện


• ADC (6-14 bit)
• DAC (6-9 bit)
• Khuếch đạI
• DTMF
• Bộlọc (thông thấp, thông dảI)
• Bộđếm, bộđị nh thờI (8-24 bit)
• Dồn kênh: số+tương tự
• Các linh kiện số: I2C, UART, giao tiếp LCD, mã CRC,
mã giảngẫu nhiên, giao tiếp chuẩn thu /phát hồng
ngoại

67
© DHBK 2005

Chọn linh kiện

Linh kiện trong hệthống

Tài
nguyên
hệ
thống

Chọn Hướng
linh dẫn sử
kiện dụng
linh
kiện

68
© DHBK 2005

Thiết kế

Thông
số
chung

IC
S
BU
Thông

n
Châ
sốlinh

Số
kiện

Tương tự
69
© DHBK 2005

Lập trình

Quản lý
theo dự
án

70
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Điều khiển trong công nghiệp PLC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
71
Xu hướng phát triển
© DHBK 2005

PLC (Programmable Logic Controller)


• PLC = CPU + giao diện vào ra
• Đặc điểm của PLC:
Giá thành hợp lý cho các ứng dụng điều khiển phức tạp
Chịu được rung động, nhiệt, ẩm, tiếng ồn và có độbền cao
Có sẵn giao diện cho các thiết bịvào và thiết bịra
Lập trình dễdàng với ngôn ngữlập trình đơn giản, chủyếu
giải quyết các phép toán logic và chuyển mạch

• PLC được dùng chủyếu đểđiều khiển trong công


nghiệp:
Điều khiển băng chuyền
Điều khiển thang máy
Điều khiển máy tựđộng: máy khoan, máy sấy …
Điều khiển đèn giao thông
…
72
© DHBK 2005

Cấu trúc của hệthống PLC

Bộnhớlưu trữ
chương trình

Tín hiệu
Tín hiệu ra
vào PLC

Giao Giao
diện Vi xử lý diện
vào ra

73
© DHBK 2005

Cấu trúc bên ngoài

74
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
75
© DHBK 2005

Trends for microcontrollers


• Standard CPU core surrounded by peripherals
taken from a vast library
• Single architecture line is whole family
different memory & on-chip peripherals
for embedded applications
Deterministic behavior
no caches, no virtual memory, but on-chip RAM
no out-of-order execution
delayed branch prediction

76
© DHBK 2005

Trends for microcontrollers


• Word length as small as possible
4 bit: 2%
8 bit: 36%
16 bit: 25%
32 bit: 34%
64 bit: 3%
• Not pushing the limits of performance for cost
reasons

77
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
78
Texas Instruments TMS320C20x
© DHBK 2005

Low end consumer Fixed Point


Dual access fixed MAC 16
data RAM 16x16+32->32 data

PROM Selection of 18
peripherals: address
serial comm.,
Loop controller timers,...
I/O
16
data

16
address

• Series continued; typical app.: Digital camera, feature-phones, disk


drives, Point-of-Sales Terminal
• 40 MHz, 3.3-5V, 3LM
• Available as core

79
Texas Instruments TMS320C24x
© DHBK 2005

Low end consumer Fixed Point


Dual access fixed MAC 16
data RAM 16x16+32->32 data

PROM 8 output PWM 16


address

Loop controller 8 channel A/D

Selection of CAN bus


peripherals: controller
serial comm.,
timers,... watchdog

• Series continued; typical app.: electrical motor control


• 50 MHz, 5V

80
Texas Instruments TMS320C3x
© DHBK 2005

Floating Point
32 bit 32
XRAM
floating add data
32 bit
YRAM 24
floating multiply address

PRAM ACU
I/O
32
Loop controller ACU data

Selection of 24
peripherals: address
serial comm.,
timers, DMA, ...

• Series discontinued; typical app.: speech, audio


• 60 MHz, 3.3-5V, 144 pin
• Super scalar

81
Texas Instruments TMS320C4x
© DHBK 2005

Floating Point Message Passing


20 MB/s
32 bit 32
4KByte XRAM
floating add data
32 bit
4KByte YRAM 32
floating multiply address
8 PRAM ACU

32
Loop controller ACU data

12 channel 32
DMA controller Serial link, address
timers

• Series discontinued; typical app.: prototyping, radar


• 60 MHz, 5V, 325 pin
• Super scalar; message passing multiprocessor

82
Texas Instruments TMS320C54xx
© DHBK 2005

High end consumer Fixed Point


Dual access Fixed ALU 32
XRAM 32+32->40 data
Fixed Add
YRAM 17
32+32->40 address
Fixed multiply
PROM
17x17->34 I/O
16
Loop controller Viterbi data

6 channel 16
ACU
DMA controller address
Buffered serial
ACU
links, timers, ...
• Series continued; typical app.: GSM, set-top box, audio
• 1.8-5V, max. 160 MHz, 144 pin, .15m (1999), 0.32mW/MIPS for the
core
• Specialized on-chip unit: will occur more often in future
• e.g. C5420: dual core + 2x100 MW on-chip SRAM
83 e.g. C5402: 5$ for 100 MIPS
Texas Instruments TMS320C5510
© DHBK 2005

High end consumer Fixed Point


Dual access Fixed ALU
XRAM (256 Kbyte) 32+32->40
YRAM Fixed Add 32
(64 Kbyte) 32+32->40 data
PROM Fixed multiply
24
32 KByte 17x17->34 address
P-cache Fixed multiply
24 KByte 17x17->34 I/O
16
Power Mgment Viterbi data

6 channel 16
ACU
DMA controller address
Buffered serial
ACU
links, timers, ...

• Series continued; typical app.: UMTS handheld


• 1.6V, 200 MHz, .15m (2000), 400 MIPS,0.05mW/MIPS (core), power
management per unit and per cycle
•84 Specialized on-chip unit: will occur more often in future
Texas Instruments TMS320C8x
© DHBK 2005

Fixed Point Video


2 Kbyte RAM1 DSP processor 1
32
DSP processor 2 address
2 Kbyte RAM 16
X- data
DSP processor 3
bar 64
2 Kbyte I-cache1
DSP processor 4

2 Kbyte I-cache4

General purpose
4 Kbyte D-cache
RISC processor

4 KByte I-cache Video controller

Transfer
2 KByte RAM
controller
• Series discontinued; typical app.: video phone, video conferencing,
multimedia workstations
• Introduced: 1995, 50 MHz, 305 pin
• Multiprocessor-on-a-chip; sub-word SIMD for each DSP
85
Texas Instruments TMS320C6201
© DHBK 2005

High end Fixed Point


fixed MUL
16KByte D-SRAM External memory
16x16->32
fixed MUL 23
16KByte D-SRAM address
16x16->32
fixed ALU data
16KByte D-SRAM
32+32->40 32
fixed ALU
16KByte D-SRAM
32+32->40
64KByte fixed ALU/branch
P-SRAM/cache 32+32->40
JTAG / clock pump fixed ALU/branch
Host interface
4 channel DMA 32+32->40
Ext. memory integer ACU 17
address
interface 32+32
2 Serial ports integer ACU data
2 Timers 32+32 16
• Series continued; typical app.: modems, multimedia
• 1997, 0.25 m, 5ML, 352 pin, 200 MHz, 2.5V, 1.9W, $85
• Super scalar (8 Instr./cycle), 1600 MIPS
•86 VLIW: 256 bit instruction word
Texas Instruments TMS320C6202
© DHBK 2005

High end Fixed Point


2x16KByte D-RAM fixed MUL
(Shadow load) 16x16->32 External memory
2x16KByte D-RAM fixed MUL 23?
(Shadow load) 16x16->32 address
2x16KByte D-RAM fixed ALU data
(Shadow load) 32+32->40 32
2x16KByte D-RAM fixed ALU
(Shadow load) 32+32->40
2x128KB P-RAM fixed ALU/branch
(Shadow load) 32+32->40
JTAG / clock pump fixed ALU/branch
Expansion bus
4 channel DMA 32+32->40
Ext. memory integer ACU 17?
address
interface 32+32
2 Serial ports integer ACU data
2 Timers 32+32 32
• Series continued; typical app.: modems, multimedia
• 1999, 0.18 m, 5ML, 352 pin, 250 MHz, 1.8V, 1.9W, $130
• Super scalar (8 Instr./cycle), 2000 MIPS, scales well till 700 MHz
(6000 MIPS)
•87 Optimum choice when all data fits in on-chip memory
Texas Instruments TMS320C6203
© DHBK 2005

High end Fixed Point


2x64KByte D-RAM fixed MUL
(Shadow load) 16x16->32 External memory
2x64KByte D-RAM fixed MUL 23?
(Shadow load) 16x16->32 address
2x64KByte D-RAM fixed ALU data
(Shadow load) 32+32->40 32
2x64KByte D-RAM fixed ALU
(Shadow load) 32+32->40
256KByte P-RAM fixed ALU/branch
128KB P-cache/RAM 32+32->40
JTAG / clock pump fixed ALU/branch
Expansion bus
4 channel DMA 32+32->40
Ext. memory integer ACU 17?
address
interface 32+32
2 Serial ports integer ACU data
2 Timers 32+32 32
• Series continued; typical app.: base stations
• 2000, 0.15 m, 5ML, 18 mm2 package size, 300 MHz, 1.5V, 1.5W
• Super scalar (8 Instr./cycle), 2400 MIPS
• Optimum choice when all data fits in on-chip memory
88
Texas Instruments TMS320C6211
© DHBK 2005

High end Fixed Point


4KByte L1 Dcache fixed MUL
(2 way set assoc.) 16x16->32 External memory
4KByte L1 Pcache fixed MUL 30
(2 way set assoc.) 16x16->32 address
4x16KByte L2 fixed ALU data
cache (direct map) 32+32->40 32
fixed ALU
32+32->40
fixed ALU/branch
32+32->40
JTAG / clock pump fixed ALU/branch
Host port
16 channel DMA 32+32->40
Ext. memory integer ACU 17
address
interface 32+32
2 Serial ports integer ACU data
2 Timers 32+32 16
• Series continued; typical app.: modems, multimedia
• 1999, 0.18 m, 5ML, 256 pin, 150 MHz, 1.8V, 1.5W, $25
• VLIW, 1.2 GIPS; cheap (25$ in ‘99, 5$ in ‘01)
• Optimum for random access to large memory space
•89 80% of performance of C6x with infinite on-chip memory
Texas Instruments TMS320C6416
© DHBK 2005

High end Fixed Point


16 Kbyte L1P fixed MUL
External memory
direct mapped 16x16->32
16 Kbyte L1D fixed MUL 30
address
2way dual access 16x16->32
1 Mbyte RAM/L2 fixed ALU data
4way 32+32->40 64
Dual EMIF & HPI & fixed ALU
PCI & Utopia 32+32->40 30
address
JTAG / clock pump fixed ALU/branch
64 channel DMA 32+32->40 data
3 Serial ports fixed ALU/branch 16
3 Timers 32+32->40 HPI
Viterbi decoder integer ACU ?
accelerator 32+32 address
Turbo decoder integer ACU
data
accelerator 32+32
32
• Samples June 2001, 0.12 m, 6 LM, 532 pin, 400 MHz-600 MHz, 1.2V,
starts at 95$ in volume
• Super scalar (8 Instr./cycle), 3200-4800 MIPS
• Sub-word (8bit or 16bit) parallelism
•90 Specialized instr.: Galois Field Mult, bit manipulation
Texas Instruments TMS320C6701
© DHBK 2005

High end Floating Point


Fixed/Float MUL
16KByte D-SRAM External memory
32x32/64x64
Fixed/Float MUL 23
16KByte D-SRAM address
32x32/64x64
Fixed/Float ALU data
16KByte D-SRAM
32+32/64+64 32
Fixed/Float ALU
16KByte D-SRAM
32+32/64+64
64KByte Fixed ALU/Branch
P-SRAM/cache Float 1/x & x
JTAG / clock pump Fixed ALU/Branch
Host interface
4 channel DMA Float 1/x & x
Ext. memory integer ACU 17
address
interface 32+32
Serial interface integer ACU data
2 Timers 32+32 16
• Series continued; typical app.: video compression
• Introduced: 1998, 0.18 m, 5ML, 352 pin, 167 MHz, 1.8V
• Super scalar (8 Instr./cycle); VLIW; 1 GFLOP
•91 Foreseen for ‘00: 50$ (cf. C6211) & 3 GFLOP (cf. C6202)
Texas Instruments TMS320C6711
© DHBK 2005

High end Floating Point


4KByte L1 Dcache Fixed/Float MUL
(2 way set assoc.) 32x32/64x64 External memory
4KByte L1 Pcache Fixed/Float MUL 23
(2 way set assoc.) 32x32/64x64 address
4x16KByte L2 Fixed/Float ALU data
cache (direct map) 32+32/64+64 32
Fixed/Float ALU
32+32/64+64
Fixed ALU/Branch
Float 1/x & x
JTAG / clock pump Fixed ALU/Branch
Host interface
4 channel DMA Float 1/x & x
Ext. memory integer ACU 17
address
interface 32+32
Serial interface integer ACU data
2 Timers 32+32 16
• Series continued; typical app.: video compression
• 2000, 0.18 m, 5ML, 256 pin, 100 MHz, 1.8V, 2W, $20
• VLIW, 600 MFlops
• Optimum for random access to large memory space
•92 80% of performance of C6x with infinite on-chip memory
© DHBK 2005

Texas Instruments

TMS320C541 (1995)

93
© DHBK 2005

Texas Instruments

TMS320C545 (1995)

94
© DHBK 2005

Texas Instruments

TMS320C80 (1994)
95
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
96
Motorola MC56xxx
© DHBK 2005

Audio Fixed Point


16 or 24 bit 24
XRAM
integer CPU data

YRAM ACU 18
address

PRAM ACU

Loop controller Selection of


peripherals:
ADC, DAC, comm.,
timers, PIO, ...

• 24 bit for audio: 16 bit data + overflow

97
© DHBK 2005

Motorola MC56002

98
© DHBK 2005

Motorola MC56166

99
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
100
Philips VSP-1
© DHBK 2005

Fixed Point Video


12
512x12 bit 12 bit
Memory element integer ALU
512x12 bit 12 bit
Memory element integer ALU
12 bit
10x18 cross-bar
integer ALU 12
10

• 12 bit for video: 8 bit data + overflow


• Clock Frequency: 27 MHz
• 1 instruction per sample period for HDTV,
2 instructions per sample period for TV

101
Philips VSP-1
© DHBK 2005

Fixed Point Video

Inputs

ALU ALU ALU ME ME

Outputs
102
Philips VSP-1
© DHBK 2005

Output
FIFOs
Fixed Point Video

• 206K Transistors
• 1.1W dissipation
• 27 MHz clock
• 176 pin
• Introduced in 1991

Memory
ALU
Element

103
Philips VSP-2
© DHBK 2005

Fixed Point Video


12
512x12 bit 12 bit
Memory element1 integer ALU1
512x12 bit 12 bit
Memory element2 integer ALU2

12
512x12 bit 12 bit
Memory element4 integer ALU 12

22x50 cross-bar
22

• 12 bit for video: 8 bit data + overflow


• Clock Frequency: 54 MHz
• 2 instructions per sample period for HDTV,
4 instructions per sample period for TV

104
Philips VSP-2
© DHBK 2005

Fixed Point Video

• 1.15 M Transistors
• 5W dissipation
• 54 MHz clock frequency
• 208 pin
•105 Introduced in 1994
© DHBK 2005

Sony Graphics Engine


• Playstation 3
Status: prototype in 2001
287.5 MTOR
256 Mbit on-chip embedded DRAM
2000-bit wide internal bus
462 mm2
180 nm CMOS

106
© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế


• General purpose microprocessors
Intel 80x86
Xu hướng phát triển
• Microcontrollers
Vi điều khiển của Motorola
Họvi điều khiển 8051
Họvi điều khiển AVR
PSOC
Xu hướng phát triển
• Digital signal processors
Texas Instruments
Motorola
Philips
Xu hướng phát triển
107
© DHBK 2005

Trends for DSP processors


• No new generations that replace old generations,
but multiple co-existing architecture lines
• Word length application dependent
Automotive: 16-bit fixed point (e.g. C2x)
Speech: 32-bit floating point (e.g. C30)
Audio: 24-bit fixed point (e.g. MC56K)
Telecommunications: 16-32 bit fixed point (e.g. C5x, C6x)
Video: 12-32 bit fixed point (e.g. C8x)
• Single architecture line is whole family
different memory & on-chip peripherals
for embedded applications (cf. microcontrollers)

108
© DHBK 2005

Trends for DSP processors


• Deterministic behavior
no caches, no virtual memory, but on-chip RAM banks
no out-of-order execution
delayed branch prediction
• Increasing address space: 12 -> 32
• Multiple functions on single chip: CPU, FPU,
multiple RAM banks, ACUs, loop controller, ADC,
DAC, PWM, serial interfaces, …
• Often provisions for parallel processing

109

You might also like