Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ của máy tính (Assembly) - Phần 2.1

ppt 61 trang phuongnguyen 3951
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ của máy tính (Assembly) - Phần 2.1", để 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_kien_truc_may_tinh_chuong_2_ngon_ngu_cua_may_tinh.ppt

Nội dung text: Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ của máy tính (Assembly) - Phần 2.1

  1. KIẾN TRÚC MÁY TÍNH Giảng viên: Ths Phạm Thanh Bình Bộ môn Kỹ thuật máy tính & mạng Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 1
  2. Chương 2: NGÔN NGỮ CỦA MÁY TÍNH (ASSEMBLY) Các hệ đếm Biểu diễn số và kí tự trong máy tính Tổ chức CPU và bộ nhớ trong Các lệnh Assembly cơ bản Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 2
  3. Mở đầu Hợp ngữ (Assembly language) là một ngôn ngữ lập trình cấp thấp, mục đích nhằm giao tiếp trực tiếp với phần cứng của máy tính. Máy tính chỉ có khả năng hiểu được các tín hiệu 0, 1 dưới dạng điện hoặc từ, gọi là tín hiệu nhị phân (ngôn ngữ nhị phân còn được gọi là ngôn ngữ máy). Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 3
  4. Mở đầu Các lệnh Assembly thực chất là dạng kí hiệu của ngôn ngữ máy: Sử dụng các kí hiệu bằng tiếng Anh để biểu diễn các lệnh ngôn ngữ máy cho dễ nhớ hơn. Lệnh ngôn ngữ máy Lệnh hợp ngữ 0010 1010 1011 0100 MOV AH,2Ah 0010 0001 1100 1101 INT 21h Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 4
  5. Bài 2.1 – Các hệ đếm Hệ thập phân (hệ đếm cơ số 10) Hệ nhị phân (hệ đếm cơ số 2) Hệ thập lục phân (hệ đếm cơ số 16) Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 5
  6. Hệ thập phân (Decimal) Hệ thập phân sử dụng 10 kí hiệu (0, 1, 2, 9) để biểu diễn thông tin. Các số trong hệ thập phân được biểu diễn dưới dạng tổng các luỹ thừa cơ số 10. Ví dụ: Số 1998 trong hệ thập phân có thể biểu diễn như sau: 3 2 1 0 (1998)10 = 1x10 + 9x10 + 9x10 + 8x10 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 6
  7. Hệ thập phân (Decimal) Trong ngôn ngữ Assembly, người ta kí hiệu một số thập phân bằng chữ D hoặc d ở cuối (viết tắt của Decimal), cũng có thể không cần viết các chữ đó. Ví dụ: (1998)10 được kí hiệu là: 1998D, 1998d, hoặc đơn giản là 1998 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 7
  8. Hệ nhị phân (Binary) Hệ nhị phân sử dụng 2 kí hiệu (0,1) để biểu diễn thông tin. Các số trong hệ nhị phân được biểu diễn dưới dạng tổng các luỹ thừa cơ số 2. Ví dụ: Số 1101 trong hệ nhị phân có thể biểu diễn như sau: 3 2 1 0 (1101)2 = 1x2 + 1x2 + 0x2 + 1x2 = (13)10 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 8
  9. Hệ nhị phân (Binary) Trong ngôn ngữ Assembly, người ta kí hiệu một số nhị phân bằng chữ B hoặc b ở cuối (viết tắt của Binary). Ví dụ: (1101)2 được kí hiệu là: 1101B, hoặc 1101b Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 9
  10. Hệ thập lục phân (Hexa Decimal) Hệ thập lục phân sử dụng 16 kí hiệu (0, 1, 2, 9, A, B, C, D, E, F) để biểu diễn thông tin. Các kí hiệu A, B, C, D, E, F lần lượt ứng với các giá trị 10, 11, 12, 13, 14, 15 trong hệ thập phân. Các số trong hệ thập lục phân được biểu diễn dưới dạng tổng các luỹ thừa cơ số 16. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 10
  11. Hệ thập lục phân (Hexa Decimal) Ví dụ: Số 2B trong hệ thập lục phân có thể biểu diễn như sau: 1 0 (2B)16 = 2x16 + Bx16 = (43)10 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 11
  12. Hệ thập lục phân (Hexa Decimal) Trong ngôn ngữ Assembly, người ta kí hiệu một số thập lục phân bằng chữ H hoặc h ở cuối (viết tắt của Hexa Decimal). Ví dụ: (2B)16 được kí hiệu là: 2BH, hoặc 2Bh Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 12
  13. Chú ý: Kí hiệu một số thập lục phân trong chương trình hợp Assembly phải luôn bắt đầu bằng số. Ví dụ số (FA)16 được kí hiệu là 0FAh (chứ không kí hiệu là FAh). Hệ thập lục phân (gọi tắt là hệ hex) là hệ đếm được sử dụng nhiều nhất trong Assembly, do nó có thể biểu diễn những dãy bít nhị phân dài bằng những kí hiệu ngắn gọn, dễ nhớ hơn Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 13
  14. Chuyển đổi giữa các hệ đếm Chuyển từ hệ thập phân về hệ nhị phân: Đem số thập phân chia liên liếp cho 2, cho tới khi thương số bằng 0 thì dừng lại. Viết các số dư ngược từ dưới lên ta thu được số nhị phân tương ứng Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 14
  15. Chuyển đổi giữa các hệ đếm Ví dụ: Chuyển số thập phân 13 sang hệ nhị phân. 13 2 dư 1 6 2 dư 0 3 2 dư 1 1 2 dư 1 0 Viết các số dư ngược từ dưới lên ta thu được số nhị phân 1101b Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 15
  16. Chuyển đổi giữa các hệ đếm Chuyển từ hệ thập phân về hệ thập lục phân: Đem số thập phân chia liên liếp cho 16, cho tới khi thương số bằng 0 thì dừng lại. Viết các số dư ngược từ dưới lên ta thu được số thập lục phân tương ứng Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 16
  17. Chuyển đổi giữa các hệ đếm Ví dụ: Chuyển số thập phân 43 sang hệ thập lục phân. 43 16 dư 11 2 16 dư 2 0 Viết các số dư ngược từ dưới lên ta thu được số thập lục phân 2Bh (chú ý là 11d = 0Bh). Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 17
  18. Chuyển đổi giữa các hệ đếm Chuyển đổi giữa hệ nhị phân và hệ thập lục phân: Việc chuyển đổi giữa 2 hệ đếm này khá dễ dàng do mỗi kí hiệu trong hệ hex lại tương ứng với 4 kí hiệu nhị phân. Xem bảng chuyển đổi sau: Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 18
  19. Bảng chuyển đổi Hệ thập phân Hệ Hex Hệ nhị phân 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 19
  20. Chuyển đổi giữa các hệ đếm Ví dụ 1: Chuyển đổi 2Ah sang hệ nhị phân. Giải: Tra bảng ta thấy: 2h = 0010b, Ah = 1010b Vậy 2Ah = 00101010b Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 20
  21. Chuyển đổi giữa các hệ đếm Ví dụ 2: Chuyển đổi 10110110b sang hệ hex. Giải: Đầu tiên ta chia dãy bít nhị phân thành từng nhóm 4 bít, thu được 2 nhóm sau: 0110 và 1011. Tra bảng ta thấy: 0110b = 6h, 1011b = Bh Vậy 10110110b = B6h Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 21
  22. Bài 2.2 - Biểu diễn số nguyên trong máy tính Dãy bít Số nguyên không dấu Số nguyên có dấu Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 22
  23. Dãy bít Do giới hạn của phần cứng máy tính, dữ liệu trong máy tính thường được biểu diễn bởi các nhóm 8 bít (gọi là Byte) 1 byte = 8 bit 2 byte = 16 bit = 1 word Người ta có thể ghép nhiều byte hay nhiều word để tạo thành dãy bít dài hơn. Dãy bít càng dài thì lượng thông tin biểu diễn được càng lớn. Nếu gọi N là số bít của dãy thì số khả năng biểu diễn = 2N Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 23
  24. Dãy bít Xét một dãy bít nhị phân: 1 0 0 1 0 0 0 msb lsb Bít đầu tiên (bên trái) được gọi là bít nặng nhất hay bít cao nhất của dãy (Most Significant Bit). Bít cuối cùng (bên phải) được gọi là bít nhẹ nhất hay bít thấp nhất của dãy (Least Significant Bit). Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 24
  25. Số nguyên không dấu Một dãy bít sẽ tương ứng với một số nguyên lớn hơn hoặc bằng 0 Ví dụ: Biểu diễn số nguyên 13 trong máy tính. Ở phần trước ta đã biết: số nguyên 13 chuyển sang hệ nhị phân sẽ là 1101 Trong máy tính sẽ có nhiều cách để biểu diễn số nguyên này: + Số nguyên dạng byte (8 bit): 00001101 + Số nguyên dạng word (16 bit): 00000000 00001101 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 25
  26. Số nguyên có dấu Một dãy bít sẽ tương ứng với một số nguyên, có thể âm hoặc dương. Khi biểu diễn dưới dạng nhị phân ta phải dành ra 1 bít để xác định dấu. Đó là bít đầu tiên của dãy (bít nặng nhất - Msb). + Msb = 0: Dấu Dương + Msb = 1: Dấu Âm Như vậy, nếu chiều dài dãy bít là 8 thì bít đầu tiên để xác định dấu, 7 bít còn lại xác định giá trị số nguyên? Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 26
  27. Ví dụ: Số +13 được biểu diễn bởi dãy bít 0000 1101. Vậy số -13 được biểu diễn như thế nào, có phải là dãy bít 1000 1101 hay không? Nguyên tắc để biểu diễn số âm trong máy tính: phải thoả mãn điều kiện sau Số Âm (nhị phân) + Số Dương (nhị phân) = 0 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 27
  28. Giả sử số -13 được biểu diễn bởi dãy bít 1000 1101, ta đem nó cộng với dãy bít biểu diễn số +13 để kiểm tra: 0000 1101 + 1000 1101 1001 1010 ≠ 0 Ta thấy tổng thu được khác 0, như vậy đây không phải là dãy bít cần tìm Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 28
  29. Quy tắc tìm số đối: Cho 1 số nguyên A. Giả sử đã biết dãy bít biểu diễn A, khi đó muốn tìm dãy bít biểu diễn số -A ta làm như sau: Bước 1: Tìm số bù 1 của A bằng cách đảo tất cả các bít. Bước 2: Tìm số bù 2 (bằng cách lấy số bù 1 cộng với 1) Số bù 2 tìm được chính là dãy bít biểu diễn số -A. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 29
  30. Ví dụ 1: Xét A = 13 = 0000 1101 Khi đó số bù 1 của A là 1111 0010 Tìm số bù 2 (bằng cách lấy số bù 1 cộng với 1) 1111 0010 + 1 1111 0011 Như vậy -A = 1111 0011 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 30
  31. Kiểm tra lại bằng cách cộng 2 dãy bít: 0000 1101 + 1111 0011 1 0000 0000 Kết quả thu được bằng 0 chứng tỏ ta đã tìm đúng Vậy -13 = 1111 0011b Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 31
  32. Chứng minh: Số -1 trong máy tính ứng với một dãy toàn bít 1: -1 = 1111 1111b Vì: A + A = −1 Nên: A = −A −1 Suy ra: − A = A +1 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 32
  33. Ví dụ 2: Cho một dãy bít nhị phân sau đây (16 bit): 1110 0111 0001 1000b Hãy xác định xem nó biểu diễn số nguyên nào? Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 33
  34. Giải: Gọi số nguyên đó là N. Có 2 trường hợp xảy ra: Nếu đây là số nguyên không dấu: N = 1x215 + 1x214 + 1x213 + 1x210 + 1x 29 + 1x28 + 1x24 + 1x23 = 32768 + 16384 +8192 + 1024 + 512 + 256 + 16 + 8 = 59160 Nếu đây là số nguyên có dấu: Vì Msb = 1 nên N là số âm. Để đơn giản ta sẽ xác định –N (số dương) trước, từ đó suy ra N. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 34
  35. Tìm –N băng cách tìm số bù 2 của N Bước 1: đảo bít Số bù 1 = 0001 1000 1110 0111 Bước 2: đem cộng với 1 0001 1000 1110 0111 + 1 0001 1000 1110 1000 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 35
  36. Ta tìm được –N = 0001 1000 1110 1000b -N = 1x212 + 1x211 + 1x 27 + 1x26 + 1x25 + 1x23 = 4096 + 2048 + 128 + 64 + 32 + 8 = 6376 Vậy N = -6376 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 36
  37. Bài 2.3 - Biểu diễn kí tự trong máy tính Các kí tự cũng được biểu diễn bởi các dãy bít nhị phân Cần phải có một hệ thống quy ước chung mang tính quốc tế Cách thức mã hoá kí tự theo bảng mã ASCII (American Standard Code for Information Interchange) được sử dụng phổ biến nhất. Hệ thống này sử dụng 8 bít để biểu diễn 1 kí tự Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 37
  38. Bảng mã ASCII Kí tự Mã nhị phân Mã hex A 0100 0001 41h B 0100 0010 42h a 0110 0001 61h b 0110 0010 62h 1 0011 0001 31h 2 0011 0010 32h * 0010 1010 2Ah + 0010 1011 2Bh Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 38
  39. Bài 2.4 - Tổ chức CPU Các thành phần chính của bộ vi xử lý Họ vi xử lý Intel x86 Bộ vi xử lý 8086 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 39
  40. Nhắc lại về khối xử lý Nhập Xử lý Xuất Lưu trữ Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 40
  41. Khối xử lý Đây là phần quan trọng nhất của một máy tính, bao gồm 3 bộ phận chính: Bộ vi xử lý – CPU Bộ nhớ trong Các mạch vào ra Ngoài ra còn có hệ thống các dây dẫn, cáp nối để liên kết giữa các bộ phận trên (hệ thống Bus) Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 41
  42. Sơ đồ khối xử lý: Bus Bộ nhớ trong CPU Mạch vào/ra Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 42
  43. Các thành phần của khối xử lý Bộ vi xử lý – CPU (Central Processing Unit): Là bộ não của máy tính, nó xử lý các thông tin và điều khiển mọi hoạt động của máy tính. Bộ nhớ trong: Là bộ nhớ có khả năng liên lạc trực tiếp với bộ vi xử lý,là nơi lưu trữ dữ liệu phục vụ cho quá trình xử lý. Các mạch vào ra: Để điều khiển việc giao tiếp với thiết bị ngoại vi. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 43
  44. Các thành phần chính của bộ vi xử lý ALU (Arithmetic & Logic Unit): Khối số học và logic. Đây là nơi thực hiện các phép tính số học (cộng, trừ, nhân, chia ) và các phép logic (Not, And, Or ). Các thanh ghi: Cung cấp khả năng nhớ bên trong CPU. Mỗi thanh ghi có khả năng chứa được một dãy các bít dữ liệu (độ dài còn phụ thuộc vao từng loại CPU). Hệ thống nối ghép bên trong CPU (Bus nội bộ): Cho phép liên lạc giữa các bộ phận bên trong CPU. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 44
  45. Họ vi xử lý Intel x86 Bộ vi xử lý đầu tiên thuộc dòng này là 8086, ra đời năm 1978, là bộ vi xử lý 16 bit đầu tiên của Intel. 8088 ra đời sau 8086, về cơ bản nó cũng giống như 8086, nhưng có giá thành rẻ hơn vì chỉ có bus dữ liệu 8 bít, và tốc độ cũng thấp hơn Tiếp theo là các bộ vi xử lý 80186, 80286, 80386, 80486, 80586 (Pentium), PII, PIII, P4, Core Duo Các bộ vi xử lý ngày càng trở nên mạnh mẽ hơn với độ dài các thanh ghi lớn hơn, tốc độ đồng hồ cao hơn, bề rộng bus lớn hơn Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 45
  46. Bộ vi xử lý 8086 8086 có cấu trúc đơn giản, dễ tìm hiểu Hầu hết các lệnh của nó đều được các bộ vi xử lý sau này kế thừa Các chương trình viết cho 8086 vẫn có thể chạy trên các bộ vi xử lý hiện đại hơn Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 46
  47. 14 thanh ghi cơ bản của 8086 (Mỗi thanh ghi dài 16 bít) Nhóm các thanh ghi dữ liệu (Thanh ghi công dụng chung): AX AH AL BX BH BL CX CH CL DX DH DL Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 47
  48. Nhóm các thanh ghi đoạn: CS DS SS ES Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 48
  49. Nhóm các thanh ghi con trỏ và chỉ số: SI DI SP BP IP Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 49
  50. Thanh ghi trạng thái (Thanh ghi cờ - Flag): Thanh ghi này dùng để xác định trạng thái của bộ vi xử lý. Mỗi bít trên thanh ghi cờ có một tên riêng, có một công dụng riêng trong việc phản ánh trạng thái Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 50
  51. Bài 2.5 - Tổ chức Bộ nhớ trong ROM và RAM Địa chỉ vật lý Địa chỉ logic Sự phân chia không gian nhớ Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 51
  52. Bộ nhớ trong có 2 loại: ROM và RAM RAM (Random Access Memory): Bộ nhớ truy cập ngẫu nhiên, có thể đọc và ghi dữ liệu lên đó. Dữ liệu trên RAM sẽ mất đi khi tắt máy. ROM (Read Only Memory): Bộ nhớ chỉ đọc, không thể thay đổi nội dung của nó. Khi tắt máy thì dữ liệu trên ROM vẫn được giữ nguyên. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 52
  53. Địa chỉ vật lý Bộ nhớ của máy tính được cấu tạo bởi các phần tử nhớ 1 bit. Cứ 8 phần tử nhớ tạo thành một ô nhớ (1 byte). Các ô nhớ được sắp xếp tuần tự trong bộ nhớ và được đánh số lần lượt từ 0, 1, 2 Số hiệu các ô nhớ như trên được gọi là địa chỉ vật lý của ô nhớ. Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 53
  54. Tổ chức bộ nhớ trong hệ thống 8086 Bộ vi xử lý 8086 sử dụng 20 đường dây địa chỉ (bus địa chỉ 20 bít) để liên lạc với bộ nhớ (địa chỉ các ô nhớ là một dãy dài 20 bít) Số lượng cực đại các ô nhớ có thể đánh địa chỉ là 220 (= 1MB) Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 54
  55. Địa chỉ vật lý của các ô nhớ 1111 1111111 FFFFFh 0000 0000011 Địa chỉ dạng hex: 00003h 0000 0000010 00002h 0000 0000001 00001h 0000 0000000 1 ô nhớ 00000h 1 ô nhớ (20 bít) Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 55
  56. Địa chỉ logic Các thanh ghi của 8086 chỉ dài 16 bít, không thể chứa được địa chỉ dài 20 bít. Do đó người ta phải sử dụng một phương pháp đánh địa chỉ khác, gọi là địa chỉ logic Bộ nhớ được chia thành từng đoạn, mỗi đoạn có chiều dài tối đa 64 KB, các đoạn được đánh số lần lượt là 0, 1, 2, Các ô nhớ trong đoạn cũng được đánh số lần lượt là 0, 1, 2, (cực đại là 65535) Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 56
  57. Địa chỉ logic Địa chỉ logic của một ô nhớ sẽ gồm 2 phần: Số hiệu đoạn (segment) và vị trí của ô nhớ trong đoạn (offset) Người ta sử dụng 16 bít để đánh số các đoạn, như vậy địa chỉ segment sẽ nằm trong phạm vi từ 0000h đến FFFFh Người ta cũng sử dụng 16 bít để đánh số các ô nhớ trong đoạn đoạn, như vậy địa chỉ offset sẽ nằm trong phạm vi từ 0000h đến FFFFh, Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 57
  58. Ví dụ: Một ô nhớ có địa chỉ segment:offset = 10A2:34B4h, hãy xác định địa chỉ vật lý của nó Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 58
  59. Giải: Bước 1: Dịch địa chỉ segment về bên trái 4 bít (tương đương với dịch 1 kí hiệu hex). Ta thu được: 10A20h Bước 2: Lấy giá trị thu được ở bước 1 đem cộng với địa chỉ offset: 10A20h + 34B4h 13ED4h Vậy địa chỉ vật lý của ô nhớ đó là 13ED4h Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 59
  60. Sự phân chia không gian nhớ F0000h ROM BIOS E0000h D0000h } Để dành C0000h B0000h A0000h } Bộ nhớ hiển thị 90000h 20000h } Bộ nhớ cơ sở: 10 đoạn (640 KB) 10000h 00000h 64 KB Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 60
  61. Hết Phần 2.1 Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 2 - 61