Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                          Chương 2 Bộ vi xử lý Intel 8088           CHƯƠNG...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                       Chương 2 Bộ vi xử lý Intel 8088    Nhìn vài sơ đồ t...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                             Chương 2 Bộ vi xử lý Intel 8088chỉ lệch có độ...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                                Chương 2 Bộ vi xử lý Intel 8088   - AX (Ac...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                              Chương 2 Bộ vi xử lý Intel 8088   − Z (Zero)...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                               Chương 2 Bộ vi xử lý Intel 8088MOV DS,AX   ...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                       Chương 2 Bộ vi xử lý Intel 8088           e) Chế độ...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                     Chương 2 Bộ vi xử lý Intel 8088III - TẬP LỆNH CỦA BỘ ...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng                   Chương 2 Bộ vi xử lý Intel 8088       6. Lệnh so sánh  ...
Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng             Chương 2 Bộ vi xử lý Intel 8088  - Các lệnh hiệu chỉnh khi th...
Upcoming SlideShare
Loading in …5
×

Vi si ly

647 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
647
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Vi si ly

  1. 1. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 CHƯƠNG 2 BỘ VI XỬ LÝ INTEL 8088 Sở dĩ chúng ta chọn bộ vi xử lý 8088 của Intel để nghiên cứu là vì bộ vi xử lý này khá đơngiản nên việc hiểu nó là tương đối dễ đối với những người mới bắt đầu thâm nhập vào lĩnhvực này. Lý do thứ hai là nhờ có tính kế thừa của các sản phẩm trong họ vi xử lý 80x86 nêncác chương trình viết cho 8088 vẫn có thể chạy được trên các hệ vi xử lý tiên tiến sau này. Lýdo thứ ba là các họ vi xử lý của các hãng khác nhau tuy có khác nhau nhưng xét cho cùng cókhá nhiều điểm chủ yếu rất giống nhau. Vì vậy, một khi đã nắm được các vấn đề kỹ thuật của8086 ta sẽ có cơ sở để tìm hiểu các bộ vi xử lý khác cùng họ 80x86 hoặc các bộ vi xử lý củacác hãng khác.I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 8088 1. Sơ đồ khối của bộ vi xử lý 8088 EU (Execution Unit) BIU (Bus Interface Unit) Bus địa chỉ (20 bit) AX Các thanh BX ∑ 8 bit Bus địa chỉ (20 bit) Bus dữ liệu (8 bit) ghi đa năng CX dữ liệu DX SP Các thanh CS BP ghi con trỏ Các thanh SI DS và chỉ số ghi đoạn DI SS và con trỏ ES lệnh IP Bus dữ liệu ALU (16 bit) Logic điều Bus khiển bus ngoài Các thanh ghi tạm thời ALU Khối điều khiển EU Hàng đợi lệnh Thanh ghi cờ (4 byte) - 10 -
  2. 2. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 Nhìn vài sơ đồ ta thấy, bên trong CPU 8088 có hai khối chính: khối phối ghép bus (BusInterface Unit, BIU) và khối thực hiện lệnh (Execution Unit, EU). Trong khối BIU có cácthanh ghi đoạn và thanh ghi con trỏ lệnh IP, khối logic điều khiển bus, bộ cộng, bus dữ liệu 8bit và bus địa chỉ 20 bit. Trong khối EU có các thanh ghi đa năng, các thanh ghi con trỏ và chỉsố, khối tính toán số học và logic ALU, khối điều khiển CU, bus dữ liệu 16 bit của ALU, bustín hiệu điều khiển. Việc chia CPU thành hai phần làm việc đồng thời có liên hệ với nhau quahàng đợi lệnh làm tăng tốc độ đáng kể của CPU. 2. Nguyên lý hoạt động BIU có nhiệm vụ đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ liệu từ/vào cổng hoặcbộ nhớ. Bên trong BIU còn có bộ nhớ đệm lệnh (còn gọi là hàng đợi lệnh) với dung lượng 4byte dùng để chứa các lệnh đã đọc được nằm sẵn chờ EU xử lý. Đây là một cấu trúc mới đượccấy vào bộ vi xử lý 8086/88 để thực hiện cơ chế xử lý liên tục dòng mã lệnh (instructionpipelining). Pipeline là một cơ chế đã được ứng dụng từ những năm 60 trong các máy tínhlớn. EU có nhiệm vụ cung cấp địa chỉ cho BIU để khối này đọc lệnh và dữ liệu, còn bản thânnó thì giải mã lệnh và thực hiện lệnh. Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào củabộ giải mã (nằm trong khối điều khiển CU), các thông tin thu được từ đầu ra của bộ giải mã sẽđược đưa đến mạch tạo xung điều khiển để tạo ra các dãy xung khác nhau (tùy từng lệnh) điềukhiển hoạt động của các bộ phận bên trong và bên ngoài CPU. Trong EU còn có khối tínhtoán số học và logic ALU dùng để thực hiện các thao tác khác nhau với các toán hạng củalệnh.II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ 1. Các thanh ghi Bên trong CPU có một số ô nhớ được gọi là thanh ghi (register). Các thanh ghi có độ dài16 bit và được chia thành: thanh ghi đoạn, thanh ghi đa năng, thanh ghi con trỏ và chỉ số,thanh ghi cờ. a) Thanh ghi đoạn Bộ vi xử lý 8086/88 làm việc ở chế độ thực, với 20 bit địa chỉ bộ vi xử lý này có khả năngđánh địa chỉ cho 220 = 1 M ô nhớ = 1 MB. Trong 1 MB bộ nhớ người ta chia thành các đoạn64 KB khác nhau để: - chứa mã chương trình, - chứa dữ liệu và kết quả trung gian của chương trình và - tạo ra một đoạn nhớ đặc biệt gọi là ngăn xếp (STACK) dùng vào việc quản lý các thôngsố của vi xử lý khi gọi CTC con hoặc trở về từ CTC. Để quản lý các đoạn nhớ trên, bộ vi xử lý 8088 có 4 thanh ghi đoạn xác định địa chỉ bắtđầu của 4 đoạn nhớ 64 KB: + CS (Code Segment): thanh ghi đoạn mã, xác định địa chỉ bắt đầu của đoạn nhớ chứa mã chương trình. + DS (Data Segment): thanh ghi đoạn dữ liệu, xác định địa chỉ bắt đầu của đoạn nhớ chứa hầu hết dữ liệu của chương trình. + ES (Extra Segment): thanh ghi đoạn dữ liệu phụ, xác định địa chỉ bắt đầu của đoạn nhớ chứa dữ liệu phụ. Đoạn nhớ này được các lệnh về chuỗi sử dụng để chữ dữ liệu đích. + SS (Stack Segment): thanh ghi đoạn ngăn xếp, xác định địa chỉ bắt đầu của đoạn nhớ ngăn xếp. Nội dung của các thanh ghi đoạn xác định địa chỉ của ô nhớ nằm ở đầu đoạn tương ứng. Vìđịa chỉ của ô nhớ là 20 bit mà các thanh ghi đoạn chỉ có 16 bit nên bộ vi xử lý phải thêm 0Hvào bên phải nội dung của thanh ghi đoạn để có địa chỉ 20 bit của ô nhớ nằm ở đầu đoạn. Địachỉ này gọi là địa chỉ cơ sở hay địa chỉ đoạn. Địa chỉ của các ô nhớ khác trong đoạn được tínhbằng cách cộng thêm vào địa chỉ đoạn một giá trị gọi là độ lệnh (offset) hay địa chỉ lệch. Địa - 11 -
  3. 3. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088chỉ lệch có độ dài 16 bit và thường đặt trong các thanh ghi 16 bit khác đóng vai trò thanh ghilệch. Cụ thể, để xác định địa chỉ vật lý 20 bit của một ô nhớ nào đó trong một đoạn nhớ bấtkỳ, CPU 8088 phải dùng đến hai thanh ghi 16 bit: một thanh ghi đoạn và một thanh ghi lệch.Từ nội dung của hai thanh ghi này tạo ra địa chỉ vật lý theo công thức sau: Địa chỉ vật lý = Nội dung thanh ghi đoạn x 24 + Nội dung thanh ghi lệch = Địa chỉ đoạn + Địa chỉ lệch Việc dùng hai thanh ghi để ghi nhớ thông tin về địa chỉ tạo ra một loại địa chỉ gọi là địa chỉlogic, được ký hiệu như sau: Thanh ghi đoạn:Thanh ghi lệch (địa chỉ lệch) Segment:Offset Segment:Offset là địa chỉ logic vì nó tồn tại dưới dạng giá trị của các thanh ghi, và khi cầntruy nhập ô nhớ nào thì nó phải được đổi ra địa chỉ vật lý của ô nhớ đó. Địa chỉ logic có tính đa trị vì ứng với một địa chỉ vật lý có rất nhiều địa chỉ logic khácnhau. Điều này cho 8086/88 linh hoạt trong việc định địa chỉ. Ví dụ, địa chỉ vật lý 12345H cóthể tạo ra từ các địa chỉ logic sau: 1000H:2345H 1200H:0345H 1004H:2305H 0300H:E345H …… Vì các thanh ghi đoạn được thêm 0H vào bên phải để xác định địa chỉ bắt đầu của đoạn nêncác đoạn chỉ có thể bắt đầu tại các ranh giới 16 byte. Hơn nữa, vì các đoạn có độ dài 64 KBnên khi biết địa chỉ bắt đầu của đoạn thì ta cũng biết được địa chỉ kết thúc đoạn bằng cáchcộng thêm vào địa chỉ bắt đầu đoạn FFFFH. Ví dụ: Một thanh ghi đoạn có địa chỉ là 1000H => địa chỉ bắt đầu đoạn là 10000H và địachỉ kết thúc đoạn là 1FFFFH. FFFFFH 1FFFFH 1F000H Offset = F000H 10000H 1000H Thanh ghi đoạn 00000H b) Các thanh ghi đa năng Bộ vi xử lý 8088 có 4 thanh ghi đa năng 16 bit: AX, BX, CX, DX. Khi cần chứa dữ liệu 8bit thì mỗi thanh nghi này có thể tách ra thành hai thanh ghi 8 bit cao và 8 bit thấp, đó là cáccặp AH và AL, BH và BL, CH và CL, DH và DL. Các thanh ghi đa năng có thể chứa các loạidữ liệu khác nhau song chúng cũng có những chức năng chuyên dụng được dùng đến trongnhững công việc đặc biệt. Vì vậy các thanh ghi đa năng này được gán cho những cái tên nóilên chức năng chuyên dụng của chúng. - 12 -
  4. 4. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 - AX (Accumulator): thanh ghi chứa, thường dùng để chứa kết quả của các thao tác chẳnghạn như lệnh nhân, chia và một số lệnh hiệu chỉnh dữ liệu. - BX (Base): thanh ghi cơ sở, thường chứa địa chỉ lệch của ô nhớ trong đoạn DS. - CX (Count): thanh ghi đếm, CX thường chứa số lần lặp trong các lệnh lặp, CL thườngchứa số lần dịch hoặc quay trong lệnh dịch và quay thanh ghi. - DX (Data): thanh ghi dữ liệu, DX cùng với AX tham gia vào phép nhân hoặc chia các số16 bit. DX còn dùng để chứa địa chỉ của các cổng vào/ra trong các lệnh vào ra dữ liệu trựctiếp. c) Thanh ghi con trỏ và chỉ số Bộ vi xử lý 8088 có 3 thanh ghi con trỏ (IP, BP, SP) và 2 thanh ghi chỉ số (SI, DI). Cácthanh ghi này ngầm định được sử dụng làm các thanh ghi lệch cho các đoạn tương ứng. Cụthể: - IP (Instruction Pointer): thanh ghi con trỏ lệnh, IP luôn trỏ vào lệnh tiếp theo sẽ đượcthực hiện nằm trong đoạn mã CS. Địa chỉ của lệnh này là CS:IP - BP (Base Pointer): con trỏ cơ sở, BP luôn trỏ vào dữ liệu nằm trong đoạn ngăn xếp. Địachỉ logic của ô nhớ ngăn xếp do BP trỏ tới là SS:BP - SP (Stack Ponter): con trỏ ngăn xếp, SP luôn trỏ vào đỉnh hiện thời của ngăn xếp. Địa chỉlogic của đỉnh ngăn xếp là SS:SP - SI (Source Index): chỉ số nguồn, SI trỏ vào dữ liệu trong đoạn dữ liệu DS. Địa chỉ logiccủa ô nhớ do SI trỏ tới là DS:SI - DI (Destinaton Index): chỉ số đích, DI trỏ vào dữ liệu trong đoạn dữ liệu DS. Địa chỉlogic của ô nhớ do DI trỏ tới là DS:DI Riêng trong các lệnh về chuỗi thì ES:DI luôn ứng với địa chỉ của một phn tử thuộc chuỗiđích, DS:SI luôn ứng với địa chỉ của một phần tử thuộc chuỗi nguồn. Bảng tóm tắt sự kết hợp ngầm định giữa thanh ghi đoạn và thanh ghi lệch:Thanh ghi đoạn Thanh ghi lệch Địa chỉCS IP Địa chỉ lệnh sắp thực hiệnDS BX, DI, SI Địa chỉ trong đoạn dữ liệuSS SP hoặc BP Địa chỉ trong đoạn ngăn xếpES DI Địa chỉ chuỗi đích d) Thanh ghi cờ (Flag Register) Bên trong bộ vi xử lý 8088 có một thanh ghi đặc biệt gọi là thanh ghi cờ hay thanh ghitrạng thái. Mỗi bit của thanh ghi này được dùng để phản ánh một trạng thái nhất định của kếtquả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU. Thanh ghi cờ có 16bit nhưng chỉ dùng hết 9 bit làm bit cờ. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O D I T S Z A P C Các bit cờ chia thành hai loại: * Các cờ trạng thái: có 6 cờ trạng thái là C, P, A, Z, S và O. Các cờ trạng thái này đượcthiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh toán học và logic. − C (Carry): cờ nhớ, C = 1 khi cớ nhớ hoặc mượn. − P (Parity): cờ chẵn lẻ, P = 1 khi tổng số bit 1 trong kết quả là chẵn, P = 0 khi tổng số bit 1 trong kết quả là lẻ. − A (Auxiliary): cờ nhớ phụ, A = 1 khi có nhớ hoặc mượn từ một số BCD thấp sang một số BCD cao. - 13 -
  5. 5. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 − Z (Zero): cờ rỗng, Z = 1 khi kết quả của phép tính số học bằng 0, Z = 0 khi kết quả của phép tính số học khác 0. − S (Sign): cờ dấu, S = 1 kết quả âm. − O (Overflow): cờ tràn, O = 1 khi kết quả vợt ra ngoài giới hạn biểu diễn dành cho nó. * Các cờ điều khiển: có 3 cờ T, I, D. Các cờ này được thiết lập bằng 1 hoặc xóa bằng 0thông qua các lệnh để điều khiển chế độ làm việc của bộ vi xử lý. − T (Trap): cờ bẫy, T = 1 thì bộ vi xử lý làm việc ở chế độ chạy từng lệnh. − I (Interrupt): cờ ngắt, I = 1 thì bộ vi xử lý cho phép các yêu cầu ngắt được tác động. Cờ này được thiết lập bằng lệnh STI và xóa bằng lệnh CLI. − D (Direction): cờ hướng, D = 1 thì bộ vi xử lý làm việc với chuỗi ký tự theo thứ tự từ phải sang trái. 2. Cách mã hóa lệnh của bộ vi xử lý 8088 Các lệnh của bộ vi xử lý được ghi bằng các ký tự dưới dạng gợi nhớ (mnemonic) để ngườisử dụng dễ nhận biết. Tuy nhiên đối với bản thân bộ vi xử lý thì các lệnh cho nó được mã hoádưới dạng các số 0 và 1 (còn gọi là mã máy), vì đây là dạng biểu diễn thông tin duy nhất màmáy hiểu được. Bởi vậy các lệnh dưới dạng các ký tự gợi nhớ phải được dịch ra mã máy. Việcdịch này được thực hiện bằng các chương trình dịch hợp ngữ như MASM, TASM. Vì lệnh cho bộ vi xử lý được cho dưới dạng mã máy nên sau khi nhận lệnh bộ vi xử lý phảithực hiện giải mã lệnh rồi sau đó mới thực hiện lệnh. Một lệnh vi xử lý có thể dài một vài bytetuỳ theo bộ vi xử lý. Đối với bộ vi xử lý 8088 một lệnh có độ dài từ 1 - 6 byte. Ví dụ, lệnhMOV dạng mã máy cần ít nhất là 2 byte, trong đó 6 bit của byte đầu dùng để chứa mã lệnh. Ví dụ: Dạng mã máy của lệnh MOV Nói chung một lệnh của bộ vi xử lý gồm 2 phần: mã lệnh và địa chỉ của toán hạng. Mã lệnh Địa chỉ của các toán hạng 3. Các chế độ địa chỉ dữ liệu Chế độ địa chỉ (Addressing mode) là cách để CPU tìm thấy toán hạng cho các lệnh của nó.Để viết được chương trình cho CPU ta phải nắm vững các chế độ địa chỉ mà các lệnh của nósử dụng. Các chế độ địa chỉ được xác định ngay từ khi chế tạo ra bộ vi xử lý và không thểthay đổi được. Bộ vi xử lý 8088 và họ 80x86 nói chung đều có 7 chế độ địa chỉ dữ liệu. Để minh họa cho các chế độ địa chỉ ta sử dụng lệnh chuyển dữ liệu MOV, nó có dạng nhưsau: MOV Đích, Nguồn Mã lệnh Toán hạng Dấu phẩy phân tách Đích và Nguồn Lệnh MOV sao chép dữ liệu ở nguồn vào đích, dữ liệu nguồn không thay đổi còn dữ liệuđích bị thay đổi. a) Chế độ địa chỉ thanh ghi Trong chế độ địa chỉ này các lệnh sử dụng các thanh ghi bên trong CPU làm các toán hạngđể chứa dữ liệu cần thao tác. Các thanh ghi sử dụng trong lệnh phải cùng kích cỡ, trừ một sốlệnh như lệnh SHL DX, CL. Ví dụ:Assembly Kích thước Hoạt độngMOV AL,BL 8 bit Sao chép BL vào ALMOV CH,CL 8 bit Sao chép CL vào CHMOV AX,CX 16 bit Sao chép CX vào AX - 14 -
  6. 6. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088MOV DS,AX 16 bit Sao chép AX vào DSMOV BX,ES 16 bit Sao chép ES vào BXMOV ES,DS - Không được phép dùng hai thanh ghi đoạnMOV BL,DX - Không được phép, hai thanh ghi khác kích cỡMOV CS,AX - Không được phép, thanh ghi đoạn mã không thể là đích b) Chế độ địa chỉ tức thì Trong chế độ này toán hạng đích là một thanh ghi hay ô nhớ, còn toán hạng nguồn là mộthằng số. Vì là hằng số nên toán hạng đích được tìm thấy ngay sau mã lệnh. Hầu hết cácchương trình dịch quy định cách viết các hằng số như sau: - Số hex: thêm chữ H vào cuối, riêng các số bắt đầu bằng chữ thì phải thêm cả số 0 đằngtrước. Ví dụ: 1234H, 0A231H - Số thập phân: viết bình thường. Ví dụ: 123, 22 - Số nhị phân: thêm chữ B vào cuối, ví dụ: 10011B - Ký tự và chuỗi ký tự: phải đặt trong hai dấu phẩy trên. Ví dụ: ‘A’, ‘AB’ Ví dụ:Assembly Kích thước Hoạt độngMOV BL,44 8 bit Đưa số 44 thập phân vào BLMOV AX,44H 16 bit Đưa 0044H vào AXMOV SI,0 16 bit Đưa 0000H vào SIMOV AL,’A’ 8 bit Đưa mã ASCII của ‘A’ vào ALMOV AX,’AB’ 16 bit Đưa mã ASCII của ‘A’ vào AH, ‘B’ vào AL c) Chế độ địa chỉ trực tiếp Trong chế độ địa chỉ này một toán hạng là địa chỉ lệch của ô nhớ trong đoạn dữ liệu, còntoán hạng kia chỉ có thể là thanh ghi không được là ô nhớ. Địa chỉ lệch của ô nhớ có thể chodưới dạng tên hoặc một số hex (số hex 16 bit đặt trong ngoặc vuông). Ví dụ:Assembly Kích thước Hoạt độngMOV AL,Number 8 bit Sao chép 1 byte dữ liệu từ ô nhớ có tên là Number trong đoạn DS vào ALMOV AX,Data1 16 bit Sao chép 1 từ dữ liệu từ ô nhớ có tên là Data1 trong đoạn DS vào AXMOV News,AL 8 bit Sao chép AL vào ô nhớ có tên là̀ News trong đoạn dữ liệu DSMOV AL,[1234H] 8 bit Sao chép dữ liệu từ ô nhớ DS:(1234H) vào AL d) Chế độ địa chỉ gián tiếp qua thanh ghi Trong chế độ địa chỉ này một toán hạng là một trong các thanh ghi BP, BX, DI và SI chứađịa chỉ lệch của ô nhớ, còn toán hạng kia chỉ có thể là thanh ghi không được là ô nhớ. Cácthanh ghi đặt trong ngoặc vuông. BX, SI, DI chứa địa chỉ lệch của ô nhớ trong đoạn dữ liệuDS, còn BP chứa địa chỉ lệch của ô nhớ trong đoạn ngăn xếp SS. Ví dụ:Assembly Kích thước Hoạt độngMOV CX,[BX] 16 bit Sao chép 1 từ dữ liệu từ ô nhớ DS:BXMOV [BP],DL 8 bit Sao chép nội dung DL vào ô nhớ SS:BPMOV [DI],BH 8 bit Sao chép nội dung BH vào ô nhớ DS:DIMOV [DI],[BX] - Không cho phép di chuyển dữ liệu giữa 2 ô nhớ - 15 -
  7. 7. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 e) Chế độ địa chỉ tương đối cơ sở Trong chế độ địa chỉ này một toán hạng là một ô nhớ được chỉ ra bởi một thanh ghi cơ sở(BX, BP) cộng với một giá trị dịch chuyển (giá trị hằng), còn toán hạng kia chỉ có thể là thanhghi không được là ô nhớ. Giá trị dịch chuyển có thể bằng số hoặc bằng tên. Nếu bằng số thì giá trị dịch chuyển cộngvới thanh ghi cơ sở đặt trong ngoặc vuông, ví dụ MOV AL,[BX+2]. Nếu bằng tên thì tên nàyđặt trước ngoặc vuông, ví dụ MOV AL,DATA1[BX]. Cả hai dạng giá trị dịch chuyển có thểxuất hiện đồng thời, ví dụ MOV AL,DATA1[BX+2]. Trong bộ vi xử lý 8088, giá trị dịch chuyển nếu là số thì là một số có dấu 16 bit nằm trongkhoảng -32768 đến 32767. BX xác định địa chỉ trong đoạn dữ liệu DS còn BP xác định địa chỉ trong đoạn ngăn xếpSS. Ví dụ:Assembly Kích thước Hoạt độngMOV CL,[BX+2] 8 bit Sao chép 1 byte dữ liệu từ ô nhớ DS:(BX+2) vào CLMOV AL,[BP+5] 8 bit Sao chép 1 byte dữ liệu từ ô nhớ SS:(BP+5) vào AL f) Chế độ địa chỉ tương đối chỉ số Tương tự như chế độ địa chỉ tương đối cơ sở, chỉ khác là trong chế độ địa chỉ này sử dụngcác thanh ghi chỉ số SI hoặc DI. Ô nhớ chỉ ra thanh ghi chỉ số cộng với giá trị dịch chuyểnnằm trong đoạn dữ liệu. Ví dụ:Assembly Kích thước Hoạt độngMOV CL,[SI+2] 8 bit Sao chép 1 byte dữ liệu từ ô nhớ DS:(SI+2) vào CLMOV AL,[DI+5] 8 bit Sao chép 1 byte dữ liệu từ ô nhớ DS:(DI+5) vào AL g) Chế độ địa chỉ tương đối chỉ số cơ sở Kết hợp hai chế độ địa chỉ tương đối chỉ số và tương đối cơ sở ta có chế độ địa chỉ tươngđối chỉ số cơ sở. Chế độ địa chỉ này dùng cả thanh ghi chỉ số và thanh ghi cơ sở để xác địnhđịa chỉ. Ví dụ:Assembly Kích thước Hoạt độngMOV DH,[BX+SI+2] 8 bit Sao chép 1 byte dữ liệu từ ô nhớ DS:(BX+SI+2) vào DHMOV AX,LIST[BX+DI] 16 bit Sao chép 1 word dữ liệu từ ô nhớ DS:(BX+DI+LIST) vào AXMOV LIST[BP+SI+4],DH 8 bit Sao chép nội dung DH vào ô nhớ DS:(BP+SI++LIST+4)Chú ý: Các thanh ghi đoạn và thanh ghi lệch được ngầm định đi kèm với nhau để xác định địa chỉcủa các toán hạng trong các đoạn nhớ khác nhau. Vì tính ngầm định này nên trong các lệnh tachỉ viết các thanh ghi lệch là đủ cơ sở để tính địa chỉ của toán hạng. Tuy nhiên, bộ vi xử lý8088 còn cho phép ta phá vỡ sự ngầm định này để làm việc với các cặp thanh ghi đoạn vàthanh ghi lệch khác. Để loại bỏ sự ngầm định khi viết lệnh ta phải viết tên thanh ghi đoạnmuốn dùng kèm theo dấu hai chấm trước thanh ghi lệch. Cụm ký hiệu này gọi là cụm tiếp đầungữ để loại bỏ thanh ghi đoạn ngầm định. Ví dụ: MOV AL,ES:[BX] - 16 -
  8. 8. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088III - TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088 1. Nhóm lệnh chuyển dữ liệu - MOV Đích, Nguồn Sao chép dữ liệu Nguồn vào đích - XCHG Đích, Nguồn Hoán đổi nội dung của 2 toán hạng đích và nguồn - PUSH Nguồn Cất nội dung của một thanh ghi hoặc một ô nhớ 16 bit vào ngăn xếp - POP Đích Lấy dữ liệu 16 bit trong ngăn xếp để vào Đích - XLAT Chuyển nội dung của ô nhớ nằm trong một bảng các ô nhớ 8 bit vào thanh ghi AL. Địa chỉbắt đầu của bảng được xác định bởi DS:BX. Địa chỉ lệch của ô nhớ trong bảng được xác địnhbởi AL. 2. Nhóm lệnh chuyển địa chỉ - LEA Đích, Nguồn Chuyển địa chỉ lệch của ô nhớ Nguồn vào thanh ghi Đích 16 bit - LDS Đích, Nguồn Chuyển nội dung của ô nhớ Nguồn 32 bit vào cặp thanh ghi 16 bit, 16 bit cao của Nguồnđược nạp vào DS, 16 bit thấp được nạp vào thanh ghi Đích 16 bit. - LES Đích, Nguồn Giống như LDS nhưng thay DS bằng ES 3. Nhóm lệnh chuyển thanh ghi cờ - LAHF Chuyển phần thấp của thanh ghi cờ vào AH - SAHF Chuyển nội dung của AH vào 8 bit thấp của thanh ghi cờ - POPF Chuyển phần tử đỉnh ngăn xếp (16 bit) vào thanh ghi cờ - PUSHF Đưa nội dung thanh ghi cờ vào ngăn xếp 4. Nhóm lệnh chuyển dữ liệu qua cổng - IN AL, port hoặc IN AL,DX Đọc 8 bit từ cổng vào AL. Nếu địa chỉ cổng có giá trị từ 0H đến FFH thì có thể viết trựctiếp, còn nếu địa chỉ của cổng có giá trị lớn hơn FFH thì phải đặt vào DX - OUT port,AL hoặc OUT DX,AL Đưa 8 bit từ thanh ghi AL ra cổng 5. Nhóm lệnh nhảy - Lệnh nhảy không điều kiện: JMP Nhãn Chuyển CS:IP tới vị trí được xác định bởi Nhãn - Lệnh nhảy có điều kiện: J<Điều kiện> Nhãn_gần Nếu điều kiện thỏa mãn thì nhảy tới Nhãn_gần. Lệnh nhảy có điều kiện có độ dài 2 byte,byte đầu là mã lệnh, byte sau là địa chỉ tương đối. Do vậy khoảng cực đại mà nó nhảy được là-128 đến 127. Muốn nhảy xa hơn phải dùng lệnh nhảy không điều kiện. Điều kiện được diễntả bằng một cụm chữ cái đặt ngay sau J. Các lệnh nhảy có điều kiện bao gồm: JA, JAE, JB,JBE, JNA, JNAE, JNB, JNBE, JG, JGE, .... - 17 -
  9. 9. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 6. Lệnh so sánh CMP Left, Right Left có thể là thanh ghi hoặc ô nhớ, Right có thể là thanh ghi hoặc ô nhớ hoặc hằng số.Lệnh này so sánh Left và Right, kết quả phản ánh trong các cờ trạng thái nhưng không làmthay đổi nội dung của Left. 7. Nhóm lệnh lặp - LOOP Nhãn_gần Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu CX khác 0. - LOOPE Nhãn_gần Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu ZF=1 và CX ≠ 0 - LOOPZ Nhãn_gần Tương tự LOOPE - LOOPNE Nhãn_gần Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu ZF=0 và CX ≠ 0 - LOOPNZ Nhãn_gần Tương tự LOOPNE 8. Lệnh gọi chương trình con - Gọi CTC: CALL Nhãn - Trở về từ CTC: RET 9. Nhóm lệnh tính toán số học - Lệnh cộng không nhớ: ADD Đích, Nguồn Đích ← Đích + Nguồn - Lệnh cộng có nhớ: ADC Đích, Nguồn Đích ← Đích + Nguồn + CF - Lệnh tăng: INC Đích Đích ← Đích + 1 - Lệnh giảm: DEC Đích Đích ← Đích - 1 - Lệnh trừ không mượn: SUB Đích, Nguồn Đích ← Đích - Nguồn - Lệnh trừ có mượn: SBB Đích, Nguồn Đích ← Đích - Nguồn - CF - NEG Đích Đích ← - Đích - Lệnh nhân không dấu: MUL Nguồn MUL Nguồn_8bit AX ← AL * Nguồn_8bit MUL Nguồn_16bit DXAX ← AX * Nguồn_16bit - Lệnh nhân có dấu: IMUL Nguồn Tương tự MUL - Lệnh chia không dấu: DIV Nguồn DIV Nguồn_8bit Lấy AX chia cho Nguồn_8bit, thương để trong AL, số dư để trong AH DIV Nguồn_16bit Lấy DXAX chia cho Nguồn_16bit, thương để trong AX, số dư để trong DX - Lệnh chia có dấu: IDIV Nguồn Tương tự DIV - 18 -
  10. 10. Bài giảng kỹ thuật vi xử lý - GV. Ngô Công Thắng Chương 2 Bộ vi xử lý Intel 8088 - Các lệnh hiệu chỉnh khi thực hiện phép toán với mã BCD và ASCII:DAA, DAS, AAA,AAD, AAM, AAS. 10. Nhóm lệnh tính toán logic - AND Đích, Nguồn Đích ← Đích AND Nguồn - OR Đích, Nguồn Đích ← Đích OR Nguồn - XOR Đích, Nguồn Đích ← Đích XOR Nguồn - NOT Đích Đích ← NOT Đích - TEST Đích, Nguồn Đích AND Nguồn 11. Nhóm lệnh dịch và quay bit - SHL Đích,1 hoặc SHL Đích,CL - SHR Đích,1 hoặc SHR Đích,CL - SAL Đích,1 hoặc SAL Đích,CL - SAR Đích,1 hoặc SAR Đích,CL - ROL Đích,1 hoặc ROL Đích,CL - ROR Đích,1 hoặc ROR Đích,CL - RCL Đích,1 hoặc RCL Đích,CL - RCR Đích,1 hoặc RCR Đích,CL 12. Nhóm lệnh xử lý chuỗi - Lệnh chuyển chuỗi: MOVS, MOVSB, MOVSW - Lệnh so sánh chuỗi: CMPS, CMPSB, CMPSW - Lệnh quét chuỗi: SCAS, SCASB, SCASW - Lệnh nạp chuỗi: LODS, LODSB, LODSW - Lệnh lưu chuỗi: STOS, STOSB, STOSW - 19 -

×