Bài giảng Kỹ thuật vi xử lý - Phạm Văn Thuận

Nội dung môn học
Chương 1. Giới thiệu chung về vi xử lý và máy
vi tính
Chương 2. Kiến trúc bộ vi xử lý 8088/8086
Chương 3. Lập trình hợp ngữ trên PC
Chương 4. Bộ vi xử lý 8088 và nối ghép với bộ
nhớ
Chương 5. Nối ghép vào ra với 8088 
pdf 415 trang thiennv 08/11/2022 3120
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật vi xử lý - Phạm Văn Thuận", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_ky_thuat_vi_xu_ly_pham_van_thuan.pdf

Nội dung text: Bài giảng Kỹ thuật vi xử lý - Phạm Văn Thuận

  1. Phân loại máy tính Phân loại hiện đại: § Máy tính cá nhân (Personal Computer) § Máy chủ (Server) § Máy tính nhúng (Embedded Computer) Tiêu chí phân loại Phân loại theo chức năng 11 Kỹ thuật Vi xử lý
  2. Máy tính cá nhân § Là loại máy tính phổ biến nhất đối với người dùng thông thường. § Thiết kế theo hướng tối ưu cả về giá thành và hiệu năng § Một số loại: • Máy tính để bàn (Desktop) • Máy tính xách tay (Notebook) • Máy trạm làm việc (Workstation) § Giá thành: từ vài trăm đến vài nghìn USD 12 Kỹ thuật Vi xử lý
  3. Máy tính cá nhân 13 Kỹ thuật Vi xử lý
  4. Máy Server Máy chủ (Server) § Thực chất là máy phục vụ § Dùng trong mạng máy tính theo mô hình Client/Server § Tốc độ và hiệu năng tính toán cao § Dung lượng bộ nhớ lớn § Độ tin cậy cao § Giá thành: từ hàng chục nghìn đến hàng triệu USD. 14 Kỹ thuật Vi xử lý
  5. Máy server 15 Kỹ thuật Vi xử lý
  6. Máy tính nhúng Máy tính nhúng (Embedded Computer) § Được đặt trong thiết bị khác (bao gồm cả phần cứng và các kết cấu cơ khí) để điều khiển thiết bị đó làm việc § Được thiết kế chuyên dụng Ví dụ: • Điện thoại di động • Bộ điều khiển trong máy giặt, điều hòa nhiệt độ • Một số thiết bị mạng: Switch, Router, § Giá thành: từ vài USD đến hàng trăm ngàn USD 16 Kỹ thuật Vi xử lý
  7. Máy tính nhúng 17 Kỹ thuật Vi xử lý
  8. Nội dung chương 1 1.1. Máy tính và phân loại máy tính 1.2. Sự phát triển của vi xử lý 1.3. Kiến trúc chung của một hệ thống máy tính 18 Kỹ thuật Vi xử lý
  9. Sự phát triển của vi xử lý § Bộ vi xử lý (Microprocessor): vi mạch tích hợp thực hiện chức năng của bộ xử lý trung tâm (CPU). § Thế hệ 4 bit (1971÷1973): • Intel 4004 (bộ VXL đầu tiên), 4040 § Thế hệ 8 bit (1974÷1977): • Intel 8080, 8085 • Motorola 6800 • Zilog Z80 19 Kỹ thuật Vi xử lý
  10. Sự phát triển của vi xử lý § Thế hệ 16 bit (1979÷1982): • Intel 8086, 8088, 80186, 80286 • Motorola 68000, 68010 üHãng IBM sử dụng 8088 để thiết kế máy IBM-PC (1981) üHãng Apple sử dụng 68000 để thiết kế máy Macintosh (1983) • Zilog Z8000 20 Kỹ thuật Vi xử lý
  11. Sự phát triển của vi xử lý § Thế hệ 32 bit (1983÷1991): • Intel 80386, 80486, Pentium, PII, PIII và P4 (sau này) • Motorola 68020, 68030, 68040, 68060 • Kiến trúc RISC (máy tính với tập lệnh rút gọn): üPower PC üSPARC • Hiện nay: bộ xử lý lõi kép (Intel Core Duo, ) § Thế hệ 64 bit (1992÷nay): • Intel: Itanium, Pentium D, Xeon, Intel Core 2, • Digital ALPHA • Power PC • Super SPARC 21 Kỹ thuật Vi xử lý
  12. Nội dung chương 1 1.1. Máy tính và phân loại máy tính 1.2. Sự phát triển của vi xử lý 1.3. Kiến trúc chung của một hệ thống máy tính 22 Kỹ thuật Vi xử lý
  13. Kiến trúc phần cứng §Bộ vi xử lý ® CPU §Bộ nhớ bán dẫn (ROM, RAM) ® bộ nhớ chính §Hệ thống vào-ra: gồm mạch nối ghép vào-ra và các thiết bị ngoại vi §Các đường bus truyền thông tin Sơ đồ khối kiến trúc phần cứng 23 Kỹ thuật Vi xử lý
  14. Kiến trúc phần cứng Thiết bị vào-ra không nối trực tiếp với bus hệ thống mà thông qua các cổng vào-ra. 24 Kỹ thuật Vi xử lý
  15. Bộ xử lý trung tâm (CPU) § Chức năng: • Điều khiển hoạt động của toàn bộ hệ thống • Xử lý dữ liệu § Nguyên tắc hoạt động cơ bản: bộ VXL hoạt động theo chương trình nằm trong bộ nhớ bằng cách: • Nhận lần lượt từng lệnh (dưới dạng mã hóa nhị phân) từ bộ nhớ, • Sau đó tiến hành giải mã lệnh và phát các tín hiệu điều khiển thực thi lệnh. • Trong quá trình thực thi lệnh, bộ vi xử lý có thể trao đổi dữ liệu với bộ nhớ hay hệ thống vào-ra. 25 Kỹ thuật Vi xử lý
  16. Các thành phần chính của bộ xử lý trung tâm 26 Kỹ thuật Vi xử lý
  17. Các thành phần của bộ xử lý trung tâm § Đơn vị điều khiển (Control Unit): • Điều khiển nhận lệnh từ bộ nhớ • Giải mã lệnh và phát tín hiệu thực hiện lệnh • Nhận các tín hiệu yêu cầu từ bên ngoài và đáp ứng các yêu cầu đó § Đơn vị số học và logic (Arithmetic and Logic Unit): • Số học: cộng, trừ, nhân, chia, tăng, giảm, đảo dấu, so sánh, • Logic: AND, OR, XOT, NOT, dịch và quay bit 27 Kỹ thuật Vi xử lý
  18. Các thành phần của bộ xử lý trung tâm § Tập thanh ghi (Registers): • Chứa các thông tin tạm thời phục vụ cho hoạt động của bộ vi xử lý üThông tin về địa chỉ üDữ liệu tạm thời üThông tin trạng thái • Mỗi bộ vi xử lý có từ vài chục đến vài trăm thanh ghi § Đơn vị nối ghép bus (Bus Interface Unit): • Nối ghép các thành phần bên trong bộ vi xử lý với bên ngoài. 28 Kỹ thuật Vi xử lý
  19. Bộ nhớ chính § Chức năng: chứa các chương trình và dữ liệu mà bộ vi xử lý có khả năng trao đổi trực tiếp. § Được tổ chức thành các ngăn nhớ (thường theo Byte) • Mỗi ngăn nhớ có một địa chỉ xác định. • Bộ vi xử lý muốn trao đổi thông tin với ngăn nhớ nào thì phải biết địa chỉ của ngăn nhớ đó. 29 Kỹ thuật Vi xử lý
  20. Bộ nhớ chính (tiếp) § Bộ nhớ chính được thiết kế trên cơ sở gồm: • ROM (Read Only Memory): üBộ nhớ không khả biến. üChứa các chương trình và dữ liệu cố định với hệ thống. • RAM (Random Access Memory): üBộ nhớ khả biến. üChứa các thông tin tạm thời. 30 Kỹ thuật Vi xử lý
  21. Hệ thống vào-ra § Chức năng: Trao đổi thông tin giữa hệ vi xử lý với thế giới bên ngoài. § Các thành phần chính: • Các thiết bị ngoại vi: üChuyển đổi dữ liệu giữa bên trong và bên ngoài hệ vi xử lý. • Các mạch nối ghép vào-ra: üNối ghép giữa thiết bị ngoại vi với hệ vi xử lý. üTrên mạch nối ghép vào-ra có các cổng vào-ra (I/O Port). üMỗi cổng vào-ra cũng được đánh một địa chỉ xác định. üThiết bị ngoại vi được kết nối và trao đổi dữ liệu với hệ vi xử lý thông qua các cổng vào-ra. 31 Kỹ thuật Vi xử lý
  22. Bus truyền thông tin § Bus: tập hợp các đường kết nối dùng để vận chuyển thông tin giữa các thành phần. § Độ rộng bus: là số đường dây của bus có thể truyền thông tin đồng thời. Tính bằng bit. § Phân loại bus theo chức năng: • Bus địa chỉ (Address Bus) • Bus dữ liệu (Data Bus) • Bus điều khiển (Control Bus) 32 Kỹ thuật Vi xử lý
  23. Bus địa chỉ § Chức năng: vận chuyển địa chỉ từ bên trong bộ vi xử lý đến bộ nhớ chính hay mạch nối ghép vào-ra để xác định ngăn nhớ hay cổng vào-ra cần trao đổi thông tin. § Độ rộng bus địa chỉ: xác định dung lượng bộ nhớ cực đại của hệ thống. § Nếu độ rộng bus địa chỉ là N bit (gồm N đường dây AN-1, AN-2, , A2, A1, A0) thì: ® có khả năng vận chuyển được N bit địa chỉ đồng thời ® có khả năng đánh địa chỉ tối đa được 2N ngăn nhớ = 2N Byte ® gọi là không gian địa chỉ bộ nhớ. 33 Kỹ thuật Vi xử lý
  24. Ví dụ § Độ rộng bus địa chỉ của một số bộ vi xử lý của Intel • 8088/8086 : N = 20 bit ® KGĐCBN = 220 Byte = 1 MB • 80286 : N = 24 bit ® KGĐCBN = 224 Byte = 16 MB • 80386, 80486, Pentium : N = 32 bit ® KGĐCBN = 232 Byte = 4 GB • Pentium II, III, 4 : N = 36 bit ® KGĐCBN = 236 Byte = 64 GB 34 Kỹ thuật Vi xử lý
  25. Bus dữ liệu § Chức năng: • Vận chuyển lệnh từ bộ nhớ chính đến bộ vi xử lý. • Vận chuyển dữ liệu giữa các thành phần của hệ vi xử lý với nhau. § Độ rộng bus dữ liệu: Xác định số bit dữ liệu có thể được trao đổi đồng thời. • Nếu độ rộng bus dữ liệu là M bit (gồm M đường dây DM-1, DM-2, , D2, D1, D0) thì nghĩa là đường bus dữ liệu đó có thể vận chuyển đồng thời được M bit dữ liệu. • M thường là 8, 16, 32, 64 bit. 35 Kỹ thuật Vi xử lý
  26. Ví dụ § Độ rộng bus dữ liệu của một số bộ vi xử lý của Intel: • 8088 : M = 8 bit • 8086, 80286 : M = 16 bit • 80386, 80486 : M = 32 bit • Các bộ xử lý Pentium : M = 64 bit 36 Kỹ thuật Vi xử lý
  27. Bus điều khiển § Chức năng: vận chuyển các tín hiệu điều khiển § Các loại tín hiệu điều khiển: • Các tín hiệu điều khiển phát ra từ bộ vi xử lý để điều khiển bộ nhớ chính hay mạch nối ghép vào- ra. • Các tín hiệu yêu cầu từ bộ nhớ chính hay mạch nối ghép vào-ra gửi đến bộ vi xử lý. 37 Kỹ thuật Vi xử lý
  28. Kiến trúc phần mềm § Tập lệnh (Instruction Set) § Ngôn ngữ máy § Hợp ngữ (Assembly Language) § Ngôn ngữ lập trình cấp cao 38 Kỹ thuật Vi xử lý
  29. Tập lệnh (Instruction Set) § Mỗi bộ vi xử lý có khả năng thực hiện được một tập hữu hạn các thao tác xác định (gọi là tập lệnh) § Mỗi lệnh là một chuỗi số nhị phân thực hiện một công việc cụ thể § Mỗi lệnh có cấu trúc như sau • Mã lệnh (Operation Code): cho biết chức năng của lệnh • Tham chiếu toán hạng: cho biết nơi chứa toán hạng mà lệnh tác động Mã lệnh Tham chiếu toán hạng 39 Kỹ thuật Vi xử lý
  30. Tập lệnh (tiếp) § Tập lệnh được mô tả thông qua các từ gợi nhớ: ADD (lệnh cộng), SUB (lệnh trừ), INC (lệnh tăng 1) § Ví dụ: • Lệnh hợp ngữ: MOV AH,1 • Mã máy tương ứng: 0000 0001 1011 0100 40 Kỹ thuật Vi xử lý
  31. Ngôn ngữ máy § Ngôn ngữ chương trình duy nhất mà máy tính hiểu được là ngôn ngữ máy (chuỗi số nhị phân mã hóa cho một thao tác nào đó của bộ vi xử lý) ® Lập trình trực tiếp bằng ngôn ngữ máy rất vất vả và dễ xảy ra sai sót. 41 Kỹ thuật Vi xử lý
  32. Hợp ngữ (Assembly Language) § Là ngôn ngữ lập trình gần với ngôn ngữ máy nhất. § Sử dụng các kí hiệu gợi nhớ để biểu diễn các lệnh máy. § Chương trình dịch hợp ngữ sang ngôn ngữ máy gọi là hợp dịch (Assembler). § VD: • Ngôn ngữ máy (của bộ vi xử lý Intel 8088): 00000101 00000100 00000000 ; cộng 4 vào AX • Hợp ngữ: ADD AX, 4 ; cộng 4 vào AX 42 Kỹ thuật Vi xử lý
  33. Ngôn ngữ lập trình bậc cao § Cho phép người lập trình viết các chương trình gần với ngôn ngữ tự nhiên hơn so với hợp ngữ. § Chương trình viết bằng NNLT bậc cao gọi là chương trình nguồn (source code). § Chương trình chuyển từ chương trình nguồn sang ngôn ngữ máy gọi là chương trình dịch. • Chương trình biên dịch (compiler): üDịch toàn bộ chương trình nguồn sang mã máy. üNếu chương trình nguồn có lỗi thì sẽ ngừng việc biên dịch. • Chương trình thông dịch (interpreter): üDịch từng lệnh của chương trình nguồn (và thực hiện) üNếu chương trình nguồn có lỗi thì vẫn thực hiện CT cho đến khi gặp lỗi. § Ngôn ngữ lập trình trực quan (visual programming language): giúp việc xây dựng chương trình nhanh chóng và trực quan hơn. 43 Kỹ thuật Vi xử lý
  34. Phần mềm hệ thống § Là các chương trình điều khiển chung của hệ thống, bao gồm: • Các chương trình điều khiển được cài đặt sẵn trong bộ nhớ ROM của hệ vi xử lý. • Hệ điều hành: tập hợp các chương trình, đảm bảo: üĐiều khiển việc thực thi các chương trình khác. üQuản lý, phân phối tài nguyên của hệ thống. üĐiều khiển các thiết bị và quá trình vào-ra. üCung cấp giao diện người dùng. • Các chương trình tiện ích: hỗ trợ thêm cho hệ điều hành. 44 Kỹ thuật Vi xử lý
  35. Phần mềm ứng dụng § Là các chương trình chạy trên một hệ điều hành cụ thể, phục vụ cho các ứng dụng cụ thể. § Có nhiều loại. § Ví dụ: một số phần mềm ứng dụng chạy trên hệ điều hành Microsoft Windows: • Ứng dụng văn phòng: Microsoft Word, Excel, • Ứng dụng Internet: Internet Explorer, Outlook Express, Opera, • Ứng dụng xử lý ảnh: Photoshop, Corel Draw, 45 Kỹ thuật Vi xử lý
  36. CHƯƠNG 2 Kiến trúc bộ vi xử lý 8088/8086 46 Kỹ thuật Vi xử lý
  37. Nội dung chương 2 2.1. Kiến trúc bên trong của vi xử lý 8088/8086 2.2. Mô hình phần mềm của vi xử lý 8088/8086 2.3. Quản lý bộ nhớ của vi xử lý 8088/8086 2.4. Tập lệnh và các chế độ địa chỉ 47 Kỹ thuật Vi xử lý
  38. Kiến trúc bên trong của 8088/8086 § Hai BXL 8088 và 8086 có cấu tạo tương tự nhau, điểm khác nhau cơ bản là: • 8088: Bus dữ liệu ngoài là 8 bit • 8086: Bus dữ liệu ngoài là 16 bit § Hệ thống máy tính dùng 8088 chậm hơn 8086 nhưng có giá thành rẻ hơn (do dùng bus dữ liệu ngoài 8 bit nên giảm được khá nhiều chip ghép nối và bổ trợ). § Hãng IBM đã sử dụng 8088 để thiết kế máy IBM- PC (1981). 48 Kỹ thuật Vi xử lý
  39. Cấu trúc bên trong của 8088 49 Kỹ thuật Vi xử lý
  40. Cấu trúc bên trong của 8088 § Gồm 2 phần: • Đơn vị nối ghép bus (Bus Interface Unit – BIU) • Đơn vị thực hiện (Execution Unit – EU) § Hai phần này có thể hoạt động đồng thời: trong khi EU đang thực hiện lệnh trước thì BIU đã tìm và nhận lệnh tiếp theo từ bộ nhớ chính. 50 Kỹ thuật Vi xử lý
  41. Bus Interface Unit - BIU § Bao gồm: • Các thanh ghi đoạn • Con trỏ lệnh • Mạch tạo địa chỉ và điều khiển bus • Hàng đợi lệnh (8088: 4 Byte, 8086: 6 Byte) § Nhiệm vụ: • Tạo và phát địa chỉ • Nhận lệnh từ bộ nhớ • Trao đổi dữ liệu với bộ nhớ chính và cổng vào-ra • Phát tín hiệu điều khiển bộ nhớ và mạch vào-ra • Nhận các tín hiệu yêu cầu từ bên ngoài 51 Kỹ thuật Vi xử lý
  42. Execution Unit – EU § Gồm: • Các thanh ghi chung • Các thanh ghi đệm • Đơn vị số học và logic (ALU) • Khối giải mã lệnh § Nhiệm vụ: • Giải mã lệnh • Thực hiện lệnh 52 Kỹ thuật Vi xử lý
  43. Nội dung chương 2 2.1. Kiến trúc bên trong của vi xử lý 8088/8086 2.2. Mô hình phần mềm của vi xử lý 8088/8086 2.3. Quản lý bộ nhớ của vi xử lý 8088/8086 2.4. Tập lệnh và các chế độ địa chỉ 53 Kỹ thuật Vi xử lý
  44. Mô hình phần mềm của 8088/8086 § Là mô hình mà người lập trình có thể can thiệp được. § Bao gồm: • Tập thanh ghi • Không gian nhớ • Không gian vào-ra • Các kiểu dữ liệu 54 Kỹ thuật Vi xử lý
  45. Tập thanh ghi § 4 thanh ghi đoạn: • CS (Code Segment): thanh ghi đoạn lệnh • DS (Data Segment): thanh ghi đoạn dữ liệu • SS (Stack Segment): thanh ghi đoạn ngăn xếp • ES (Extra Segment): thanh ghi đoạn dữ liệu phụ § 3 thanh ghi con trỏ: • IP (Instruction Pointer): thanh ghi con trỏ lệnh • SP (Stack Pointer): con trỏ ngăn xếp • BP (Base Pointer): thanh ghi con trỏ cơ sở § 4 thanh ghi dữ liệu: • AX (Accumulator): thanh chứa - thanh ghi tích lũy • BX (Base): thanh ghi cơ sở • CX (Count): thanh ghi đếm • DX (Data): thanh ghi dữ liệu Mỗi thanh ghi này đều có thể được chia ra thành 2 nửa có khả năng sử dụng độc lập. § Thanh ghi cờ 55 Kỹ thuật Vi xử lý
  46. Tập thanh ghi (tiếp) 56 Kỹ thuật Vi xử lý
  47. Không gian nhớ § 8088 có bus địa chỉ 20 bit Þ 00000h KGĐCBN = 220 byte = 1MB. § 8088 có khả năng truy nhập bộ nhớ 00001h theo: • Từng byte • Từng word: truy nhập theo 2 byte có địa chỉ liên tiếp § 8088 lưu trữ thông tin trong bộ nhớ chính theo kiểu đầu nhỏ (Little- endian) FFFFFh 57 Kỹ thuật Vi xử lý
  48. Không gian vào-ra § 8088 có khả năng quản lý không gian vào-ra 64 KB = 216 Byte, do đó sẽ phải phát ra 16 bit địa chỉ để tìm cổng vào-ra tương ứng trên các chân địa chỉ từ A0 đến A15. § Trong trường hợp phát ra 8 bit địa chỉ từ A0 đến A7 để xác định một cổng vào-ra thì sẽ quản lý được 256 cổng vào-ra. 58 Kỹ thuật Vi xử lý
  49. Các kiểu dữ liệu § Kiểu dữ liệu số nguyên, gồm 2 loại: • Không dấu: ü8 bit (1 byte), biểu diễn các số từ 0 đến 255 ü16 bit (2 byte), biểu diễn các số từ 0 đến 65535 • Có dấu: ü8 bit (1 byte), biểu diễn các số từ -128 đến 127 ü16 bit (2 byte), biểu diễn các số từ -32768 đến 32767 § Kiểu dữ liệu số BCD, gồm 2 dạng: dạng nén và dạng không nén. § Mã ASCII: tổ chức theo từng byte, theo mã 8 bit. 59 Kỹ thuật Vi xử lý
  50. Nội dung chương 2 2.1. Kiến trúc bên trong của vi xử lý 8088/8086 2.2. Mô hình phần mềm của vi xử lý 8088/8086 2.3. Quản lý bộ nhớ của vi xử lý 8088/8086 2.4. Tập lệnh và các chế độ địa chỉ 60 Kỹ thuật Vi xử lý
  51. 2.3. Quản lý bộ nhớ 2.3.1. Các thanh ghi đoạn và phân đoạn bộ nhớ 2.3.2. Đoạn lệnh và thanh ghi con trỏ lệnh 2.3.3. Đoạn dữ liệu và các thanh ghi SI, DI, BX 2.3.4. Đoạn ngăn xếp và các thanh ghi SP, BP 2.3.5. Các thanh ghi AX, BX, CX, DX 2.3.6. Thanh ghi cờ 61 Kỹ thuật Vi xử lý
  52. 2.3.1. Các thanh ghi đoạn và phân đoạn bộ nhớ § 8088 có 4 thanh ghi đoạn 16 bit, do đó tại một thời điểm, 8088 chỉ làm việc được với 4 đoạn nhớ: • CS (Code Segment): quản lý đoạn lệnh • SS (Stack Segment): quản lý đoạn ngăn xếp • DS (Data Segment): quản lý đoạn dữ liệu • ES (Extra Data Segment): quản lý đoạn dữ liệu phụ § 8088 phát ra một địa chỉ của ngăn nhớ = 20 bit, do đó không gian nhớ của nó là 1 MB (=220 Byte) § Các thanh ghi bên trong 8088 đều có độ dài là 16 bit. 62 Kỹ thuật Vi xử lý
  53. Các thanh ghi đoạn 63 Kỹ thuật Vi xử lý
  54. Phân đoạn bộ nhớ § Intel chia không gian nhớ của 8088 thành các đoạn nhớ (segment) có dung lượng 64 KB =216 Byte § Địa chỉ đầu của mỗi đoạn nhớ chia hết cho 16, do đó địa chỉ đầu của một đoạn nào đó sẽ có dạng: xxxx0h (x là chữ số Hexa bất kỳ). § Để quản lý địa chỉ đầu của một đoạn nhớ chỉ cần lưu trữ 4 số Hexa (16 bit cao), đây gọi là địa chỉ đoạn. • VD: nếu địa chỉ đoạn là 1234h thì địa chỉ vật lý của đầu đoạn nhớ đó là 12340h 64 Kỹ thuật Vi xử lý
  55. Phân đoạn bộ nhớ (tiếp) § Giả sử có một đoạn nhớ xác định (dung lượng tối đa = 64 KB), để xác định 1 byte nhớ cụ thể trong đoạn đó, cần biết khoảng cách (offset – độ lệch) giữa byte nhớ đó so với ngăn nhớ đầu đoạn. § Địa chỉ logic có dạng: Địa chỉ đoạn (16 bit): offset (16 bit) § Địa chỉ vật lý (20 bit) = địa chỉ đoạn * 10h + offset § Ví dụ: Có địa chỉ logic 1234h:0076h Þ địa chỉ vật lý = 1234h * 10h + 0076h = 123B6h § Người lập trình chỉ lập trình với địa chỉ logic, còn việc chuyển sang địa chỉ vật lý là do bộ vi xử lý thực hiện. 65 Kỹ thuật Vi xử lý
  56. Phân đoạn bộ nhớ (tiếp) § Địa chỉ đoạn: xxxxh Địa chỉ vật lý đầu đoạn: xxxx0h Địa chỉ vật lý cuối đoạn: xxxx0h + FFFFh § Địa chỉ đoạn do các thanh ghi đoạn quản lý. § Địa chỉ offset do các thanh ghi IP, BX, BP, SP, SI, DI quản lý. § Với một địa chỉ vật lý, có thể tìm ra nhiều địa chỉ logic khác nhau. § Ví dụ: 00070h = 0000h:0070h = 0001h:0060h = 0002h:0050h 66 Kỹ thuật Vi xử lý
  57. 2.3.2. Đoạn lệnh và thanh ghi con trỏ lệnh § Thanh ghi CS sẽ xác định đoạn lệnh. § Đoạn lệnh dùng để chứa lệnh của chương trình. Bộ vi xử lý sẽ nhận lần lượt từng lệnh ở đây để giải mã và thực hiện. § Thanh ghi IP (con trỏ lệnh) chứa địa chỉ offset của lệnh tiếp theo sẽ được nhận vào. Þ CS:IP chứa địa chỉ logic của lệnh tiếp theo sẽ được nhận vào. 67 Kỹ thuật Vi xử lý
  58. 2.3.3. Đoạn dữ liệu và các thanh ghi SI, DI, BX § DS: quản lý một đoạn dữ liệu 64 KB § ES: quản lý một đoạn dữ liệu phụ 64 KB § Offset sẽ được xác định bởi nội dung của các thanh ghi SI, DI, BX. § Sự khác nhau giữa chương trình kiểu EXE và COM: • Trong chương trình EXE: CS, DS và SS quản lý 3 đoạn nhớ khác nhau. Nghĩa là : CS ¹ SS ¹ DS. • Trong chương trình COM: CS, DS và SS có thể quản lý chung một đoạn nhớ (không lớn hơn 64 KB). Nghĩa là CS = DS = SS. 68 Kỹ thuật Vi xử lý
  59. 2.3.4. Đoạn ngăn xếp và các thanh ghi SP, BP § Stack (ngăn xếp): vùng nhớ tổ chức theo cơ chế LIFO, dùng để cất giữ thông tin và có thể khôi phục lại. § Đoạn Stack được quản lý nhờ thanh ghi SS. § Thông tin được trao đổi với Stack theo word (16 bit). § SP chứa địa chỉ offset của ngăn nhớ đỉnh Stack • Nếu cất thêm một thông tin vào Stack thì nội dung của SP giảm đi 2 • Nếu lấy ra một thông tin của Stack thì nội dung của SP tăng lên 2 • Nếu Stack rỗng thì SP trở vào đáy Stack • SS:SP chứa địa chỉ logic của ngăn nhớ đỉnh Stack § BP là thanh ghi chứa địa chỉ offset của một ngăn nhớ nào đó trong Stack Þ địa chỉ logic của ngăn nhớ đó là SS:BP 69 Kỹ thuật Vi xử lý
  60. 2.3.5. Các thanh ghi AX, BX, CX, DX § AX, BX, CX, DX là các thanh ghi 16 bit § AH, AL, BH, BL, CH, CL, DH, DL là các thanh ghi 8 bit § Chức năng chung: chứa dữ liệu tạm thời § Chức năng riêng: • AX: . Dùng cho lệnh nhân chia theo word . Dùng cho vào ra theo word • AL: . Dùng cho lệnh nhân chia theo byte . Dùng cho vào ra theo byte . Dùng cho các lệnh số học với số BCD • AH: . Dùng cho các lệnh nhân chia theo byte • BX: . Dùng để chứa địa chỉ cơ sở • CX: . Dùng để chứa số lần lặp của lệnh LOOP và các lệnh xử lý xâu ký tự • CL: . Dùng để chứa số lần dịch của lệnh dịch, lệnh quay • DX: . Dùng cho lệnh nhân chia theo word . Dùng chứa địa chỉ cổng vào ra 70 Kỹ thuật Vi xử lý