Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 4: Mô hình von Neumann và kiến trúc tập lệnh LC-3

pdf 91 trang phuongnguyen 1400
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 4: Mô hình von Neumann và kiến trúc tập lệnh LC-3", để 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_he_thong_may_tinh_va_ngon_ngu_c_chuong_4_mo_hinh_v.pdf

Nội dung text: Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 4: Mô hình von Neumann và kiến trúc tập lệnh LC-3

  1. HỆ THỐNG MÁY TÍNH VÀ NGƠN NGỮ C CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3
  2. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 CHƢƠNG 4: MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.2 Một ví dụ về mơ hình von Neumann: LC-3 4.3 Quá trình xử lý lệnh 4.4 Thay đổi quá trình xử lý lệnh 4.5 Khái niệm ISA LC-3 4.6 Nhĩm lệnh thi hành 4.7 Nhĩm lệnh di chuyển dữ liệu 4.8 Nhĩm lệnh điều khiển 4.9 Ba cấu trúc lệnh trong LC-3 4.10 Một ví dụ
  3. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản Vào năm 1946, John von Neumann đã đưa ra một mơ hình máy tính cơ bản để xử lý các chương trình máy tính gồm năm bộ phận cơ bản: - bộ nhớ (memory) - đơn vị xử lý (processing unit) - thiết bị nhập (input) - thiết bị xuất (output) - đơn vị điều khiển (control unit). Chương trình máy tính được chứa trong bộ nhớ của máy tính. Việc điều khiển thứ tự các lệnh cần thực hiện sẽ do đơn vị điều khiển đảm trách.
  4. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản
  5. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.1 Bộ nhớ (Memory) Tổng quát, với số bit địa chỉ là k, chúng ta cĩ thể biểu diễn được 2k phần tử nhớ. Với kiến trúc tập lệnh của máy tính LC-3, chúng ta cĩ khơng gian địa chỉ là 216, và mỗi phần tử dài 16 bit.
  6. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.1 Bộ nhớ (Memory) Cĩ hai thao tác truy xuất bộ nhớ là đọc và ghi. Đọc thơng tin của một ơ nhớ: - đặt địa chỉ của ơ nhớ đĩ vào thanh ghi địa chỉ bộ nhớ MAR (Memory Address Register) - tín hiệu Read Sau một thời gian, thơng tin từ ơ nhớ cĩ địa chỉ trên sẽ được đặt vào thanh ghi dữ liệu bộ nhớ MDR (Memory Data Register).
  7. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.1 Bộ nhớ (Memory) Lưu một giá trị vào một ơ nhớ: - ghi địa chỉ của ơ nhớ đĩ vào thanh ghi MAR và giá trị cần lưu vào thanh ghi MDR - tín hiệu Write Enable tích cực. Khi đĩ, thơng tin đang ở trong thanh ghi MDR sẽ được ghi vào ơ nhớ cĩ địa chỉ trong thanh ghi MAR.
  8. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.1 Bộ nhớ (Memory)
  9. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.2 Đơn vị xử lý (Processing Unit) Đơn vị xử lý là bộ phận thực sự trong máy tính xử lý thơng tin. (chia, căn bậc hai, . ) Theo mơ hình von Neumann bộ phận xử lý chính là đơn vị số học luận lý ALU (Arithmetic Logic Unit) vì nĩ cĩ thể thực hiện các phép tính số học như cộng, trừ, và các thao tác logic cơ bản như AND, OR, và NOT. Các thao tác mà ALU của LC-3 cĩ thể thực hiện là ADD, AND, và NOT.
  10. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.2 Đơn vị xử lý (Processing Unit) Kích thước của các tốn hạng được ALU xử lý thường được xem như là chiều dài từ máy của máy tính. Mỗi tốn hạng được xem là một từ. Trong LC-3, ALU xử lý tốn hạng 16 bit. Chúng ta nĩi LC-3 cĩ chiều dài từ 16 bit. (32 bit như Intel Pentium 4 hoặc 64 bit như SUN SPARC-V9 và Intel Itanium.)
  11. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.2 Đơn vị xử lý (Processing Unit) Ngồi ra, để thực hiện tốt thao tác trong thời gian ngắn nhất, trong đơn vị xử lý cịn cĩ một bộ nhớ tạm, đĩ là tập các thanh ghi, mỗi thanh ghi cĩ cấu trúc như trong mục 3.4.3. Kích thước của thanh ghi luơn bằng với kích thước của tốn hạng đầu vào của ALU, cĩ nghĩa là mỗi thanh ghi chứa một từ máy. LC-3 cĩ tám thanh ghi (R0, R1, , R7), mỗi thanh ghi dài 16 bit. Cấp ISA của SPARC-V9 cĩ 32 thanh ghi (R0, R1, , R31), mỗi thanh ghi dài 64 bit.
  12. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.3 Xuất và nhập Để một máy tính xử lý thơng tin, thơng tin phải được đưa vào trong máy tính. Để sử dụng được kết quả đã được xử lý, các kết quả này phải được thể hiển bằng một cách nào đĩ ra bên ngồi máy tính. Các thiết bị làm các việc như vậy gọi là các thiết bị xuất nhập, cịn được gọi là các thiết bị ngoại vi. Trong LC-3, chúng ta cĩ hai thiết bị xuất nhập, đĩ là bàn phím và màn hình.
  13. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.4 Đơn vị điều khiển (Control Unit) Đơn vị điều khiển cũng như nhạc trưởng của một dàn nhạc, nĩ cĩ nhiệm vụ làm tất cả các bộ phận khác làm việc với nhau.
  14. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.1 Các thành phần cơ bản 4.1.4 Đơn vị điều khiển Để theo dõi lệnh nào đang được thực thi, đơn vị điều khiển cĩ thanh ghi lệnh IR (instruction register) để chứa lệnh đĩ. Để theo dõi lệnh cần được thực thi kế tiếp, đơn vị điều khiển cĩ một thanh ghi chứa địa chỉ của lệnh kế đĩ, PC (program counter),.
  15. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3 Các đầu mũi tên tơ đặc ký hiệu cho các phần tử dữ liệu chạy theo đường truyền tương ứng. Các đầu mũi tên khơng tơ đặc ký hiệu cho các tín hiệu điều khiển dùng để điều khiển các phần tử khác hoạt động.
  16. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3 Các bộ phận trong mơ hình von Neumann của LC-3 là: 1. Bộ nhớ (Memory) gồm các phần tử lưu trữ, cùng với thanh ghi MAR chỉ tới ơ nhớ riêng biệt, và thanh ghi MDR giữ nội dung của ơ nhớ trong quá trình ghi/đọc bộ nhớ. • Thanh ghi MAR dài 16 bit phản ảnh khơng gian địa chỉ bộ nhớ của LC-3 là 216 ơ nhớ. • Thanh ghi MDR dài 16 bit, cho biết thơng tin trong mỗi ơ nhớ là 16 bit.
  17. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3 2. Xuất/ Nhập (Input/Output) :Gồm bàn phím và màn hình. Để thao tác với bàn phím, ta cĩ hai thanh ghi, thanh ghi dữ liệu KBDR (Keyboard Data Register) giữ mã ASCII của các phím đã được nhấn, và thanh ghi trạng thái KBSR (Keyboard Status Register) lưu thơng tin về trạng thái của phím được ấn. Màn hình cũng cần hai thanh ghi để làm việc, thanh ghi DDR (Display Data Register) giữ mã ASCII của cái cần hiển thị, và thanh ghi DSR (Display Status Register) giữ thơng tin về trạng thái hoạt động của màn hình.
  18. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3 3.Đơn vị điều khiển (Processing unit) Gồm đơn vị số học luận lý ALU và tám thanh ghi (R0, , R7) để lưu các giá trị tạm thời cần cho quá trình tham khảo, tính tốn trong tương lai. ALU của LC-3 cĩ thể thực hiện một phép tính số học (cộng) và hai thao tác luận lý (AND và bù 1).
  19. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3 4. Đơn vị điều khiển (Control unit) gồm tất cả các phần tử cần thiết để quản lý quá trình đang được máy tính xử lý. Cấu trúc quan trọng nhất là máy trạng thái hữu hạn (Finite state machine), điều khiển tất cả các hoạt động. Nĩ hoạt động theo từng bước, từ chu kỳ xung clock này qua chu kỳ xung clock khác(CLK) Thanh ghi IR (instruction register) cũng là một đầu vào của máy trạng thái hữu hạn, để xác định các thao tác cần thực hiện trong quá trình thực thi lệnh LC-3 đang cĩ trong thanh ghi IR. Thanh ghi PC (program counter) cũng là một phần của đơn vị điều khiển, nĩ theo dõi lệnh kế cần được thực thi sau khi lệnh hiện thời hồn thành.
  20. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3
  21. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.2 Một ví dụ về mơ hình von Neumann: LC-3 Chú ý, tất cả đầu ra từ máy trạng thái hữu hạn trong hình 4.3 đều là các tín hiệu điều khiển, nên chúng đều cĩ đầu mũi tên rỗng. Ví dụ, một trong các đầu ra là 2 bit ALUK, dùng để quy định thao tác mà ALU cần thực hiện (add, and, và not) trong chu kỳ xung clock hiện hành. Đầu ra khác là GateALU, để quyết định việc xuất dữ liệu ra processor bus.
  22. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh Một vấn đề quan trọng trong mơ hình von Neumann là quá trình xử lý chương trình và dữ liệu được lưu giữ dưới dạng chuỗi các bit trong bộ nhớ máy tính. Quá trình gồm nhiều bước, mỗi bước cĩ chức năng riêng mà ta cần tìm hiều.
  23. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.1 Lệnh Đơn vị cơ bản nhất của quá trình xử lý của máy tính là lệnh. Lệnh gồm hai phần, mã lệnh (opcode) và tốn hạng (operand). Với LC-3, mỗi lệnh gồm 16 bit, được đánh số từ trái qua phải từ bit[15] tới bit[0]. Bit[15:12] chứa opcode. Điều này cĩ nghĩa là cĩ tổng cộng 24 mã lệnh khác nhau. Các bit từ bit[11:0] được dùng để xác định tốn hạng.
  24. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.1 Lệnh Ví dụ 4.1: Lệnh ADD (cộng) cĩ ba tốn hạng gồm hai tốn hạng nguồn (dữ liệu từ đĩ được cộng) và một tốn hạng đích (giữ tổng sau khi phép cộng được thực thi). Vì ISA LC-3 cĩ tám thanh ghi nên cĩ ba bit cần dùng để mã cho một thanh ghi. Lệnh cộng ADD cĩ dạng như sau:
  25. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.1 Lệnh Ví dụ 4.2: Lệnh LDR (LD xuất phát từ Load) sẽ vào ơ nhớ được xác định, đọc dữ liệu và lưu nĩ vào thanh ghi. Lệnh này cĩ hai tốn hạng là giá trị đọc được từ ơ nhớ và thanh ghi đích. Ký tự R trong LDR viết tắt từ register, cho biết cơ chế kiểu địa chỉ (addressing mode) xác định tốn hạng là ơ nhớ lưu dữ liệu, cụ thể là Base + offset. Lệnh này cĩ dạng như sau:
  26. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh Dưới sự điều phối của đơn vị điều khiển, các lệnh được xử lý một cách hệ thống theo từng bước. Chuỗi các bước thực hiện lệnh được gọi là chu kỳ lệnh (instruction cycle). Mỗi bước được xem như một pha (phase).
  27. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh
  28. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh 1. Lấy lệnh từ bộ nhớ (Fetch) FETCH sẽ gồm các thao tác sau: Bước 1: Nạp nội dung của thanh ghi PC vào thanh ghi MAR, đồng thời tăng PC Bước 2: Yêu cầu bộ nhớ để lấy lệnh đặt vào thanh ghi MDR Bước 3: Nạp vào thanh ghi IR nội dung của thanh ghi MDR Mỗi bước thao tác như vậy chiếm một hay nhiều chu kỳ máy (hay chu kỳ xung clock của CPU), như bước 1 và 3 mỗi bước chiếm một chu kỳ máy, trong khi bước 2 cĩ thể chiếm hơn một chu kỳ máy tùy theo thời gian truy xuất bộ nhớ.
  29. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh 2. Giải mã lệnh (Decode) Pha này khảo sát lệnh để đưa ra các yêu cầu cho vi kiến trúc thực hiện. Trong LC-3, bộ giải mã 4 ra16 xác định mã lệnh nào trong 16 mã lệnh cần được xử lý. Đầu vào là bốn bit mã lệnh IR[15:12]. Đường đầu ra tích cực tương ứng với mã lệnh ở đầu vào. Tùy thuộc vào đầu ra nào của bộ giải mã được tích cực. IR[11:0] xác định cái cần phải làm để thực hiện lệnh đĩ.
  30. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh 3. Tính địa chỉ tốn hạng (Evaluate address) Pha này sẽ tính địa chỉ của ơ nhớ cần thiết để xử lý lệnh. Như lệnh LDR trong ví dụ 4.2 sẽ lấy một trị từ một ơ nhớ và nạp vào thanh ghi. Trong ví dụ này, địa chỉ ơ nhớ sẽ được tính từ trị 6 cộng với nội dung thanh ghi R3. Thao tác tính tốn này được thực hiện trong pha này.
  31. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh 4. Lấy tốn hạng (Fetch Operands) Pha này thực hiện việc lấy các tốn hạng cần thiết để xử lý lệnh. Trong ví dụ 4.2 về lệnh LDR, pha này gồm hai bước: nạp thanh ghi MAR giá trị địa chỉ tính tốn được từ pha Tính địa chỉ tốn hạng, và đọc bộ nhớ để cĩ tốn hạng nguồn được đặt trong thanh ghi MDR. Trong ví dụ 4.1 về lệnh ADD, pha này cần hai tốn hạng từ hai thanh ghi R2 và R6. Với nhiều bộ vi xử lý hiện đại, việc lấy tốn hạng từ thanh ghi cĩ thể được thực hiện cùng lúc khi lệnh được giải mã để tăng tốc quá trình xử lý lệnh.
  32. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.3 Quá trình xử lý lệnh 4.3.2 Chu kỳ lệnh 5. Thực thi lệnh (Execute) Pha này thực thi lệnh sau khi đã cĩ đủ tất cả tốn hạng và mã lệnh. Như trong ví dụ về lệnh ADD, pha này chỉ gồm bước đơn giản là thực thi việc cộng trong ALU. 6. Lưu kết quả (Store result) Đây là sau cùng của quá trình thực thi lệnh. Kết quả của lệnh sẽ được ghi vào đích đã được xác định. Một khi pha thứ sau này được hồn thành, đơn vị điều khiển bắt đầu một chu kỳ lệnh mới, từ đầu pha pha Lấy lệnh.
  33. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.4 Thay đổi quá trình xử lý lệnh Bình thường một chương trình máy tính được thực hiện theo trình tự, nghĩa là lệnh đầu tiên được thực thi, sau đĩ tới lệnh thứ hai, rồi thứ ba, . Cĩ một nhĩm lệnh đặc biệt gọi là lệnh điều khiển, nĩ cĩ thể thay đổi trình tự thực thi lệnh. Như chúng ta biết, mỗi chu kỳ lệnh bắt đầu bằng việc nạp thanh ghi PC vào thanh ghi MAR. Như vậy, nếu chúng ta muốn thay đổi trình tự thực thi lệnh, chúng ta phải thay đổi thanh ghi PC trong khoảng giữa thời gian nĩ được tăng lên (trong pha Lấy lệnh của một lệnh) và sự bắt đầu của pha Lấy lệnh của lệnh kế.
  34. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.4 Thay đổi quá trình xử lý lệnh Các lệnh điều khiển thực hiện chức năng đĩ bằng việc nạp thanh ghi PC trong pha Thực thi lệnh, việc này sẽ xĩa trị đã được tăng trong thanh ghi PC trong pha Lấy lệnh trước đĩ. Ví dụ 4.3: Lệnh JMP của ISA LC-3 cĩ định dạng như sau. Giả sử lệnh này đang được chứa trong bộ nhớ ở địa chỉ x36A2.
  35. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.4 Thay đổi quá trình xử lý lệnh Giả sử thanh ghi R3 đang chứa x5446, trong pha Thực thi lệnh, thanh ghi PC sẽ được nạp trị x5446 này. Do đĩ trong chu kỳ lệnh kế tiếp, lệnh được xử lý là lệnh ở địa chỉ x5446 chứ khơng phải lệnh ở địa chỉ x36A3.
  36. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.4 Thay đổi quá trình xử lý lệnh
  37. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 Kiến trúc tập lệnh (ISA – Instruction Set Architecture) xác định tất cả thơng tin về máy tính mà phần mềm cần phẩn nhận biết. Kiến trúc tập lệnh (ISA) xác định mọi thứ trong máy tính mà người lập trình sử dụng khi viết chương trình bằng ngơn ngữ máy. (ISA xác định tổ chức bộ nhớ, tập thanh ghi, và tập lệnh gồm mã lệnh, loại dữ liệu, và các kiểu định vị địa chỉ.)
  38. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.1 Tổ chức bộ nhớ Bộ nhớ của LC-3 cĩ dung lượng 216 (65536) ơ nhớ, mỗi ơ cĩ chiều dài 16 bit. Tuy nhiên, khơng phải tất cả 65536 ơ nhớ đều được sử dụng, vì cĩ một số vùng nhớ được dùng để lưu các thơng tin hệ thống như bảng các vector ngắt, biến hệ thống, . Vì đơn vị lưu trữ chuẩn được LC-3 xử lý là 16 bit, nên chúng ta gọi 16 bit là một từ (word), và do đĩ chúng ta nĩi LC-3 định vị theo từ.
  39. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.2 Thanh ghi LC-3 thường tốn hơn một chu kỳ xung clock để lấy dữ liệu từ bộ nhớ, nên nĩ cũng cung cấp các thanh ghi để chứa dữ liệu tạm thời mà cĩ thể được truy xuất chỉ trong một chu kỳ xung clock. Các thanh ghi cĩ tính chất giống như ơ nhớ, tức nĩ được sử dụng để chứa thơng tin mà cĩ thể được truy tìm sau đĩ. Trong LC-3, mỗi thanh ghi dài một từ, tức 16 bit, và cĩ 8 thanh ghi đa dụng. Mỗi thanh ghi cĩ một chỉ định riêng, nên cần dùng 3 bit để mã cho số hiệu của một thanh ghi, đĩ là các thanh ghi R0, R1, , R7.
  40. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.3 Tập lệnh Một lệnh được tạo từ hai thứ, mã thao tác (opcode) là cái mà lệnh bắt máy tính thực thi, và tốn hạng (operands) là cái mà máy tính cần để thực thi lệnh. Tập lệnh của một ISA được định nghĩa bằng tập các mã thao tác, kiểu dữ liệu và các kiểu định vị để xác định chổ của tốn hạng. Trong ví dụ 4.12 trên, ta cĩ lệnh R6 = R2 + R6, thì kiểu định vị của tốn hạng là thanh ghi vì các tốn hạng đều là thanh ghi.
  41. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.4 Mã thao tác Kiến trúc tập lệnh của LC-3 cĩ 15 lệnh, mỗi lệnh được chỉ định mã thao tác riêng. Mã thao tác được quy định trong bốn bit [15:12] của lệnh, nên sẽ cĩ 16 mã thao tác khác nhau. Tuy nhiên, trong thực tế ISA LC-3 chỉ sử dụng 15 mã thao tác. Mã 1101 chưa được quy định mã thao tác, nĩ được để dành cho các nhu cầu cần thiết trong tương lai.
  42. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.4 Mã thao tác Cĩ ba loại lệnh khác nhau, tức cĩ ba loại mã thao tác: - Các lệnh thi hành xử lý thơng tin, như lệnh ADD. -Các lệnh chuyển dữ liệu chuyển thơng tin qua lại giữa bộ nhớ và các thanh ghi, giữa các thanh ghi với nhau, giữa các thiết bị xuất nhập, như lệnh LDR. -Các lệnh điều khiển thay đổi trình tự các lệnh sẽ được thực thi, như lệnh JMP.
  43. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.5 Các kiểu dữ liệu Một kiểu dữ liệu là một sự miêu tả về thơng tin để ISA cĩ các mã thao tác thực thi với miêu tả đĩ. Cĩ rất nhiều cách để biểu diễn một thơng tin trên máy tính, ví dụ với một số nguyên ta cĩ thể viết số ở hệ thập phân, hệ bát phân hay hệ thập lục phân. Hoặc với số thực, ta cĩ thể dùng số thực dấu chấm cố định hay số thực dấu chấm động. Trong kiến trúc tập lệnh LC-3, kiểu dữ liệu duy nhất được sử dụng là dạng số nguyên bù 2.
  44. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.6 Các kiểu định vị địa chỉ Một kiểu định vị địa chỉ là một cơ chế để xác định tốn hạng ở đâu. Tổng quát, một tốn hạng cĩ thể được tìm ở một trong ba chổ: trong bộ nhớ, trong một thanh ghi, hoặc là một phần của lệnh. Nếu nĩ là một phần của lệnh, ta gọi nĩ là tốn hạng tức thời. LC-3 sử dụng năm kiểu định vị địa chỉ: tức thời, thanh ghi, và ba kiểu định vị địa chỉ bộ nhớ là PC-relative, gián tiếp và Base+offset.
  45. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.5 Khái niệm ISA LC-3 4.5.7 Các mã điều kiện Hầu như tất cả các ISA đều cho phép quá trỉnh thực hiện lệnh được thay đổi tùy thuộc vào kết quả được tạo ra trước đĩ. LC-3 cĩ ba thanh ghi một bit được đặt (set to 1) hay xĩa (xĩa về 0) mỗi khi một trong tám thanh ghi đa dụng được ghi trị. Ba thanh ghi một bit này được gọi là các thanh ghi trạng thái N, Z, và P
  46. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành
  47. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành Ví dụ 4.4: Nếu R5 đang chứa 0101000011110000, thì sau khi thực hiện xong lệnh sau: thanh ghi R3 sẽ lưu 1010111100001111.
  48. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành
  49. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành Ví dụ 4.5: Nếu R4 chứa trị 6 và R5 chứa trị -18, sau khi lệnh dưới được thực thi thì thanh ghi R1 chứa trị -12.
  50. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành Nếu bit [5] là 1, tốn hạng nguồn thứ hai được chứa ngay bên trong lệnh, và cĩ được bằng phép mỡ rộng dấu 5 bit [4:0] thành 16 bit trước khi thực hiện phép ADD hoặc AND. Hình 4.5 trình bày các phần quan trọng của đường truyền dữ liệu để thực hiện lệnh ADD R1, R4, #-2. Cũng cần lưu ý là vùng trị tức thời này chỉ cĩ 5 bit ở dạng bù 2, nên nĩ chỉ cĩ thể chứa trị trong khoảng -16 15 mà thơi.
  51. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành
  52. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành
  53. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.6 Nhĩm lệnh thi hành Ví dụ 4.8: ba lệnh dưới đây thực hiện việc tính hiệu hai trị đang nằm trong hai thanh ghi R0 và R1. Hai lệnh đầu (NOT R1, R1 và ADD R2, R1, 1) sẽ tính bù 2 của trị đang cĩ trong thanh ghi R1. Lệnh ADD R2, R0, R2 tính hiệu giữa hai trị ban đầu trong R0 và R1 theo yêu cầu.
  54. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu Nhĩm lệnh chuyển dữ liệu thực hiện việc sao chép thơng tin qua lại giữa các thanh ghi đa dụng và bộ nhớ, giữa các thanh ghi và các thiết bị xuất nhập. Quá trình chép thơng tin từ bộ nhớ vào thanh ghi được gọi là nạp (load), và quá trình chép thơng tin từ thanh ghi vào bộ nhớ gọi là lưu (store) . Trong cả hai trường hợp, thơng tin trong tốn hạng nguồn khơng đổi, cịn thơng tin cũ trong tốn hạng đích đã bị ghi đè bởi thơng tin mới sau quá trình chép. LC-3 cĩ bảy lệnh thực hiện việc sao chép dữ liệu: LD, LDR, LDI, LEA, ST, STR, và STI. Định dạng chung cho các lệnh này là
  55. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu Các lệnh chuyển dữ liệu cần hai tốn hạng, một nguồn và một đích. Tốn hạng nguồn là nơi dữ liệu cần được chép, cịn tốn hạng đích là là nơi cần chép thơng tin vào. Trong định dạng trên, các bit [15:12] xác định mã thao tác opcode, các bit [11:9] quy định một trong hai tốn hạng, là thanh ghi cĩ mã theo quy ước. Các bit [8:0] chứa các bit tạo địa chỉ (Address generation bits), mã hĩa thơng tin để tính ra địa chỉ 16 bit của tốn hạng thứ hai. LC-3 cĩ bốn kiểu định vị địa chỉ: định vị tương đối từ PC (PC- Relative mode), định vị gián tiếp (Indirect mode), định vị base + offset (base+offset mode), và định vị tức thời (immediate mode).
  56. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.1 PC-relative mode Lệnh LD (opcode = 0010) và ST (opcode = 0011) dùng kiểu định vị tương đối PC. Các bit [8:0] của lệnh xác định một độ dời (offset) tính từ thanh ghi PC. Địa chỉ bộ nhớ được tính từ tổng của 16 bit địa chỉ sau phép mở rộng dấu từ các bit [8:0] và thanh ghi PC đã được tăng 1 sau pha FETCH. Với lệnh LD, ơ nhớ tương ứng với địa chỉ bộ nhớ đã tính được đọc, và ghi vào thanh ghi được xác định bởi các bit [11:9] của lệnh.
  57. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.1 PC-relative mode Ví dụ 4.9: Nếu lệnh nằm ở ơ nhớ cĩ địa chỉ x4018, thì nội dung ơ nhớ cĩ địa chỉ x4019 + SEXT (x1AF) = x4019 + xFFAF = x3FC8 (bỏ bit 1 do vượt quá chiều dài 16 bit) sẽ được đọc và nạp vào thanh ghi R2.
  58. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.1 PC-relative mode
  59. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.2 Indirect mode Lệnh LDI (opcode = 1010) và lệnh STI (opcode = 1011) sử dụng kiểu định vị địa chỉ gián tiếp. Với kiểu định vị này, địa chỉ đầu tiên được tạo ra cũng tương tự như với lệnh LD và ST. Tuy nhiên, thay vì đây địa chỉ của tốn hạng chứa dữ liệu cần được nạp hay lưu, thì tốn hạng này lại chứa địa chỉ của tốn hạng là dữ liệu cần được nạp hay lưu. Vì phải qua trung gian như vậy nên ta mới cĩ kiểu định vị địa chỉ gián tiếp. Với kiểu định vị này, ta thấy tốn hạng chứa dữ liệu cần làm việc cĩ thể ở bất cứ đâu trong bộ nhớ 64K, chứ khơng bị giới hạn trong tầm 9 bit [8:0] như trong trường hợp lệnh LD và ST. Thanh ghi đích cho LDI và thanh ghi nguồn trong STI cũng được xác định bằng các bit [11:9] trong lệnh.
  60. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.2 Indirect mode Ví dụ 4.10: Nếu lệnh ở địa chỉ x4A1B, và chứa đựng của x49E8 là x2110, việc thực thi lệnh này sẽ lấy dữ liệu từ ơ nhớ cĩ địa chỉ x2110 nạp vào thanh ghi R3.
  61. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.2 Indirect mode
  62. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.3 Base+offset mode Lệnh LDR (opcode = 0110) và STR (opcode = 0111) dùng kiểu định vị Base+offset. Kiểu định vị này xác định địa chỉ tốn hạng trong bộ nhớ 64K bằng cách lấy 6 bit offset được mở rộng dấu IR[5:0] cộng với thanh ghi nền trong vùng IR[8:6]. Ví dụ 4.11: Nếu R2 đang chứa trị 16 bit x2345, lệnh nạp R1 nội dung của ơ nhớ x2362 (x2345 + x1D).
  63. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.3 Base+offset mode
  64. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.4 Immediate mode Ví dụ 4.12: Nếu ơ nhớ x4018 chứa lệnh LEA R5, #-3, và thanh ghi PC chứa x4018, ta cĩ lệnh
  65. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu
  66. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.7 Nhĩm lệnh di chuyển dữ liệu 4.7.5 Ví dụ: Giả sử các lệnh được chứa trong các ơ nhớ từ địa chỉ x30F6 tới x30FC như hình 4.10 sau.
  67. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển Các lệnh điều khiển thay đổi trình tự các lệnh thực thi trong chương trình. LC-3 cĩ năm mã lệnh thực hiện việc này: lệnh rẻ nhánh (Branch) cĩ điều kiện, lệnh nhảy (Jump) khơng điều kiện, gọi chương trình con, TRAP, và lệnh trả vể từ ngắt (Interrupt). Trong mục này chủ yếu chúng ta nĩi về lệnh rẻ nhánh cĩ điều kiện, lệnh nhảy khơng điều kiện, và TRAP. 4.8.1 Lệnh rẻ nhánh cĩ điều kiện Định dạng của lệnh rẻ nhánh cĩ điều kiện (opcode = 0000) như sau:
  68. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.1 Lệnh rẻ nhánh cĩ điều kiện Trong LC-3, tất cả các lệnh mà cĩ ghi trị vào các thanh ghi đa dụng sẽ đặt trị cho ba mã điều kiện (NZP) là ADD, AND, NOT, LD, LDI, LDR, và LEA. Các mã điều kiện được lệnh rẻ nhánh cĩ điều kiện sử dụng để xác định xem cĩ thay đổi trình tự lệnh hay khơng; nghĩa là, xem sự thực thi lệnh cĩ theo trình tự thường thấy như là kết quả của việc tăng thanh ghi PC trong phase FETCH của mỗi lệnh hay khơng.
  69. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.1 Lệnh rẻ nhánh cĩ điều kiện Trong khi thực hiện phase EXECUTE, bộ xử lý khảo sát các mã điều kiện mà các bit tương ứng của nĩ trong lệnh là 1. Nếu cĩ một mã điều kiện mà được kiểm tra và thấy bằng 1, thanh ghi PC được nạp bằng địa chỉ cĩ được trong phase EVALUATE ADDRESS. Ngược lại, khi khơng cĩ một mã điều kiện mà được kiểm tra và thấy bằng 1, PC giữ trị khơng đổi.
  70. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.1 Lệnh rẻ nhánh cĩ điều kiện Ví dụ 4.13: Nếu giá trị cuối cùng được nạp vào một thanh ghi đa dụng nào đĩ là 0, thì lệnh hiện thời (ở ơ nhớ x4027) dưới đây sẽ nạp thanh ghi PC bằng trị x4101 (x4028 + x0D9), tức lệnh kế cần thực thi sẽ ở ơ nhớ x4101, chứ khơng phải ở ơ nhớ x4028.
  71. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.1 Lệnh rẻ nhánh cĩ điều kiện
  72. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.1 Lệnh rẻ nhánh cĩ điều kiện Nếu tất cả ba bit [11:9] đều là 1????
  73. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.1 Lệnh rẻ nhánh cĩ điều kiện Ví dụ 4.14: Nếu lệnh sau đây ở ơ nhớ x507B được thực thi, thi thanh ghi PC được nạp trị x5201. Độc giả hãy suy nghĩ xem nếu tất cả ba bit [11:9] trong lệnh BR đều bằng khơng, điều gì sẽ xảy ra?
  74. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.2 Ví dụ Giả sử chúng ta đã cĩ 12 ơ nhớ từ x3100 tới x310B chứa 12 số nguyên mà chúng ta cần tính tổng.
  75. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.2 Ví dụ
  76. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.3 Hai phương pháp điều khiển lặp Chúng ta dùng thuật ngữ lặp (loop) để mơ tả chuỗi lệnh cần được thực thi lặp đi lặp lại theo một cơ chế điều khiển nào đĩ. Mỗi khi thân vịng lặp được thực hiện ta gọi là sự lặp lại (iteration) của vịng lặp.
  77. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.3 Hai phương pháp điều khiển lặp Trong ví dụ ở mục trên, phương pháp biến đếm được sử dụng. Nếu chúng ta biết chính xác số lần lặp là n lần, thì đơn giản chúng ta chỉ cần gán cho biến đếm trị n, và sau mỗi lần lặp, chúng ta cần giảm biến đếm này và kiểm tra nĩ xem cĩ là 0 hay chưa. Nếu chưa là 0, chúng ta đặt trị cho thanh ghi PC bằng địa chỉ của lệnh đầu thân vịng lặp, và tiếp tục sự lặp lại.
  78. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.3 Hai phương pháp điều khiển lặp Phương pháp thứ hai là dùng trị canh (sentinel). Cách này đặc biệt hiệu quả khi chúng ta khơng biết trước cĩ bao nhiêu sự lặp lại cần phải được thực hiện. Thơng thường quá trình lặp sẽ là dãy các sự kiện cần xử lý, chúng ta cần thêm vào dãy sự kiện này một sự kiện là kiểm tra một giá trị mà chúng ta biết trước hay theo quy ước là khơng bao giờ xuất hiện trong các sự kiện gốc. Nếu việc kiểm tra này xảy ra, tức việc lặp kết thúc. Giá trị đĩ được gọi là trị canh.
  79. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.4 Ví dụ Giả sử chúng ta cần cộng các trị nguyên dương từ ơ nhớ x3100 tới x310B. Khi đĩ chúng ta cĩ thể dùng bất kỳ trị âm nào để làm trị canh. Giả sử trị canh được chứa ở ơ nhớ x310C là -1.
  80. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.4 Ví dụ
  81. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.5 Lệnh JMP Lệnh JMP nạp thanh ghi PC bằng trị của thanh ghi xác định bời các bit [8:6] của lệnh. Nếu lệnh JMP nằm ở địa chỉ x4000, R2 chứa trị x6600, và PC chứa x4000, thì lệnh JMP ở x4000 sẽ được thực thi, làm cho lệnh kế tiếp là lệnh ở x6600. Vì các thanh ghi đều dài 16 bit, cĩ thể mã hĩa địa chỉ cho cả bộ nhớ 64K của ISA LC-3, nên lệnh JMP khơng cĩ giới hạn cho lệnh kế cần được thực thi.
  82. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.6 Lệnh TRAP Lệnh TRAP (opcode = 1111) cho phép lấy dữ liệu vào và xuất dữ liệu ra khỏi máy tính và cĩ định dạng như sau. Lệnh này thay đổi trị của thanh ghi PC, làm nĩ chỉ tới một vị trí trong bộ nhớ mà là một phần của hệ điều hành để hệ điều hành thực hiện một tác vụ nào đĩ nhân danh chương trình đang được thực thi. Theo kiểu nĩi của ngơn ngữ hệ điều hành, chúng ta nĩi lệnh TRAP gọi một dịch vụ của hệ điều hành (service call). Các bit [7:0] của lệnh TRAP tạo nên một trapvector 8 bit, xác định dịch vụ cần gọi mà chương trình muốn hệ điều hành thực hiện.
  83. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.8 Nhĩm lệnh điều khiển 4.8.6 Lệnh TRAP Một số dịch vụ chúng ta cần biết để sử dụng ngay là : • Nhập một ký tự từ bàn phím: trapvector = x23 • Xuất một ký tự ra màn hình: trapvector = x21 • Kết thúc chương trình: trapvector = x25. Khi hệ điều hành hồn tất dịch vụ, bộ đếm chương trình PC sẽ được đặt trở lại địa chỉ của lệnh ngay sau lệnh TRAP trong chương trình đang được thực thi, và chương trình tiếp tục chạy. Đây cũng là khả năng thực hiện giao tiếp của LC-3 giữa hệ đều hành và chương trình đang được thực thi.
  84. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.9 Ba cấu trúc lệnh trong LC-3 4.9.1 Ba cấu trúc cơ bản trong lập trình cĩ cấu trúc Trong lập trình cĩ ba cấu trúc lệnh cơ bản để thực hiện các tác vụ cần thiết, đĩ là các cấu trúc tuần tự (sequential), điều kiện (conditional), và lặp (iterative). Hình 4.16 trình bày ba cấu trúc cơ bản triển khai tác vụ cần thực thi (task).
  85. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.9 Ba cấu trúc lệnh trong LC-3 4.9.1 Ba cấu trúc cơ bản trong lập trình cĩ cấu trúc
  86. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.9 Ba cấu trúc lệnh trong LC-3 4.9.2 Ba cấu trúc trong LC-3
  87. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.10 Một ví dụ Đếm số lần xuất hiện của một ký tự xác định trước (được nhập từ bàn phím) trong một mảng ký tự (file) cho trước. Sau đĩ hiển thị số lần xuất hiện này ra màn hình(chấp nhận số lần xuất hiện tối đa của một ký tự là 9)
  88. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.10 Một ví dụ
  89. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.10 Một ví dụ
  90. CHƢƠNG 4 MƠ HÌNH VON NEUMANN VÀ KIẾN TRÚC TẬP LỆNH LC-3 4.10 Một ví dụ
  91. HỆ THỐNG MÁY TÍNH VÀ NGÔN NGỮ C KẾT THÚC CHƯƠNG 4