Bài giảng Kỹ thuật vi xử lý Microprocessors - Phạm Ngọc Nam
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật vi xử lý Microprocessors - Phạm Ngọc Nam", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_ky_thuat_vi_xu_ly_microprocessors_pham_ngoc_nam.pdf
Nội dung text: Bài giảng Kỹ thuật vi xử lý Microprocessors - Phạm Ngọc Nam
- Kỹỹthuthuậtt vivi xxửửlýlý Microprocessorsicroprocessors 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 dungdung mơn họcc 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
- © DHBK 2005 7/Chapter1 Chương 1 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 8/Chapter1 Chương 1 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 9/Chapter1 Chương 1 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 10/Chapter1 Thếhệ-1: The early days ( -1642)1642) • Bàn tính, abacus, đã được sửdụng đểtính tốn. Khái niệm vềgiá trịtheo vịtrí đã được xửdụng
- © DHBK 2005 11/Chapter1 Thếhệ-1: The early days ( -1642)1642) • Thếkỷ12: Muhammad ibn Musa Al'Khowarizmi đưa ra khái niệm vềgiải thuật algorithm
- © DHBK 2005 12/Chapter1 Thếhệ-1: The early days ( -1642)1642) • Codex Madrid - Leonardo Da Vinci (1500) Vẽmột cái máy tính cơkhí
- © DHBK 2005 13/Chapter1 Chương 1 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ếtồ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!!
- © DHBK 2005 24/Chapter1 Chương 1 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:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (1945-1955) • Một magnetic core lưu trữ256 bits
- © DHBK 2005 32/Chapter1 Thếhệ1:1: Vacuum Vacuum tubes tubes (1945 (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:1: Vacuum Vacuum tubes tubes (1945 (1945-1955) • Năm 1954, John Backus, IBM phát minh ra FORTRAN
- © DHBK 2005 34/Chapter1 Chương 1 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 35/Chapter1 Thếhệ2: Discrete transistors (1955-1965)1965) • Năm 1947, William Shockley, John Bardeen, and Walter Brattain phát minh ra transistor
- © DHBK 2005 36/Chapter1 Thếhệ2: Discrete transistors (1955-1965)1965) • 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 tốn dấu phấy động đầu tiên (5 kFlops, clock: 300 kHz)
- © DHBK 2005 37/Chapter1 Chương 1 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 38/Chapter1 Thếhệệ3: Integrated circuits (1965-1980) • 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.
- © DHBK 2005 39/Chapter1 Thếhệệ3: Integrated circuits (1965-1980) • 7/4/1964 IBM đưa ra System/360, họmáy tính tương thích đầu tiên của IBM
- © DHBK 2005 40/Chapter1 Thếhệệ3: Integrated circuits (1965-1980) • 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ớngồi • Sau đĩ, Bill Gate và Paul Allen viết chương trình dịch BASIC cho Altair
- © DHBK 2005 43/Chapter1 Chương 1 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:4: VLSI VLSI (1980 (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:4: VLSI VLSI (1980 (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 hồn tồn mới: windows, biểu tượng, mouse Con chuột đầu tiên
- © DHBK 2005 46/Chapter1 Thếhệ4:4: VLSI VLSI (1980 (1980-?) • Năm 1986, siêu máy tính Cray-XMP với 4 bộxửlý đã đạt tốc độtính tốn là 840 MFlops.Nĩ được làm mát bằng nước
- © DHBK 2005 47/Chapter1 Thếhệ4:4: VLSI VLSI (1980 (1980-?) • Tốc độtính tố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
- © DHBK 2005 48/Chapter1 Chương 1 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 loloạại vi xửlýlý
- © DHBK 2005 50/Chapter1 Phân loloạại vi xửlýlý • BMW > 100 processors • Trung bình 1 cơng dân Mỹ~ 75 processors *Intelligent Transportation * *Cabin Air System (ITS) *Lighting Quality *Safety Systems *Engine Performance and Emission Control (Traction Control) Suspension * Digital Car and *Steering Controls * Gear Box *EntertainmentRadio Braking Control * Radio
- © DHBK 2005 51/Chapter1 Phân loloạại vi xửlý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 loloạại vi xửlý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
- © DHBK 2005 53/Chapter1 Chương 1 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 54/Chapter1 Chương 1 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 i D di r 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 i B di 2 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 i O di 8 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 i H di 16 i n
- © DHBK 2005 59/Chapter1 Chuyển đổi giữa các hệđếmm • 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
- © DHBK 2005 60/Chapter1 Chương 1 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 8 2 7 3 y 5 6 2 Tổng 8 8 3 5 • Cộng nhịphân Nhớ 0 0 1 1 1 1 1 x 1 0 0 1 1 0 1 1 y 1 0 1 0 1 1 1 Tổng 1 1 1 1 0 0 1 0
- © DHBK 2005 62/Chapter1 Trừnhịphân x 1 1 1 0 1 y 1 1 1 1 Mượn 1 1 1 0 Hiệu 0 1 1 1 0
- © DHBK 2005 63/Chapter1 NhânNhân nh nhịịphân • Nguyên tắc: cộng và dịch 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0
- © DHBK 2005 64/Chapter1 Chia nhịịphân 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 • Nguyên tắc: trừvà dịch
- © DHBK 2005 65/Chapter1 Chương 1 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 66/Chapter1 Biểu diễn bằng dấu và độlớn (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ốbbù 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ốbbù 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ốbbù 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
- © DHBK 2005 70/Chapter1 Chương 1 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)(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 LittleLittle 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
- © DHBK 2005 73/Chapter1 Sốthực (real number, floating point number) • Ví dụ: 1,234=1,234*100=0,1234*101= • 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
- © DHBK 2005 74/Chapter1 Sốthực (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 hố = 1 bit ẩn + 23 bit fraction Mantissa chuẩn hố: 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 hố mantissa: 0.1011=1.011*2-1 Biased exponent: -1 + 127=126=01111110 IEEE format: 0 01111110 0110000000000000000000
- © DHBK 2005 75/Chapter1 Sốthực (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 hố = 1 bit ẩn + 52 bit fraction s e-127 single precision: (-1) x 2 x (1.f)2 s e-1023 double precision: (-1) x 2 x (1.f)2
- © DHBK 2005 76/Chapter1 Sốthực (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 1038 (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 BCD khơng gĩi (unpacked BCD) : 1 0001 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
- © DHBK 2005 78/Chapter1 ASCIIASCII • 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 , N ^ n ~ 1111 SI US / ? O _ o DEL
- © DHBK 2005 79/Chapter1 Chương 1 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 80/Chapter1 Chương 1 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 PhPhốốii ghghéépp BBộộnhnhớớ ViVi xxửửlýlý Thiết bị vvàào/rao/ra MemoryMemory CPUCPU 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 ọ ệ (Arithmetic Logical Unit) Đ c mã l nh Thực hiện các phép tốn sốhọc ộ ừ C ng, tr , nhân chia Giải mã lệnh Thực hiện các phép tố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 1 M 8086 16 20 1 M 80186 16 20 1 M 80286 16 24 16 M 80386SX 16 24 16 M 80386DX 32 32 4 G 80486DX 32 32 4 G Pentium 64 32 4 G 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 4 G 68030 32 32 4 G 68040 32 32 4 G 68060 64 32 4 G PowerPC 64 32 4 G
- © DHBK 2005 1/Chapter2 Nội dungdung mơn họcc 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 bus địa chỉ BIU Các thanh AX EU 20 bit ghi đa năng BX CX DX Bus trong của CPU SP Các thanh ghi CS 16 bit dữliệu Các thanh ghi BP đoạn và con trỏ DS 20 bit địa chỉ con trỏ SI lệnh SS DI ES và chỉsố IP Bus dữliệu Logic ALU 16 bit điều khiển Các thanh ghi tạm thời bus Bus ngồi Khối điều khiển ALU của EU Hàng đợi lệnh Thanh ghi cờ
- © DHBK 2005 6/Chapter2 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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áácc thanhthanh 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 CCá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 1F000H Offset=F000 10000H 1 0 0 0 Địa chỉvật lý=Segment*16 + offset Thanh ghi đoạn Chếđộthực (real mode) 00000H
- © DHBK 2005 10/Chapter2 CCá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 CCá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 4 9 0 0 ES 43FFF Đoạn ngăn xếp Stack segment 34000 3 4 0 0 SS 30000 2FFFF Đoạn mã Code segment 20000 2 0 0 0 CS 1FFFF Đoạn dữliệu Data segment 10000 1 0 0 0 DS 00000
- © DHBK 2005 12/Chapter2 CCá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 0 A 2 8 SS d 0A27F e Data 0A0F0 0 A 0 F DS 0A0EF Code 090F0 0 9 0 F CS 00000
- © DHBK 2005 13/Chapter2 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ngồi giới hạn biểu diễn của nĩ trong khi thực hiện phép tố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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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íínhnh IBMIBM PC 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 BBảnn đđồồvùùngng nhnhớớ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 vvà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 VVùng nhớddành riêngriêng của 8088/8086 FFFFF Reset Bootstrap FFFF0 program jump 003FF Các vector ngắt 00000
- © DHBK 2005 33/Chapter2 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 34/Chapter2 Chếđđộđịa chỉthanhthanh ghi (Register Addressing Mode) • Dùng các thanh ghi nhưlà các tố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
- © DHBK 2005 35/Chapter2 Chếđộđđịịa chỉtức thì (Immediate Addressing Mode) • Tốn hạng đích là thanh ghi hoặc ơ nhớ • Tố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
- © DHBK 2005 36/Chapter2 Chếđộđđịịa chỉtrựựcc titiếpp (Direct(Direct Addressing Addressing Mode) Mode) • Một tốn hạng là địa chỉơ nhớchứa dữliệu • Tố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
- © DHBK 2005 37/Chapter2 ChChếđđộộđịa chỉgigiáánn titiếpp quaqua thanhthanh ghi (Register indirect Addressing Mode) • Một tốn hạng là thanh ghi chứa địa chỉcủa 1 ơ nhớ dữliệu • Tố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)
- © DHBK 2005 38/Chapter2 ChChếđđộộđịa chỉttươngng đđối cơsở (Based relative Addressing Mode) • Một tố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 • Tốn hạng kia chỉcĩ thểlà thanh ghi • Ví dụ: MOV CX, [BX]+10 ; Copy nội dung 2 ơ nhớliên tiếp cĩ đị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
- © DHBK 2005 39/Chapter2 ChChếđđộộđịa chỉttươngng đđốối chỉsố (Indexed relative Addressing Mode) • Một tố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 • Tốn hạng kia chỉcĩ thểlà thanh ghi • Ví dụ: MOV AX, [SI]+10 ; Copy nội dung 2 ơ nhớliên tiếp cĩ đị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
- © DHBK 2005 40/Chapter2 Chếđộđịa chỉtương đốối chỉsốcơsở ( Based Indexed relative Addressing Mode) • Ví dụ: MOV AX, [BX] [SI]+8 ; Copy nội dung 2 ơ nhớliên tiếp cĩ đị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 TTĩm tắắt các chếếđộđịa chỉ Chếđộđịa chỉ Tố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
- © DHBK 2005 42/Chapter2 Bỏchếđộngầm địnhnh thanhthanh ghi đoạnn (Segment(Segment override) 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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ã hố lệnh củaa 80868086 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ã hố lệnh củaa 80868086 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ã hố lệnh củaa 80868086 • 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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ểnn ddữ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ểnn ddữliệu • Khảnăng kết hợp tố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ểnn ddữliệu • Lệnh XCHG Dùng đểhố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: tố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ểnn ddữ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ểnn ddữliệu • Ví dụvềlệnh PUSH PUSH AX PUSH BX SP 1300A 1300A 1300A 13009 13009 12 13009 12 SP 13008 13008 34 13008 34 13007 13007 13007 78 SP 13006 13006 13006 56 13005 13005 13005 13004 13004 13004 13003 13003 13003 13002 13002 13002 13001 13001 13001 13000 13000 13000 SS 1 3 0 0 SS 1 3 0 0 SS 1 3 0 0 SP 0 0 0 A SP 0 0 0 8 SP 0 0 0 6 AX 1 2 3 4 AX 1 2 3 4 BX 7 8 5 6
- © DHBK 2005 54/Chapter2 Cáác lệệnh di chuyểnn ddữ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ểnn ddữliệu • Ví dụlệnh POP POP DX 1300A 1300A 13009 12 13009 12 13008 34 13008 34 SP 13007 78 13007 78 SP 13006 56 13006 56 13005 13005 13004 13004 13003 13003 13002 13002 13001 13001 13000 13000 SS 1 3 0 0 SS 1 3 0 0 SP 0 0 0 6 SP 0 0 0 8 DX 3 2 5 4 DX 7 8 5 6
- © DHBK 2005 56/Chapter2 Cáác lệệnh di chuyểnn ddữ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ểnn ddữ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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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áácc llệệ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 tốn hạng Cú pháp: ADD Đích, nguồn Thực hiện: Đích=Đích + nguồn Giới hạn: tố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áácc llệệnh sốhọc và logic • Lệnh ADC Lệnh cộng cĩ nhớhai tốn hạng Cú pháp: ADC Đích, nguồn Thực hiện: Đích=Đích + nguồn+CF Giới hạn: tố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: tố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áácc llệệ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áácc llệệ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áácc llệệnh sốhọc và logic • Lệnh INC Lệnh cộng 1 vào tố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áácc llệệnh sốhọc và logic • Lệnh AND Lệnh AND logic 2 tốn hạng Cú pháp: AND Đích, nguồn Thực hiện: Đích=Đích And nguồn Giới hạn: tố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à xố 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 tốn hạng • Lệnh NEG: xác định sốbù 2 của tốn hạng
- © DHBK 2005 65/Chapter2 Cáácc llệệ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: tố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áácc llệệ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áácc llệệ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áácc llệệ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 0 • Lệnh SHL Lệnh dịch trái logic tương tựnhưSAL
- © DHBK 2005 69/Chapter2 Cáácc llệệ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áácc llệệ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 0 Chú ý: Trong các lệnh dịch và quay, tốn hạng khơng được là thanh ghi đoạn
- © DHBK 2005 71/Chapter2 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 nhnhảy khơng đđiiềề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: EB Độ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 nhnhảy khơng đđiiềề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 nhnhảy khơng đđiiềề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: EA 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ệnhnh nhnhảảy ccĩĩ điiề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ệnhnh llặặ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 LLệệ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 LLệệnh CALL CALL xa (far call): tương tựnhưnhảy xa Gọi chương trình con ởngồ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 LLệệ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 LLệệ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 ChChương 2: Bộvi xửlý IntelIntel 8088/8086 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ã hố 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 địaa chchỉỉ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 tồ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 địaa chchỉỉ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 tồ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 GDOA Limit 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 Base(B31-B24) 6 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 địaa chchỉỉ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 dungdung mơn họcc 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ììnhnh hhợp ngữvớii 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ììnhnh hhợp ngữvớii 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ììnhnh hhợp ngữvớii 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ììnhnh hhợp ngữ 1. .Model Small khai báo kiểu kích thước bộnhớ 2. .Stack 100 khai báo đoạn ngăn xếp 3. .Data 4. Tbao DB ‘Chuoi da sap xep:’, 10, 13 5. 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. MOV DS, AX 11. 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 17. MOV AL, [DI] ;AL chua phan tu max 18. TIMMAX: chú thích bắt đầu 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. DOICHO Proc 35. PUSH AX kết thúc chương trình chính 36. MOV AL, [SI] 37. XCHG AL, [DI] 38. MOV [SI], AL 39. POP AX bắt đầu chương trình con 40. RET 41. DOICHO Endp 42. END MAIN kết thúc đoạn mã
- © DHBK 2005 6/Chapter3 Cú pháp củủa chương trììnhnh hhợp ngữ • Tên Mã lệnh Các tố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ììnhnh hhợp ngữvớii 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ììnhnh • 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ììnhnh hhợp ngữvớii 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ếnn vvà 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ếnn vvà hằng • Biến từ: Tên DW gia_trị_khởi đầu 1300A Ví dụ: 13009 13008 9 W1 DW 4 13007 8 W2 DW ? 13006 7 • Biến mảng: 13005 6 M1 DB 4, 5, 6, 7, 8, 9 13004 5 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ếnn vvà hằng • Biến mảng 2 chiều: 1300A 1 6 3 13009 4 2 5 13008 5 13007 2 13006 4 13005 M1 DB 1, 6, 3 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ếnn vvà 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ììnhnh hhợp ngữvớii 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 hhợợ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ệnh và dữliệu gĩi gọn trong một đoạn Small (nhỏ) mã lệnh nằm trong 1 đoạn, dữliệu 1 đoạn Medium (tB) mã lệnh nằm trong nhiều đoạn, dữliệu 1 đoạn Compact (gọn) mã lệnh nằm trong 1 đoạn, dữliệu trong nhiểu đoạn Large (lớn) mã lệnh nằm trong nhiều đoạn, dữliệu trong nhiều đoạn, khơng 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 trong nhiều đoạn, các mảng cĩ thểlớn hơn 64 K
- © DHBK 2005 16/Chapter3 Khung của chương trìình hhợợ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 hhợợ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 hhợợ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 ;các lệnh của chương trình ;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 hhợợ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 hhợợ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 ;các lệnh của chương trình 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 hhợợ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 hhợợ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ììnhnh hhợp ngữvớii 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ộtt chương trtrình hợp ngữ Tạo ra tệp văn bản của chương trình *.asm Dùng MASM đểdịch ra mã máy *.obj Dùng LINK đểnối tệp . obj thành *.exe khơng Dịch được ra .com? 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ììnhnh hhợp ngữvớii 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, thố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 ế 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ặpp FORFOR-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, thốt INC CX ; sai, thêm 1 ký tựvào tổng JMP TIEP ; đọc tiếp End_while:
- © DHBK 2005 31/Chapter3 CCấuu trtrú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ììnhnh hhợp ngữvớii 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ệuu • 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ụththể • 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ụththể • 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 NNộộii dungdung mơnmơn hhọọcc 1. Giớithiệu chung về hệ vi xử lý 2. Bộ vi xử lý Intel 8088/8086 3. Lậptrìnhhợpngữ cho 8086 4. Tổ chứcvàoradữ liệu 5. Ngắtvàxử lý ngắt 6. Truy cậpbộ nhớ trựctiếpDMA 7. Các bộ vi xử lý trên thựctế
- © DHBK 2005 2/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 3/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 Các tín hiệucủ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ờigiancủacáclệnh ghi/đọc • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 4/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 ; Các tín hiệucủ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ờigiancủacáclệnh ghi/đọc • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 5/Chapter4 CCáácc chânchân ttíínn hihiệệuu ccủủaa 80868086 M/IO (S2) 16 đường địachỉ thấp/dữ liệu DT/R(S1) AD0-AD15 RD Tín hiệu điều A16/S3 WR (LOCK) khiểnhệ thống A17/S4 DEN (S0) 4 đường A18/S5 SS0 bus C/ địachỉ cao A19/S6 READY BHE/S7 NMI 8086 INTR Tín hiệu điều RESET HOLD(RQ/GT0) khiển CPU MN/MX HLDA(RQ/GT1) Tín hiệu điều INTA(QS1) khiểnbus TEST CLK ALE(QS0) đồng hồ Vcc và nguồn GND GND
- © DHBK 2005 6/Chapter4 CCáácc chânchân ttíínn hihiệệuu ccủủaa 80868086 • AD0-AD15: ALE =1: 16 chân địachỉ cho bộ nhớ hoặcI/O ALE=0: 16 đường dữ liệu • A19/S6-A16/S3 ị ỉ 4 bit đ ach cao S4 S3 4 bit trạng thái: Ư S6 luơn bằng 1 0 0 ES Ư S5: trạng thái củaIF 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 đợivàthựchiệnlệnh NOP =1, lệnh WAIT đợi đến khi TEST=0
- © DHBK 2005 7/Chapter4 CCáácc chânchân ttíínn hihiệệuu ccủủaa 80868086 • NMI (Non-maskable interrupt) NMI=1 => thựchiệnINT 2 • RESET 1: khởi động lạihệ thống và thựchiệnlệ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 đọcdữ liệutừ bộ nhớ hoặcthiếtbị ngoạivi • Các chân ở chế độ min M/IO Ư 1: truy cậpbộ nhớ Ư 0: truy cậpthiếtbị ngoạivi I/O WR Ư 0: dữ liệuhợplệ tạibus dữ liệu để đưarabộ nhớ hoặcthiếtbị ngoạivi
- © DHBK 2005 8/Chapter4 CCáácc chânchân ttíínn hihiệệuu ccủủaa 80868086 • 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ềndữ liệu đi Ư 0: bus dữ liệu đang nhậndữ liệu DEN: Data enable Ư 0: kích hoạt đệmdữ liệu ngồi HOLD Ư 1: CPU tạmdừng hoạt động để nhường quyền điềukhiể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 CCáácc chânchân ttíínn hihiệệuu ccủủaa 80868086 • Các chân ở chế độ Max S2, S1, S0 Ư ghép nốivới điềukhiển bus 8288 S2 S1 S0 chu kỳđiềukhiểncủa bus 0 0 0 chấpnhậnyêucầungắt 0 0 1 đọcthiếtbị ngoạivi 0 1 0 Ghi thiếtbị ngoạivi 0 1 1 Dừng 1 0 0 đọcmãlệnh 1 0 1 đọcbộ nhớ 1 1 0 ghi bộ nhớ 1 1 1 bus rỗi
- © DHBK 2005 10/Chapter4 CCáácc chânchân ttíínn hihiệệuu ccủủaa 80868086 • 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ấpnhậntreobus củaCPU Ư GT0 cĩ mức ưutiêncaohơnGT1 LOCK Ư 0: cấmcácbộ vi xử lý khác dùng bus QS0 và QS1: Ư trạng thái của hàng đợilệnh QS1 QS0 Trạng thái hàng đợilệnh 0 0 khơng hoạt động 0 1 đọcbyte mãlệnh đầutiên 1 0 hàng đợirỗng 1 1 đọcbyte tiếptheo
- © DHBK 2005 11/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 Các tín hiệucủ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ờigiancủacáclệnh ghi/đọc • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 12/Chapter4 PhânPhân kênhkênh vvàà đđệệmm chocho ccáácc busbus •Vìsaophải phân kênh và khuyếch đại đệm: Các bus địachỉ và dữ liệu dùng chung chân Nâng cao khả năng tảicủa bus •Cácvi mạch phân kênh và đệm: 74LS373: phân kênh 74LS245: đệmdữ liệu2 chiều 74LS244: đệm3 trạng thái theo 1 chiều
- © DHBK 2005 13/Chapter4 PhânPhân kênhkênh vvàà đđệệmm chocho ccáácc busbus M/IO M/I RD ‘244 RD WR WR BHE/S7 BH A19/S6 74LS373 A19 A16/S3 G A16 A15 A 8 A 7 8086 A 0 ALE GG74LS373 74LS373 AD15 D15 ‘245 AD8 G DIR D8 AD7 D7 ‘245 AD0 GDIR D0 DEN DT/R
- © DHBK 2005 14/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 Các tín hiệucủ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ờigiancủacáclệnh ghi/đọc • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 15/Chapter4 MMạạchch ttạạoo xungxung nhnhịịpp 82848284 vvàà mmạạchch đđiiềềuu khikhiểểnn busbus 82888288
- © DHBK 2005 16/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 Các tín hiệucủ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ờigiancủacáclệnh ghi/đọc • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 17/Chapter4 BiBiểểuu đđồồ ththờờii giangian
- © DHBK 2005 18/Chapter4 BiBiểểuu đđồồ ththờờii giangian • Các ký hiệu trong biểu đồ thờigian: 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 23
- © DHBK 2005 19/Chapter4 BiBiểểuu đđồồ ththờờii giangian •Một chu kỳ ghi/đọccủa CPU (chu kỳ bus): 4 chu kỳ xung nhịpT 5 MHz: 4*200 ns=800 ns T1: ƯCPU đưarađịachỉ củabộ 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ếulà lệnh ghi ƯCPU đọctínhiệu READY tạicuối chu kỳ củaT2 để xử lý trong chu kỳ tiếp theo khi nĩ làm việcvớibộ nhớ hay I/O chậm T3: ƯNếu READY=0 => T3 trở thành chu kỳđợi: Tw=n*T ƯTạicuốiT3, CPU sẽ đọcdữ liệunếulàlệnh đọcdữ liệu T4: ƯCác tín hiệu trên bus đượcgiải phĩng ƯWR chuyểntừ 0 lên 1 kích hoạt quá trình ghi củabộ nhớ
- © DHBK 2005 20/Chapter4 BiBiểểuu đđồồ ththờờii giangian
- © DHBK 2005 21/Chapter4 BiBiểểuu đđồồ ththờờii giangian
- © DHBK 2005 22/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ Các loạibộ nhớ bán dẫn Giảimãđịachỉ cho bộ nhớ Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 23/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ ; Các loạibộ nhớ bán dẫn Giảimãđịachỉ cho bộ nhớ Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 24/Chapter4 CCáácc loloạạii bbộộ nhnhớớ bbáánn ddẫẫnn •Bộ nhớ khơng bị mấtdữ 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ấtdữ 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 CCáácc loloạạii bbộộ nhnhớớ bbáánn ddẫẫnn A0 D0 D1 Tín hiệu A1 Dữ liệu địachỉ 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 EPROMEPROM Isolator Floating Gate Gate Source Drain n+ n+ p
- © DHBK 2005 27/Chapter4 EPROMEPROM 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 EPROMEPROM 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 EPROMEPROM 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:EPROM: readingreading Vcc Vcc Vcc Vcc Address 2-to-4 Decoder 2 MSB 4 2 LSB 2-to-4 Mux Data
- © DHBK 2005 31/Chapter4 Read(0x6) EPROM:EPROM: readingreading Vcc Vcc Vcc Vcc 0110 2-to-4 Decoder 01 4 10 2-to-4 Mux 0
- © DHBK 2005 32/Chapter4 Read(0x8) EPROM:EPROM: readingreading Vcc Vcc Vcc Vcc 1000 2-to-4 Decoder 10 4 00 2-to-4 Mux 1
- © DHBK 2005 33/Chapter4 EPROM:EPROM: erasingerasing UV light Vcc Vcc Vcc Vcc Address 2-to-4 Decoder 2 MSB 4 2 LSB 2-to-4 Mux Data
- © DHBK 2005 34/Chapter4 Write 1 at 0x2 EPROM:EPROM: writingwriting 12V Vcc Vcc Vcc Vcc Address0010 2-to-4 Decoder 2 00 MSB 4 2 10 LSB 2-to-4 Mux Data
- © DHBK 2005 35/Chapter4 EPROMEPROM • Ghi vào EPROM Dùng mạch nạpvới điệnáp12 V 1 ms mộtbit • Xố EPROM 20 phút dướitiatử 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 EPROMEPROM •Vídụ: 2716 EPROM U2 8 9 Address 7 A0 O0 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 19 A9 A10 Output 20 OE 18 120 100 CE 21 VPP 450 2716
- © DHBK 2005 37/Chapter4 SoSo ssáánhnh ccáácc loloạạii ROMROM LoạiROM Thờigianghi Thờigianđọc số lầnghi 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ệuGBits 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 SRAMSRAM 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 SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc Acts as a resistor
- © DHBK 2005 40/Chapter4 Storage SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc R 5V 0V Current Assumption Stable situation; stores a ‘1’ Dissipates continuously
- © DHBK 2005 41/Chapter4 Storage SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc R 0V 5V Current Assumption Stable situation; stores a ‘0’ Dissipates continuously
- © DHBK 2005 42/Chapter4 Reading of a ‘1’SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc R 5V 0V Current 1 0
- © DHBK 2005 43/Chapter4 Reading of a ‘0’SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc R 0V 5V Current 0 1
- © DHBK 2005 44/Chapter4 Writing of a ‘1’ SRAMSRAM bitbit cellcell VV cccc VVcccc Word VVcccc Bit line RR Bit line inverseinverse 0V5V5V 5V0V0V Current Current Current W.D’W.D’ W.DW.D
- © DHBK 2005 45/Chapter4 SRAMSRAM • Đặc điểm: 6 transistors 1 bit: đắt! Bị mấtdữ liệukhimấtnguồn nhanh: thờigianđọc và ghi 5 ns Liên tụctiêuthụ 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ếtbị chạypin •Vídụ: 4016 (2K*8), 250 ns A0-A10 D0-D7 OE WE CS
- © DHBK 2005 46/Chapter4 Bit DRAMDRAM 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
- © DHBK 2005 47/Chapter4 DRAMDRAM 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 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
- © DHBK 2005 48/Chapter4 DRAMDRAM bitbit cellcell Vcc/2 1 bit Pre- cell charge Word line Refresh Vcc/2 Vcc/2 Vcc/2 Bit line Sense amplifier MUX
- © DHBK 2005 49/Chapter4 Storage DRAMDRAM bitbit cellcell Vcc/2 Pre- charge Word line 5V 0V 5V 0V 5V 5V Refresh V /2 V /2 V /2 cc cc cc 30 fF in .2 μm Stores .5 M e- MUX
- © DHBK 2005 50/Chapter4 Read DRAMDRAM bitbit cellcell Vcc/2 Pre- charge Word line 2.55V5V 2.45V0V 2.55V5V 2.55V2.5V5V 0V 5V 5V Refresh Vcc/2 Vcc/2 Vcc/2 MUX
- © DHBK 2005 51/Chapter4 DRAMDRAM bitbit cellcell •Chukỳđọc 1. Precharge 2. RAS (Row Address Select): đọctấtcả các bit trong hàng đượcchọn. Việc đọc này làm giá trị điệnáptrêntụ điệnbị thay đổi 3. Khuếch đạitínhiệu trên các cộttương ứng 4.a CAS (Column Address Select): chọn1 cộtvàđưadữ liệu ra ngồi 4.b Refresh: khơi phụclạidữ liệu ban đầucủa hàng đã được chọn ở bước2.
- © DHBK 2005 52/Chapter4 Write DRAMDRAM bitbit cellcell Vcc/2 Pre- charge Word line 2.55V5V 2.45V5V0V 2.55V5V 0V 5V 5V Refresh Vcc/2 Vcc/2 Vcc/2 MUX
- © DHBK 2005 53/Chapter4 DRAMDRAM bitbit cellcell •Chukỳ ghi 1. Precharge 2. RAS (Row Address Select): đọctấtcả các bit trong hàng đượcchọn. Việc đọc này làm giá trị điệnáptrêntụ điệnbị thay đổi 3. Khuếch đạitínhiệu trên các cộttương ứng 4.a CAS (Column Address Select): chọn1 cộtvàđưagiátrị cầnghivàocột đĩ 4.b Refresh: khơi phụclạidữ liệu ban đầucủa hàng đã được chọn ở bước2 trừ bit vừamới được ghi vào.
- © DHBK 2005 54/Chapter4 Refresh DRAMDRAM bitbit cellcell Vcc/2 Pre- charge Word line 2.51V5V3V 2.49V0V2V 2.51V5V3V 2.49V2V0V 2.51V3V5V 2.51V3V5V Refresh Vcc/2 Vcc/2 Vcc/2 MUX
- © DHBK 2005 55/Chapter4 DRAMDRAM bitbit cellcell •Chukỳ làm tươi 1. Precharge 2. RAS (Row Address Select): đọctấtcả các bit trong hàng đượcchọn. Việc đọc này làm giá trị điệnáptrêntụ điệnbị thay đổi 3. Khuếch đạitínhiệu trên các cộttương ứng 4. Refresh: khơi phụclạidữ liệuban đầucủa hàng đã được chọn ở bước2.
- © DHBK 2005 56/Chapter4 DRAMDRAM • Đặc điểm: 1 transistor 1 bit: rẻ, tuy nhiên việc điềukhiển quá trình làm tươilàmtăng giá thành củaDRAM 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ờigianđọc và ghi 50 ns Mỗimột hàng phải đượclàmtươisau4 ms ƯNếu cĩ 1024 hàng, chu kỳ làm tươisẽ là 4 μs Kích thước: 4 Gbits • Đượcdùnglàmbộ 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 địachỉ cột ố ị ỉ OE WE RAS: cho phép ch t đ ach hàng CAS RAS
- © DHBK 2005 57/Chapter4 DRAMDRAM • Đặc điểm: 1 transistor 1 bit: rẻ, tuy nhiên việc điềukhiển quá trình làm tươilàmtăng giá thành củaDRAM 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ờigianđọc và ghi 50 ns Mỗimột hàng phải đượclàmtươisau4 ms ƯNếu cĩ 1024 hàng, chu kỳ làm tươisẽ là 4 μs Kích thước: 4 Gbits • Đượcdùnglàmbộ 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 địachỉ cột ố ị ỉ OE WE RAS: cho phép ch t đ ach hàng CAS RAS
- © DHBK 2005 58/Chapter4 DRAMDRAM • Examples of DRAM: SIMM (Single Inline Memory Module): 72 pins DIMM (Dual Inline Memory Module): 168 pins 72-Pin SIMM
- © DHBK 2005 59/Chapter4 SRAMSRAM DRAMDRAM Cost SRAM DRAM Refresh controller Size
- © DHBK 2005 60/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ Các loạibộ nhớ bán dẫn ; Giảimãđịachỉ 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ớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 61/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng ccổổngng NANDNAND •Vídụ: Ghép EPROM 2716 (2K * 8) với 8088 • Phân tích: 2716: 11 đường địachỉ A10-A0 8088: 20 đường địachỉ 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ạnkhở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
- © DHBK 2005 62/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng ccổổngng NANDNAND 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 A0-A10 A17 Bus 8088 D D0-D7 A16 Bus A15 A14 CS OE A13 A12 A 11 RD IO/M
- © DHBK 2005 63/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng bbộộ gigiảảii mãmã •Vídụ: Dùng EPROM 2764 (8K*8) để ghép thành bộ nhớ 64 K cho 8088 bắt đầutừ địachỉ F0000H • Phân tích: Địachỉ bắt đầu F0000H => địachỉ 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 1 • F1FFF: 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 • F2000: 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 2 • F3FFF: 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 • F4000: 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 3 • F5FFF: 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 • 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
- © DHBK 2005 64/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng bbộộ gigiảảii mãmã •DùngbU1 ộ 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 B Y1 3 13 C Y2 x x x x 1 x 1 1 1 1 1 1 1 1 12 Y3 6 11 x x x x x 0 1 1 1 1 1 1 1 1 G1 Y4 4 10 0 0 0 0 0 1 0 1 1 1 1 1 1 1 G2A Y5 5 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
- © DHBK 2005 65/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng bbộộ gigiảảii mãmã •Dùngbộ giải mã 3-8 74LS138 A0-A12 A0-A12 A0-A10 D0-D7 D0-D7A0-A10 D0-D72764A0-A10 U1 RD OE D0-D72764 OE D0-D72764A0-A10 A13 1 15 CS OE 2764A0-A10 A Y0 D0-D7 2 14 CS OE A0-A10 A14 B Y1 D0-D72764 3 13 CS A0-A10 C Y2 OE D0-D72764 A15 12 CS Y3 OE D0-D72764 6 11 G1 Y4 CS OE 2764 A16 4 10 CS OE G2A Y5 IO/M 5 9 CS G2B Y6 7 CS A17 Y7 A18 A19 74LS138
- © DHBK 2005 66/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng bbộộ gigiảảii mãmã •Dùngbộ 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 đầutừ địachỉ F0000H
- © DHBK 2005 67/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng PROMPROM • Dùng PROM TPB28L42 (512*8) A0-A12 A0-A12 A0-A10 D0-D7 D0-D7A0-A10 D0-D72764A0-A10 RD OE D0-D72764 OE D0-D72764A0-A10 A13 A O A0-A10 0 0 CS OE D0-D72764 A14 A O A0-A10 1 1 CS OE D0-D72764 A15 A O A0-A10 2 2 CS OE D0-D72764 A16 A 3 O CS OE D0-D72764 A 3 A17 4 TPB28L42 CS OE 2764 A O4 A18 5 CS OE A O5 A19 6 CS A O6 7 CS A O 8 G 7 IO/M
- © DHBK 2005 68/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng PALPAL
- © DHBK 2005 69/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ Các loạibộ nhớ bán dẫn Giảimãđịachỉ cho bộ nhớ ; Ghép nối 8088 vớibộ nhớ ;Ghép nối 8088 vớiROM ;Ghép nối 8088 với SRAM ;Ghép nối 8088 với DRAM • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 70/Chapter4 GhGhéépp nnốốii 80888088 vvớớii bbộộ nhnhớớ • Nguyên tắc: Ghép trựctiếp: ƯThờigiantruycậpbộ nhớ của CPU > thời gian truy cậpcủabộ nhớ + thờigiangiảimãđịachỉ Ghép cĩ chèn thêm thờigianđợicủaCPU ƯThờigiantruycậpbộ nhớ của CPU < thời gian truy cậpcủabộ nhớ + thờigiangiảimãđịachỉ 8088 hoạt động ở 5 MHz cĩ thời gian truy cậpbộ nhớ 420 ns
- © DHBK 2005 71/Chapter4 GhGhéépp nnốốii 80888088 vvớớii ROMROM •Vídụ: ghép nối 8088 với EPROM 2732-450 ns A0-A11 A0-A11 A0-A10 D0-D7 D0-D7A0-A10 D0-D72732A0-A10 U1 RD OE D0-D72764 OE D0-D72764A0-A10 A12 1 15 F8000-F8FFF CS OE 2764A0-A10 A Y0 D0-D7 2 14 F9000-F9FFF CS OE A0-A10 A13 B Y1 D0-D72764 3 13 CS A0-A10 C Y2 OE D0-D72764 A14 12 CS Y3 OE D0-D72764 6 11 G1 Y4 CS OE 2764 A15 4 10 CS OE G2A Y5 IO/M 5 9 CS G2B Y6 A16 7 FF000-FFFFF CS A17 Y7 A18 Bộ tạoTw 74LS138 A19 Tới chân RDY1 của 8284
- © DHBK 2005 72/Chapter4 GhGhéépp nnốốii 80888088 vvớớii SRAMSRAM •Vídụ: ghép nối 8088 với SRAM 62256 (32K*8) để đượcbộ nhớ 256 KB, bắt đầutừ địachỉ 00000H A0-A14 A0-A14 A0-A10 D0-D7 D0-D7A0-A10 D0-D762256A0-A10 U1 RD OE D0-D72764 WR WOEE D0-D72764A0-A10 A15 1 15 00000-07FFF CS OE 2764A0-A10 A Y0 D0-D7 2 14 08000-0FFFF CS OE A0-A10 A16 B Y1 D0-D72764 3 13 10000-17FFF CS A0-A10 C Y2 OE D0-D72764 A17 12 CS Y3 OE D0-D72764 6 11 A18 G1 Y4 CS OE 2764 4 10 CS OE G2A Y5 IO/M 5 9 CS G2B Y6 7 38000-3FFFF CS Y7 A19 74LS138
- © DHBK 2005 73/Chapter4 GhGhéépp nnốốii 80888088 vvớớii DRAMDRAM •CầncĩDRAM controller: Dồn kênh 2 loạitínhiệu địachỉ cho mỗimạch nhớ và cung cấp xung cho phép chốt địachỉ RAS và CAS Cung cấptínhiệuviệcghiđọcbộ nhớ Làm tươibộ nhớ trong thờigianthíchhợp Đảmbảo khơng cĩ xung đột trong hoạt động ghi đọcvới cơng việclàmtươi
- © DHBK 2005 74/Chapter4 GhGhéépp nnốốii 80888088 vvớớii DRAMDRAM •Vídụ: ghép 8088 với TMS 4464 (64K*4) DRAM để đượcbộ nhớ 128 KB, bắt đầutại địachỉ 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 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi
- © DHBK 2005 76/Chapter4 GhGhéépp nnốốii 80868086 vvớớii bbộộ nhnhớớ FFFFF FFFFE 8088 8086 FFFFD FFFFC FFFFB FFFFA 8 bit 16 bit IO/M M/IO BHE 00005 00004 00003 00002 BHE A0 Chứcnăng 00001 00000 Bank cao Bank thấp 0 0 chọncả 2 bank (bank lẻ) (Bank chẵn) 0 1 chọn bank cao 1 0 chọn bank thấp 1 1 khơng chọnbank nào
- © DHBK 2005 77/Chapter4 GhGhéépp nnốốii 80868086 vvớớii bbộộ nhnhớớ •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 GhGhéépp nnốốii 80868086 vvớớii bbộộ nhnhớớ A19 A18 A A1-A11 A0-A10 17 D0-D7 A D0-D7 16 2716 A15 A14 CS OE A13 A12 M/IO RD A0 A19 A18 A A1-A11 A0-A10 17 D8-D15 A D0-D7 16 2716 A15 A14 CS OE A13 A12 M/IO RD BHE
- © DHBK 2005 79/Chapter4 GhGhéépp nnốốii 80868086 vvớớii bbộộ nhnhớớ BHE HRD RD A1-A11 A0-A10 D0-D7 D0-D7 LRD 2716 A0 CS OE LRD A19 A18 A A1-A11 A0-A10 17 D8-D15 A D0-D7 16 2716 A15 A14 CS OE A13 A12 M/IO HRD
- © DHBK 2005 80/Chapter4 GhGhéépp nnốốii 80868086 vvớớii bbộộ nhnhớớ •Vídụ: ghép nối 8086 với SRAM 62256 (32K*8) để đượcbộ nhớ 256 KB, bắt đầutừ địachỉ 00000H BHE HWR WR LWR A0
- © DHBK 2005 81/Chapter4 GhGhéépp nnốốii 80868086 vvớớii bbộộ nhnhớớ •Vídụ: thiếtkế hệ thống nhớ cho 8086 với64 KB EPROM và 128 KB SRAM sử dụng SRAM 62256 (32K*8) và EPROM 27128 (16K*8)
- © DHBK 2005 82/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi Các kiểugiaotiếpgiữavi xử lý và thiếtbị ngoạivi Các kiểu ghép nốivào/ra Giảimãđịachỉ cho các thiếtbị vào/ra Mạch ghép nối vào ra song song lập trình được 8255A Mạch điềukhiển bàn phím/màn hình lập trình được 8279 Bộ định thờilập trình được 8254 Giao tiếp truyền thơng lập trình được 16550 Bộ biến đổisố tương tự DAC0830 và bộ biến đổitương tự số ADC0804
- © DHBK 2005 83/Chapter4 ChChươươngng 4:4: TTổổ chchứứcc vvààoo rara ddữữ liliệệuu •Cáctínhiệucủa 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 vớibộ nhớ • Ghép nối 8086 vớibộ nhớ • Ghép nốivớithiếtbị ngoạivi Các kiểugiaotiếpgiữavi xử lý và thiếtbị ngoạivi Các kiểu ghép nốivào/ra Giảimãđịachỉ cho các thiếtbị vào/ra Mạch ghép nối vào ra song song lập trình được 8255A Mạch điềukhiển bàn phím/màn hình lập trình được 8279 Bộ định thờilập trình được 8254 Giao tiếp truyền thơng lập trình được 16550 Bộ biến đổisố tương tự DAC0830 và bộ biến đổitương tự số ADC0804
- © DHBK 2005 84/Chapter4 CCáácc kikiểểuu giaogiao titiếếpp gigiữữaa vivi xxửử lýlý vvàà thithiếếtt bbịị ngongoạạii vivi 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
- © DHBK 2005 85/Chapter4 CCáácc kikiểểuu giaogiao titiếếpp gigiữữaa vivi xxửử lýlý vvàà thithiếếtt bbịị ngongoạạii vivi •Giaotiếpkiểuthămdị, mĩcnối (handshaking) 1. CPU kiểm tra trạng thái củathiếtbị ngoạivi 2. Nếuthiếtbị ngoạivi sẵn sàng trao đốidữ liệuviệctraođốisẽ được thựchiệnbởitínhiệumĩcnối 3. Nếuthiếtbị ngoạivi chưasẵn sàng, CPU sẽ thựchiện cơng việc khác và quay lạibước1 •Giaotiếpbằng ngắt (Interrupt) 1. Thiếtbị ngoạivi muốn trao đổidữ liệuvới CPU, nĩ sẽ gửitínhiệu yêu cầungắttới chân INTR củaCPU 2. CPU chấpnhậnyêucầungắtbằng cách gửitínhiệuINTA tớithiết bị ngoạivi 3. CPU thựchiệnchương trình con phụcvụ ngắt •Giaotiếpbằng truy cậpbộ nhớ trựctiếp(DMA) 1. Thiếtbị ngoạivi muốn truy cậptrựctiếpbộ nhớ khơng thơng qua CPU, nĩ đưatínhiệuyêucầutới chân HOLD của CPU thơng qua khối điều khiểnDMA 2. CPU chấpnhậnvàgửitínhiệu HLDA tớikhối điều khiểnDMA và treo các bus 3. Khối điều khiểnDMA sẽ điều khiểnviệctraođổidữ liệugiữathiết bị ngoạivi vàbộ nhớ