Bài giảng Kỹ thuật vi xử lý Microprocessors - Phạm Ngọc Nam

pdf 525 trang phuongnguyen 3400
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:

  • pdfbai_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

  1. Kỹỹthuthuậtt vivi xxửửlýlý Microprocessorsicroprocessors Giảng viên: Phạm Ngọc Nam
  2. © 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
  3. © 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ế
  4. © 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
  5. © 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ế
  6. © 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
  7. © 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ý
  8. © 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ý
  9. © 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ý
  10. © 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
  11. © 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
  12. © 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í
  13. © 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ý
  14. © 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
  15. © 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
  16. © 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
  17. © DHBK 2005 17/Chapter1 Thếếhệ0: Mechanical (1642-1945)
  18. © 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)
  19. © 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
  20. © 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.
  21. © 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)
  22. © 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.
  23. © 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!!
  24. © 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ý
  25. © 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
  26. © 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)
  27. © 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
  28. © 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ý
  29. © 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
  30. © 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.
  31. © DHBK 2005 31/Chapter1 Thếhệ1:1: Vacuum Vacuum tubes tubes (1945 (1945-1955) • Một magnetic core lưu trữ256 bits
  32. © 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
  33. © 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
  34. © 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ý
  35. © 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
  36. © 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)
  37. © 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ý
  38. © 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.
  39. © 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
  40. © 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
  41. © 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ỉ
  42. © 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
  43. © 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ý
  44. © 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.
  45. © 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
  46. © 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
  47. © 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
  48. © 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ý
  49. © DHBK 2005 49/Chapter1 Phân loloạại vi xửlýlý
  50. © 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
  51. © 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
  52. © 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
  53. © 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ý
  54. © 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ý
  55. © 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
  56. © 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
  57. © 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
  58. © 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
  59. © 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
  60. © 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ý
  61. © 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
  62. © 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
  63. © 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
  64. © 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
  65. © 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ý
  66. © 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)
  67. © 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)
  68. © 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
  69. © 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
  70. © 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ý
  71. © 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
  72. © 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
  73. © 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
  74. © 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
  75. © 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
  76. © 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
  77. © 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
  78. © 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
  79. © 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ý
  80. © 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ý
  81. © 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
  82. © 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
  83. © 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
  84. © 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
  85. © 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ế
  86. © 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
  87. © 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
  88. © 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
  89. © 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ờ
  90. © 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
  91. © 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)
  92. © 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
  93. © 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
  94. © 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
  95. © 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
  96. © 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
  97. © 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
  98. © 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
  99. © 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
  100. © 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
  101. © 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
  102. © 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)
  103. © 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
  104. © 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
  105. © 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
  106. © 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
  107. © 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
  108. © DHBK 2005 24/Chapter2 Intel 8088 •ChếđộMin và chếđộMax: MN/MX = 1 chếđộMin = 0 chếđộMax với bus controller 8288
  109. © DHBK 2005 25/Chapter2 Intel 8086
  110. © 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
  111. © 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
  112. © 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
  113. © 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
  114. © 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
  115. © 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
  116. © 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
  117. © 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
  118. © 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
  119. © 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
  120. © 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
  121. © 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)
  122. © 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
  123. © 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
  124. © 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
  125. © 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
  126. © 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
  127. © 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
  128. © 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
  129. © 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
  130. © 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
  131. © 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
  132. © 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
  133. © 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]
  134. © 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
  135. © 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]
  136. © 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
  137. © 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
  138. © 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ờ
  139. © 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
  140. © 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
  141. © 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
  142. © 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
  143. © 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
  144. © 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
  145. © 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
  146. © 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
  147. © 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]
  148. © 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
  149. © 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
  150. © 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ớ
  151. © 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
  152. © 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
  153. © 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
  154. © 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
  155. © 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
  156. © 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
  157. © 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
  158. © 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
  159. © 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
  160. © 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
  161. © 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
  162. © 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
  163. © 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
  164. © 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
  165. © 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
  166. © 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
  167. © 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
  168. © 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
  169. © 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ớ
  170. © 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ế
  171. © 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ể
  172. © 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ể
  173. © 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ể
  174. © 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ã
  175. © 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
  176. © 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ể
  177. © 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’
  178. © 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ể
  179. © 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
  180. © 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
  181. © 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]
  182. © 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, ‘$’
  183. © 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ể
  184. © 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
  185. © 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
  186. © 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
  187. © 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
  188. © 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
  189. © 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
  190. © 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
  191. © 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
  192. © 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ể
  193. © 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
  194. © 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ể
  195. © 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
  196. © 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:
  197. © 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:
  198. © 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? Đ
  199. © 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:
  200. © 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
  201. © 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ể
  202. © 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
  203. © 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:
  204. © 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
  205. © 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ế
  206. © 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
  207. © 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
  208. © 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
  209. © 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
  210. © 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
  211. © 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
  212. © 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
  213. © 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
  214. © 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
  215. © 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
  216. © 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
  217. © 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
  218. © 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
  219. © DHBK 2005 15/Chapter4 MMạạchch ttạạoo xungxung nhnhịịpp 82848284 vvàà mmạạchch đđiiềềuu khikhiểểnn busbus 82888288
  220. © 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
  221. © DHBK 2005 17/Chapter4 BiBiểểuu đđồồ ththờờii giangian
  222. © 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
  223. © 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ớ
  224. © DHBK 2005 20/Chapter4 BiBiểểuu đđồồ ththờờii giangian
  225. © DHBK 2005 21/Chapter4 BiBiểểuu đđồồ ththờờii giangian
  226. © 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
  227. © 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
  228. © 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)
  229. © 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
  230. © DHBK 2005 26/Chapter4 EPROMEPROM Isolator Floating Gate Gate Source Drain n+ n+ p
  231. © 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
  232. © 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
  233. © 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
  234. © 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
  235. © 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
  236. © 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
  237. © 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
  238. © 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
  239. © 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)
  240. © 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
  241. © 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
  242. © 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
  243. © DHBK 2005 39/Chapter4 SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc Acts as a resistor
  244. © 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
  245. © 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
  246. © DHBK 2005 42/Chapter4 Reading of a ‘1’SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc R 5V 0V Current 1 0
  247. © DHBK 2005 43/Chapter4 Reading of a ‘0’SRAMSRAM bitbit cellcell Bit line Bit line inverse Word Vcc R 0V 5V Current 0 1
  248. © 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
  249. © 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
  250. © 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
  251. © 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
  252. © 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
  253. © 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
  254. © 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
  255. © 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.
  256. © 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
  257. © 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.
  258. © 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
  259. © 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.
  260. © 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
  261. © 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
  262. © 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
  263. © DHBK 2005 59/Chapter4 SRAMSRAM DRAMDRAM Cost SRAM DRAM Refresh controller Size
  264. © 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
  265. © 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
  266. © 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
  267. © 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
  268. © 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
  269. © 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
  270. © 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
  271. © 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
  272. © DHBK 2005 68/Chapter4 GiGiảảii mãmã đđịịaa chchỉỉ bbộộ nhnhớớ ddùùngng PALPAL
  273. © 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
  274. © 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
  275. © 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
  276. © 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
  277. © 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
  278. © 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
  279. © 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
  280. © 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
  281. © 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
  282. © 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
  283. © 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
  284. © 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
  285. © 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)
  286. © 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
  287. © 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
  288. © 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
  289. © 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ớ