Bài giảng Kỹ thuật vi xử lý (Microprocessors) - Chương 2: Bộ vi xử lý Intel 8088/8086

ppt 85 trang phuongnguyen 3230
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) - Chương 2: Bộ vi xử lý Intel 8088/8086", để 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:

  • pptbai_giang_ky_thuat_vi_xu_ly_microprocessors_chuong_2_bo_vi_x.ppt

Nội dung text: Bài giảng Kỹ thuật vi xử lý (Microprocessors) - Chương 2: Bộ vi xử lý Intel 8088/8086

  1. © DHBK 2005 1/Chapter2 Nội dung môn học 1. Giới thiệu chung về hệ vi xử lý 2. Bộ vi xử lý Intel 8088/8086 3. Lập trình hợp ngữ cho 8086 4. Tổ chức vào ra dữ liệu 5. Ngắt và xử lý ngắt 6. Truy cập bộ nhớ trực tiếp DMA 7. Các bộ vi xử lý trên thực tế
  2. © DHBK 2005 2/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  3. © DHBK 2005 3/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong ❑ Sơ đồ khối ❑ Các thanh ghi đa năng ❑ Các thanh ghi đoạn ❑ Các thanh ghi con trỏ và chỉ số ❑ Thanh ghi cờ ❑ Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  4. © DHBK 2005 4/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong  Sơ đồ khối ❑ Các thanh ghi đa năng ❑ Các thanh ghi đoạn ❑ Các thanh ghi con trỏ và chỉ số ❑ Thanh ghi cờ ❑ Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  5. © 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 ngoài Khối điều khiển ALU của EU Hàng đợi lệnh Thanh ghi cờ
  6. © DHBK 2005 6/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong ❑ Sơ đồ khối  Các thanh ghi đa năng ❑ Các thanh ghi đoạn ❑ Các thanh ghi con trỏ và chỉ số ❑ Thanh ghi cờ ❑ Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  7. © DHBK 2005 7/Chapter2 Các thanh ghi đa năng của 8088/8086 8 bit cao 8 bit thấp •8088/8086 đến 80286 : 16 bits AX AH AL •80386 trở lên: 32 bits EAX, EBX, BX BH BL 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)
  8. © DHBK 2005 8/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong ❑ Sơ đồ khối ❑ Các thanh ghi đa năng  Các thanh ghi đoạn ❑ Các thanh ghi con trỏ và chỉ số ❑ Thanh ghi cờ ❑ Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  9. © DHBK 2005 9/Chapter2 Các thanh ghi đoạn • Tổ chức của bộ nhớ 1 Mbytes ❑ Đoạn bộ nhớ (segment) FFFFFH 216 bytes =64 KB Đoạn 1: địa chỉ đầu 00000 H Đoạn 2: địa chỉ đầu 00010 H Đoạn cuối cùng: FFFF0 H ❑ Ô nhớ trong đoạn: địa chỉ lệch: offset Ô 1: offset: 0000 Ô cuối cùng: offset: FFFF ❑ Địa chỉ vật lý: 1FFFFH Segment : offset 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
  10. © DHBK 2005 10/Chapter2 Các thanh ghi đoạn • Ví dụ: Địa chỉ vật lý 12345H Địa chỉ đoạn Điạ chỉ lệch 1000 H 2345H 1200 H 0345H 1004 H ? 0300 H ? • Ví dụ: Cho địa chỉ đầu của đoạn: 49000 H, xác định địa chỉ cuối
  11. © DHBK 2005 11/Chapter2 Các thanh ghi đoạn • Các thanh ghi đoạn: chứa địa chỉ đoạn FFFFF 58FFF Đoạn dữ liệu phụ extra segment 49000 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
  12. © DHBK 2005 12/Chapter2 Các thanh ghi đoạn • Các đoạn chồng nhau FFFFF s t a d c a k 0A480 t 0A47F a c Stack o 0A280 0 A 2 8 SS d 0A27F e Data 0A0F0 0 A 0 F DS 0A0EF Code 090F0 0 9 0 F CS 00000
  13. © DHBK 2005 13/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong ❑ Sơ đồ khối ❑ Các thanh ghi đa năng ❑ Các thanh ghi đoạn  Các thanh ghi con trỏ và chỉ số ❑ Thanh ghi cờ ❑ Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  14. © 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
  15. © 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
  16. © DHBK 2005 16/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong ❑ Sơ đồ khối ❑ Các thanh ghi đa năng ❑ Các thanh ghi đoạn ❑ Các thanh ghi con trỏ và chỉ số  Thanh ghi cờ ❑ Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  17. © DHBK 2005 17/Chapter2 Thanh ghi cờ (Flag Register) 15 14 2 1 0 O D I T S Z A P C • 9 bit được sử dụng, 6 cờ trạng thái: ❑ C hoăc CF (carry flag)): CF=1 khi có nhớ hoặc mượn từ MSB ❑ P hoặc PF (parity flag): PF=1 (0) khi tổng số bít 1 trong kết quả là chẵn (lẻ) ❑ A hoặc AF (auxilary carry flag): cờ nhớ phụ, AF=1 khi có nhớ hoặc mượn từ một số BCD thấp sang BCD cao ❑ Z hoặc ZF (zero flag): ZF=1 khi kết quả bằng 0 ❑ S hoặc SF (Sign flag): SF=1 khi kết quả âm ❑ O hoặc OF (Overflow flag): cờ tràn OF=1 khi kết quả là một số vượt ra ngoài giới hạn biểu diễn của nó trong khi thực hiện phép toán cộng trừ số có dấu
  18. © 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)
  19. © 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
  20. © DHBK 2005 20/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong ❑ Sơ đồ khối ❑ Các thanh ghi đa năng ❑ Các thanh ghi đoạn ❑ Các thanh ghi con trỏ và chỉ số ❑ Thanh ghi cờ  Hàng đợi lệnh • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  21. © 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
  22. © DHBK 2005 22/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  23. © DHBK 2005 23/Chapter2 Intel 8088 • 16-bit processor • introduced in 1979 • 3 mm, 5 to 8 MHz, 29 KTOR, 0.33 to 0.66 MIPS
  24. © DHBK 2005 24/Chapter2 Intel 8088 •Chế độ Min và chế độ Max: MN/MX = 1 chế độ Min = 0 chế độ Max với bus controller 8288
  25. © DHBK 2005 25/Chapter2 Intel 8086
  26. © DHBK 2005 26/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  27. © DHBK 2005 27/Chapter2 Bản đồ bộ nhớ của máy tính IBM PC Vùng nhớ mở rộng FFFFF Vùng nhớ hệ thống A0000 484 Kbytes 1 Mbytes 9FFFF bộ nhớ thực Vùng nhớ chương trình 640 Kbytes 00000
  28. © 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
  29. © DHBK 2005 29/Chapter2 Bản đồ vùng nhớ hệ thống FFFFF ROM BIOS F0000 ROM BASIC E0000 Vùng để dành C8000 Video BIOS ROM C0000 Video RAM (text) B0000 Video RAM (đồ hoạ) A0000
  30. © DHBK 2005 30/Chapter2 Các cổng vào ra • Địa chỉ: 0000H –FFFFH, M/IO =0 FFFF Vùng mở rộng COM1 03F8 Điều khiển đĩa mềm 03F0 CGA adapter 03D0 LPT1 0378 Điều khiển ổ cứng 0320 COM2 02F8 8255 0060 Định thời (8253) 0040 Điều khiển ngắt 0020 0000 Điều khiển DMA
  31. © 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
  32. © DHBK 2005 32/Chapter2 Vùng nhớ dành riêng của 8088/8086 FFFFF Reset Bootstrap FFFF0 program jump 003FF Các vector ngắt 00000
  33. © DHBK 2005 33/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 ❑ Chế độ địa chỉ thanh ghi ❑ Chế độ địa chỉ tức thì ❑ Chế độ địa chỉ trực tiếp ❑ Chế độ địa chỉ gián tiếp qua thanh ghi ❑ Chế độ địa chỉ tương đối cơ sở ❑ Chế độ địa chỉ tương đối chỉ số ❑ Chế độ địa chỉ tương đối chỉ số cơ sở • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  34. 34/Chapter2 © DHBK 2005 Chế độ địa chỉ thanh ghi (Register Addressing Mode) • Dùng các thanh ghi như là các toán hạng • Tốc độ thực hiện lệnh cao • Ví dụ: ❑ MOV BX, DX ; Copy nội dung DX vào BX ❑ MOV AL, BL ; Copy nội dung BL vào AL ❑ MOV AL, BX ; không hợp lệ vì các thanh ghi có kích thước khác nhau ❑ MOV ES, DS ; không hợp lệ (segment to segment) ❑ MOV CS, AX ; không hợp lệ vì CS không được dùng làm thanh ghi đích ❑ ADD AL, DL ; Cộng nội dung AL và DL rồi đưa vào AL
  35. 35/Chapter2 © DHBK 2005 Chế độ địa chỉ tức thì (Immediate Addressing Mode) • Toán hạng đích là thanh ghi hoặc ô nhớ • Toán hạng nguồn là hằng số • Dùng để nạp hằng số vào thanh thi (trừ thanh ghi đoạn và thanh cờ) hoặc vào ô nhớ trong đoạn dữ liệu DS • Ví dụ: ❑ MOV BL, 44 ; Copy số thập phân 44 vào thanh ghi BL ❑ MOV AX, 44H ; Copy 0044H vào thanh ghi AX ❑ MOV AL, ‘A’ ; Copy mã ASCII của A vào thanh ghi AL ❑ MOV DS, 0FF0H ; không hợp lệ ❑ MOV AX, 0FF0H ; ❑ MOV DS, AX ; ❑ MOV [BX], 10 ; copy số thập phân 10 vào ô nhớ DS:BX
  36. 36/Chapter2 © DHBK 2005 Chế độ địa chỉ trực tiếp (Direct Addressing Mode) • Một toán hạng là địa chỉ ô nhớ chứa dữ liệu • Toán hạng kia chỉ có thể là thanh ghi • Ví dụ: ❑ MOV AL, [1234H] ; Copy nội dung ô nhớ có địa chỉ DS:1234 vào AL ❑ MOV [ 4320H ], CX ; Copy nội dung của CX vào 2 ô nhớ liên tiếp DS: 4320 và DS: 4321
  37. 37/Chapter2 © DHBK 2005 Chế độ địa chỉ gián tiếp qua thanh ghi (Register indirect Addressing Mode) • Một toán hạng là thanh ghi chứa địa chỉ của 1 ô nhớ dữ liệu • Toán hạng kia chỉ có thể là thanh ghi • Ví dụ: ❑ MOV AL, [BX] ; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL ❑ MOV [ SI ], CL ; Copy nội dung của CL vào ô nhớ có địa chỉ DS:SI ❑ MOV [ DI ], AX ; copy nội dung của AX vào 2 ô nhớ liên tiếp DS: DI và DS: (DI +1)
  38. 38/Chapter2 © DHBK 2005 Chế độ địa chỉ tương đối cơ sở (Based relative Addressing Mode) • Một toán hạng là thanh ghi cơ sở BX, BP và các hằng số biểu diễn giá trị dịch chuyển • Toán hạng kia chỉ có thể là thanh ghi • Ví dụ: ❑ MOV CX, [BX]+10 ; Copy nộ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
  39. 39/Chapter2 © DHBK 2005 Chế độ địa chỉ tương đối chỉ số (Indexed relative Addressing Mode) • Một toán hạng là thanh ghi chỉ số SI, DI và các hằng số biểu diễn giá trị dịch chuyển • Toán hạng kia chỉ có thể là thanh ghi • Ví dụ: ❑ MOV AX, [SI]+10 ; Copy nộ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
  40. © 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
  41. © DHBK 2005 41/Chapter2 Tóm tắt các chế độ địa chỉ Chế độ địa chỉ Toán hạng Thanh ghi đoạn ngầm định Thanh ghi Thanh ghi Tức thì Dữ liệu Trực tiếp [offset] DS Gián tiếp qua thanh ghi [BX] DS [SI] DS [DI] DS Tương đối cơ sở [BX] + dịch chuyển DS [BP] + dịch chuyển SS Tương đối chỉ số [DI] + dịch chuyển DS [SI] + dịch chuyển DS Tương đối chỉ số cơ sở [BX] + [DI]+ dịch chuyển DS [BX] + [SI]+ dịch chuyển DS [BP] + [DI]+ dịch chuyển SS [BP] + [SI]+ dịch chuyển SS
  42. 42/Chapter2 © DHBK 2005 Bỏ chế độ ngầm định thanh ghi đoạn (Segment override) • Ví dụ: ❑ MOV AL, [BX]; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL ❑ MOV AL, ES:[BX] ; Copy nội dung ô nhớ có địa chỉ ES:BX vào AL
  43. © DHBK 2005 43/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  44. © DHBK 2005 44/Chapter2 Cách mã hoá lệnh của 8086 Opcode MOD-REG-R/M Dịch chuyển Tức thì 1-2 byte 0-1 byte 0-2 byte 0-2 byte • Một lệnh có độ dài từ 1 đến 6 byte D W W=0 dữ liệu 1 byte Opcode W=1 dữ liệu 2 byte D=1 dữ liệu đi đến thanh ghi cho bởi 3 bit REG D=0 dữ liệu đi từ thanh ghi cho bởi 3 bit REG
  45. © DHBK 2005 45/Chapter2 Cách mã hoá lệnh của 8086 MOD REG R/M MOD <> 11 00 không có dịch chuyển Thanh ghi Mã Mã Chế độ địa chỉ 01 dịch chuyển 8 bit 10 dịch chuyển 16 bit W=1 W=0 000 DS:[BX+SI] 11 R/M là thanh ghi AX AL 000 001 DS:[BX+DI] BX BL 011 010 SS:[BP+SI] CX CL 001 011 SS:[BP+DI] DX DL 010 100 DS:[SI] SP AH 100 101 DS:[DI] DI BH 111 110 SS:[BP] BP CH 101 111 DS:[BX] SI DH 110
  46. © DHBK 2005 46/Chapter2 Cách mã hoá lệnh của 8086 • Ví dụ: chuyển lệnh MOV CL, [BX] sang mã máy ❑ opcode MOV: 100010 ❑ Dữ liệu là 1 byte: W=0 ❑ Chuyển tới thanh ghi: D=1 ❑ Không có dịch chuyển: MOD=00 ❑ [BX] nên R/M=111 ❑ CL nên REG=001 1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 MOV MOD CL [BX] D W Ví dụ 2: chuyển lệnh MOV [SI+F3H], CL sang mã máy
  47. © DHBK 2005 47/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 ❑ Các lệnh di chuyển dữ liệu ❑ Các lệnh số học và logic ❑ Các lệnh điều khiển chương trình • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  48. © DHBK 2005 48/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086  Các lệnh di chuyển dữ liệu ❑ Các lệnh số học và logic ❑ Các lệnh điều khiển chương trình • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  49. © DHBK 2005 49/Chapter2 Các lệnh di chuyển dữ liệu • MOV, XCHG, POP, PUSH, POPF, PUSHF, IN, OUT • Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW • MOV ❑ Dùng để chuyển giữa các thanh ghi, giữa 1 thanh ghi và 1 ô nhớ hoặc chuyển 1 số vào thanh ghi hoặc ô nhớ ❑ Cú pháp: MOV Đích, nguồn ❑ Lệnh này không tác động đến cờ ❑ Ví dụ: MOV AX, BX MOV AH, ‘A’ MOV AL, [1234H]
  50. © DHBK 2005 50/Chapter2 Các lệnh di chuyển dữ liệu • Khả năng kết hợp toán hạng của lệnh MOV Đích Thanh ghi Thanh ghi ô nhớ Hằng số đa năng đoạn Nguồn Thanh ghi YES YES YES NO đa năng Thanh ghi YES NO YES NO đoạn Ô nhớ YES YES NO NO Hằng số YES NO YES NO
  51. © DHBK 2005 51/Chapter2 Các lệnh di chuyển dữ liệu • Lệnh XCHG ❑ Dùng để hoán chuyển nội dung giữa hai thanh ghi, giữa 1 thanh ghi và 1 ô nhớ ❑ Cú pháp: XCHG Đích, nguồn ❑ Giới hạn: toán hạng không được là thanh ghi đoạn ❑ Lệnh này không tác động đến cờ ❑ Ví dụ:  XCHG AX, BX  XCHG AX, [BX]
  52. © DHBK 2005 52/Chapter2 Các lệnh di chuyển dữ liệu • Lệnh PUSH ❑ Dùng để cất 1 từ từ thanh ghi hoặc ô nhớ vào đỉnh ngăn xếp ❑ Cú pháp: PUSH Nguồn ❑ Mô tả: SP=SP-2, Nguồn => {SP} ❑ Giới hạn: thanh ghi 16 bit hoặc là 1 từ nhớ ❑ Lệnh này không tác động đến cờ ❑ Ví dụ:  PUSH BX  PUSH PTR[BX] • Lệnh PUSHF ❑ Cất nội dung của thanh ghi cờ vào ngăn xếp
  53. © DHBK 2005 53/Chapter2 Các lệnh di chuyển dữ liệu • Ví dụ về lệnh PUSH PUSH AX PUSH BX SP 1300A 1300A 1300A 13009 13009 12 13009 12 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
  54. © DHBK 2005 54/Chapter2 Các lệnh di chuyển dữ liệu • Lệnh POP ❑ Dùng để lấy lại 1 từ vào thanh ghi hoặc ô nhớ từ đỉnh ngăn xếp ❑ Cú pháp: POP Đích ❑ Mô tả: {SP} => Đích, SP=SP+2 ❑ Giới hạn: thanh ghi 16 bit (trừ CS) hoặc là 1 từ nhớ ❑ Lệnh này không tác động đến cờ ❑ Ví dụ:  POP BX  POP PTR[BX] • Lệnh POPF ❑ Lấy 1 từ từ đỉnh ngăn xếp rồi đưa vào thanh ghi cờ
  55. © DHBK 2005 55/Chapter2 Các lệnh di chuyển dữ liệu • Ví dụ lệnh POP POP DX 1300A 1300A 13009 12 13009 12 13008 34 13008 34 SP 13007 78 13007 78 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
  56. © DHBK 2005 56/Chapter2 Các lệnh di chuyển dữ liệu • Lệnh IN ❑ Dùng để đọc 1 byte hoặc 2 byte dữ liệu từ cổng vào thanh ghi AL hoặc AX ❑ Cú pháp: IN Acc, Port ❑ Lệnh này không tác động đến cờ ❑ Ví dụ:  IN AX, 00H  IN AL, F0H  IN AX, DX • Lệnh OUT ❑ Dùng để đưa 1 byte hoặc 2 byte dữ liệu từ thanh ghi AL hoặc AX ra cổng ❑ Cú pháp: OUT Port, Acc ❑ Lệnh này không tác động đến cờ ❑ Ví dụ:  OUT 00H, AX  OUT F0H, AL  OUT DX, AX
  57. © DHBK 2005 57/Chapter2 Các lệnh di chuyển dữ liệu • Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW ❑ Dùng để chuyển một phần tử của chuỗi này sang một chuỗi khác ❑ Cú pháp: MOVS chuỗi đích, chuỗi nguồn MOVSB MOVSW ❑ Thực hiện: DS:SI là địa chỉ của phần tử trong chuỗi nguồn ES:DI là địa chỉ của phần tử trong chuỗi đích Sau mỗi lần chuyển SI=SI +/- 1, DI=DI +/- 1 hoặc SI=SI +/- 2, DI=DI +/- 2 tuỳ thuộc vào cờ hướng DF là 0/1 ❑ Lệnh này không tác động đến cờ ❑ Ví dụ: MOVS byte1, byte2
  58. © DHBK 2005 58/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 ❑ Các lệnh di chuyển dữ liệu  Các lệnh số học và logic ❑ Các lệnh điều khiển chương trình • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  59. © DHBK 2005 59/Chapter2 Các lệnh số học và logic • ADD, ADC, SUB, MUL, IMUL, DIV, IDIV, INC, DEC • AND, OR, NOT, NEG, XOR • Lệnh quay và dịch: RCL, RCR, SAL, SAR, SHL, SHR • Lệnh so sánh: CMP, CMPS • Lệnh ADD ❑ Lệnh cộng hai toán hạng ❑ Cú pháp: ADD Đích, nguồn ❑ Thực hiện: Đích=Đích + nguồn ❑ Giới hạn: toán hạng không được là 2 ô nhớ và thanh ghi đoạn ❑ Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF ❑ Ví dụ: ADD AX, BX ADD AX, 40H
  60. © DHBK 2005 60/Chapter2 Các lệnh số học và logic • Lệnh ADC ❑ Lệnh cộng có nhớ hai toán hạng ❑ Cú pháp: ADC Đích, nguồn ❑ Thực hiện: Đích=Đích + nguồn+CF ❑ Giới hạn: toán hạng không được là 2 ô nhớ và thanh ghi đoạn ❑ Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF ❑ Ví dụ:  ADC AL, 30H • Lệnh SUB ❑ Lệnh trừ ❑ Cú pháp: SUB Đích, nguồn ❑ Thực hiện: Đích=Đích - nguồn ❑ Giới hạn: toán hạng không được là 2 ô nhớ và thanh ghi đoạn ❑ Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF ❑ Ví dụ:  SUB AL, 30H
  61. © DHBK 2005 61/Chapter2 Các lệnh số học và logic • Lệnh MUL ❑ Lệnh nhân số không dấu ❑ Cú pháp: MUL nguồn ❑ Thực hiện:  AX=AL* nguồn8bit DXAX=AX*nguồn16bit ❑ Lệnh này thay đổi cờ: CF, OF ❑ Ví dụ: MUL BL • Lệnh IMUL ❑ nhân số có dấu
  62. © DHBK 2005 62/Chapter2 Các lệnh số học và logic • Lệnh DIV ❑ Lệnh chia 2 số không dấu ❑ Cú pháp: DIV nguồn ❑ Thực hiện: AL = thương (AX / nguồn8bit) ; AH=dư (AX / nguồn8bit) AX = thương (DXAX / nguồn16bit) ; DX=dư (DXAX / nguồn16bit) ❑ Lệnh này không thay đổi cờ ❑ Ví dụ: DIV BL • Lệnh IDIV ❑ chia 2 số có dấu
  63. © DHBK 2005 63/Chapter2 Các lệnh số học và logic • Lệnh INC ❑ Lệnh cộng 1 vào toán hạng là thanh ghi hoặc ô nhớ ❑ Cú pháp: INC Đích ❑ Thực hiện: Đích=Đích + 1 ❑ Lệnh này thay đổi cờ: AF, OF, PF, SF, ZF ❑ Ví dụ: INC AX • Lệnh DEC ❑ Lệnh trừ 1 từ nội dung một thanh ghi hoặc ô nhớ ❑ Cú pháp: DEC Đích ❑ Thực hiện: Đích=Đích - 1 ❑ Lệnh này thay đổi cờ: AF, OF, PF, SF, ZF ❑ Ví dụ: DEC [BX]
  64. © DHBK 2005 64/Chapter2 Các lệnh số học và logic • Lệnh AND ❑ Lệnh AND logic 2 toán hạng ❑ Cú pháp: AND Đích, nguồn ❑ Thực hiện: Đích=Đích And nguồn ❑ Giới hạn: toán hạng không được là 2 ô nhớ hoặc thanh ghi đoạn ❑ Lệnh này thay đổi cờ: PF, SF, ZF và xoá cờ CF, OF ❑ Ví dụ: AND BL, 0FH • Lệnh XOR, OR: tương tự như lệnh AND • Lệnh NOT: đảo từng bit của toán hạng • Lệnh NEG: xác định số bù 2 của toán hạng
  65. © DHBK 2005 65/Chapter2 Các lệnh số học và logic • Lệnh CMP ❑ Lệnh so sánh 2 byte hoặc 2 từ ❑ Cú pháp: CMP Đích, nguồn ❑ Thực hiện:  Đích = nguồn : CF=0 ZF=1  Đích> nguồn : CF=0 ZF=0  Đích < nguồn : CF=1 ZF=0 ❑ Giới hạn: toán hạng phải cùng độ dài và không được là 2 ô nhớ • Lệnh CMPS ❑ Dùng để so sánh từng phần tử của 2 chuỗi có các phần tử cùng loại ❑ Cú pháp: CMPS chuỗi đích, chuỗi nguồn CMPSB CMPSW ❑ Thực hiện:  DS:SI là địa chỉ của phần tử trong chuỗi nguồn  ES:DI là địa chỉ của phần tử trong chuỗi đích  Sau mỗi lần so sánh SI=SI +/- 1, DI=DI +/- 1 hoặc SI=SI +/- 2, DI=DI +/- 2 tuỳ thuộc vào cờ hướng DF là 0/1 ❑ Cập nhật cờ AF, CF, OF, PF, SF, ZF
  66. © DHBK 2005 66/Chapter2 Các lệnh số học và logic • Lệnh RCL ❑ Lệnh quay trái thông qua cờ nhớ ❑ Cú pháp: RCL Đích, CL (với số lần quay lớn hơn 1) RCLĐích, 1 RCL Đích, Số lần quay (80286 trở lên) ❑ Thực hiện: quay trái đích CL lần ❑ Đích là thanh ghi (trừ thanh ghi đoạn) hoặc ô nhớ ❑ Lệnh này thay đổi cờ: CF, OF CF MSB LSB • Lệnh RCR ❑ Lệnh quay phải thông qua cờ nhớ
  67. © DHBK 2005 67/Chapter2 Các lệnh số học và logic • Lệnh ROL ❑ Lệnh quay trái ❑ Cú pháp: ROL Đích, CL (với số lần quay lớn hơn 1) ROL Đích, 1 ROL Đích, Số lần quay (80286 trở lên) ❑ Thực hiện: quay trái đích CL lần ❑ Đích là thanh ghi (trừ thanh ghi đoạn) hoặc ô nhớ ❑ Lệnh này thay đổi cờ: CF, OF CF MSB LSB • Lệnh ROR ❑ Lệnh quay phải
  68. © DHBK 2005 68/Chapter2 Các lệnh số học và logic • Lệnh SAL ❑ Lệnh dịch trái số học ❑ Cú pháp: SAL Đích, CL (với số lần dịch lớn hơn 1) SAL Đích, 1 SAL Đích, số lần dịch (80286 trở lên) ❑ Thực hiện: dịch trái đích CL bit tương đương với Đích=Đích*2CL ❑ Lệnh này thay đổi cờ SF, ZF, PF CF MSB LSB 0 • Lệnh SHL ❑ Lệnh dịch trái logic tương tự như SAL
  69. © DHBK 2005 69/Chapter2 Các lệnh số học và logic • Lệnh SAR ❑ Lệnh dịch phải số học ❑ Cú pháp: SAR Đích, CL (với số lần dịch lớn hơn 1) SAR Đích, 1 hoặc SAR Đích, số lần dịch (80286 trở lên) ❑ Thực hiện: dịch phải đích CL bit ❑ Lệnh này thay đổi cờ SF, ZF, PF, CF mang giá trị của MSB MSB LSB CF
  70. © DHBK 2005 70/Chapter2 Các lệnh số học và logic • Lệnh SHR ❑ Lệnh dịch phải logic ❑ Cú pháp: SHR Đích, CL (với số lần dịch lớn hơn 1) SHR Đích, 1 hoặc SHR Đích, số lần dịch (80286 trở lên) ❑ Thực hiện: dịch phải đích CL bit ❑ Lệnh này thay đổi cờ SF, ZF, PF, CF mang giá trị của LSB MSB LSB CF 0 Chú ý: Trong các lệnh dịch và quay, toán hạng không được là thanh ghi đoạn
  71. © DHBK 2005 71/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 ❑ Các lệnh di chuyển dữ liệu ❑ Các lệnh số học và logic  Các lệnh điều khiển chương trình  Lệnh nhảy không điều kiện: JMP  Lệnh nhảy có điều kiện JE, JG, JGE, JL, JLE  Lệnh lặp LOOP  Lệnh gọi chương trình con CALL  Lệnh gọi chương trình con phục vụ ngắt INT và IRET • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  72. © DHBK 2005 72/Chapter2 Lệnh nhảy không điều kiện JMP • Dùng để nhảy tới một địa chỉ trong bộ nhớ • 3 loại: nhảy ngắn, gần và xa ❑ Lệnh nhảy ngắn (short jump) Độ dài lệnh 2 bytes: E B Độ lệch Phạm vi nhảy: -128 đến 127 bytes so với lệnh tiếp theo lệnh JMP Thực hiện: IP=IP + độ lệch Ví dụ: XOR BX, BX Nhan: MOV AX, 1 ADD AX, BX JMP SHORT Nhan
  73. © DHBK 2005 73/Chapter2 Lệnh nhảy không điều kiện JMP ❑ Lệnh nhảy gần (near jump) Phạm vi nhảy: ± 32 Kbytes so với lệnh tiếp theo lệnh JMP Ví dụ: XOR BX, BX XOR CX, CX XOR CX, CX Nhan: MOV AX, 1 MOV AX, 1 MOV AX, 1 ADD AX, BX ADD AX, BX ADD AX, BX JMP NEAR Nhan JMP NEAR PTR BX JMP WORD PTR [BX] Thực hiện: IP=IP+ độ lệch IP=BX IP=[BX+1] [BX] E 9 Độ lệchLo Độ lệchHi Nhảy gián tiếp
  74. © DHBK 2005 74/Chapter2 Lệnh nhảy không điều kiện JMP ❑ Lệnh nhảy xa (far jump) Độ dài lệnh 5 bytes đối với nhảy tới nhãn: E A IP Lo IP Hi CS Lo CS Hi Phạm vi nhảy: nhảy trong 1 đoạn mã hoặc nhảy sang đoạn mã khác Ví dụ: EXTRN Nhan: FAR XOR CX, CX Next: MOV AX, 1 MOV AX, 1 ADD AX, BX ADD AX, BX JMP FAR PTR Next JMP DWORD PTR [BX] JMP FAR Nhan IP = [BX+1][BX] Thực hiện: IP=IP của nhãn CS= [BX+3][BX+2] CS=CS của nhãn
  75. © 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
  76. © DHBK 2005 76/Chapter2 Lệnh nhảy có điều kiện • JE or JZ, JNE or JNZ, JG, JGE, JL, JLE (dùng cho số có dấu) và JA, JB, JAE, JBE (dùng cho số không dấu) • Nhảy được thực hiện phụ thuộc vào các cờ • Là các lệnh nhảy ngắn • Ví dụ: Nhan1: XOR BX, BX Nhan2: MOV AX, 1 CMP AL, 10H Thực hiện: IP=IP + độ dịch JNE Nhan1 JE Nhan2
  77. © DHBK 2005 77/Chapter2 Lệnh lặp LOOP • LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ • Là lệnh phối hợp giữa DEC CX và JNZ XOR AL, AL XOR AL, AL XOR AL, AL MOV CX, 16 MOV CX, 16 MOV CX, 16 Lap: INC AL Lap: INC AL Lap: INC AL LOOP Lap CMP AL, 10 CMP AL, 10 LOOPE Lap LOOPNE Lap Lặp đến khí CX=0 Lặp đến khí CX=0 Lặp đến khí CX=0 hoặc AL<>10 hoặc AL=10
  78. © DHBK 2005 78/Chapter2 Lệnh CALL • Dùng để gọi chương trình con • Có 2 loại: CALL gần và CALL xa ❑ CALL gần (near call): tương tự như nhảy gần Gọi chương trình con ở trong cùng một đoạn mã Tong PROC NEAR Tong PROC NEAR CALL WORD PTR [BX] ADD AX, BX ADD AX, BX ADD AX, CX ADD AX, CX RET Tong ENDP RET Tong ENDP MOV BX, OFFSET Tong CALL BX CALL Tong Cất IP vào ngăn xếp Cất IP vào ngăn xếp Cất IP vào ngăn xếp IP=IP + dịch chuyển IP= BX IP= [BX+1] [BX] RET: lấy IP từ ngăn xếp RET: lấy IP từ ngăn xếp RET: lấy IP từ ngăn xếp
  79. © DHBK 2005 79/Chapter2 Lệnh CALL ❑ CALL xa (far call): tương tự như nhảy xa Gọi chương trình con ở ngoài đoạn mã Tong PROC FAR CALL DWORD PTR [BX] ADD AX, BX ADD AX, CX RET Tong ENDP CALL Tong Cất CS vào ngăn xếp Cất CS vào ngăn xếp Cất IP vào ngăn xếp Cất IP vào ngăn xếp IP=IP của Tong IP = [BX+1][BX] CS =CS của Tong CS= [BX+3][BX+2] RET: lấy IP từ ngăn xếp RET: lấy IP từ ngăn xếp lấy CS từ ngăn xếp lấy CS từ ngăn xếp
  80. © DHBK 2005 80/Chapter2 Lệnh ngắt INT và IRET • INT gọi chương trình con phục vụ ngắt (CTCPVN) • Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H ❑ 256 vector ngắt ❑ 1 vector 4 bytes, chứa IP và CS của CTCPVN ❑ 32 vector đầu dành riêng cho Intel ❑ 224 vector sau dành cho người dùng • Cú pháp: INT Number • Ví dụ: INT 21H gọi CTCPVN của DOS
  81. © DHBK 2005 81/Chapter2 Lệnh ngắt INT và IRET • Thực hiện INT: ❑ Cất thanh ghi cờ vào ngăn xếp ❑ IF=0 (cấm các ngắt khác tác động), TF=0 (chạy suốt) ❑ Cất CS vào ngăn xếp ❑ Cất IP vào ngăn xếp ❑ IP=[N*4], CS=[N*4+2] • Gặp IRET: ❑ Lấy IP từ ngăn xếp ❑ Lấy CS từ ngăn xếp ❑ Lấy thanh ghi cờ từ ngăn xếp
  82. © DHBK 2005 82/Chapter2 Chương 2: Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Sơ đồ chân • Bản đồ bộ nhớ của máy tính IBM-PC • Các chế độ địa chỉ của 8086 • Cách mã hoá lệnh của 8086 • Mô tả tập lệnh của 8086 • Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
  83. © DHBK 2005 83/Chapter2 Đánh địa chỉ bộ nhớ ở chế độ bảo vệ • Cho phép truy cập dữ liệu và chương trình ở vùng nhớ trên 1M • Thanh ghi lệch chứa địa chỉ lệch • Thanh ghi đoạn chứa từ chọn đoạn (segment selector) ❑ từ chọn đoạn chọn 1 phần tử trong 1 trong 2 bảng mô tả đoạn (descriptor table), mồi bảng có kích thước 64 KB Bảng mô tả đoạn toàn cục (Global DT): chứa thông tin về các đoạn của bộ nhớ mà tất cả các chương trình có thể truy nhập Bảng mô tả đoạn cục bộ (Local DT): chứa thông tin về các đoạn của 1 chương trình ❑ Mô tả đoạn chứa thông tin về địa chỉ bắt đầu của đoạn
  84. © DHBK 2005 84/Chapter2 Đánh địa chỉ bộ nhớ ở chế độ bảo vệ 15 2 1 0 Index TI RPL RPL: mức ưu tiên yêu cầu, 00 cao nhất, 11 thấp nhất TI=0, sử dụng bảng toàn cục, TI=1 sử dụng bảng cục bộ Index: 13 bit chỉ số để chọn 1 trong 8K mô tả đoạn trong bảng mô tả đoạn G D O A 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
  85. © DHBK 2005 85/Chapter2 Đánh địa chỉ bộ nhớ ở chế độ bảo vệ • 80286 ❑ Base 24 bit: 000000H đến FFFFFFH (16 MB) ❑ Limit 16 bit: kích thước đoạn: từ 1 đến 64 KB ❑ Địa chỉ vật lý= Base + độ lệch ❑ 1 chương trình có thế sử dụng tối đa: 2*8K*64 K= 1GB bộ nhớ => bộ nhớ ảo (virtual memory) • 80386/486/Pentium ❑ Base 32 bit: 00000000H đến FFFFFFFFH (4 GB) ❑ Limit 20 bit:  G=0: kích thước đoạn: từ 1 đến 1MB  G=1: kích thước đoạn từ 4K đến 4 GB ❑ Địa chỉ vật lý= Base + độ lệch ❑ 1 chương trình có thế sử dụng tối đa: 2*8K*4 GB= 64 Terabytes bộ nhớ