Cách mã hóa lệnh của bộ vi xử lý 8088 năm 2024

Lý do nghiên cứu bộ vi xử lý 8088 1 2 3 Bộ vi xử lý 8088 đơn giản hơn. Có tính kế thừa của các sản phẩm trong họ vi xử lý 80x86. Nhiều điểm giống với họ vi xử lý 80x86=> nắm bắt được hệ vi xử lý của hãng khác

  • Chương II: BỘ VI XỬ LÝ INTEL 8088 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 2. Nguyên lý hoạt động II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ 1. Các thanh ghi 2. Cách mã hóa lệnh của bộ vi xử lý 8088 3. Các chế độ địa chỉ dữ liệu III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088 Chương II: Bộ vi xử lý Intel 8088
  • I – Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lý Cáclệnhnằmchờ EU xửlý Chương II: Bộ vi xử lý Intel 8088
  • I – Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lý • Khối đơn vị giao tiếp bus [Bus Interface Unit, BIU]: • Thanh 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 8 bit và bus địa chỉ 20 bit • Khối thực hiện lệnh [Execution Unit, EU]. • 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 EU • Bus dữ liệu 16 bit của ALU, bus tí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 qua hàng đợi lệnh làm tăng tốc độ đáng kể của CPU. Chương II: Bộ vi xử lý Intel 8088
  • 2. Nguyên lý hoạt động • Đơnvịthựchiện EU • EU có nhiệm vụ cung cấp địa chỉ cho BIU để khối này đọc lệnh và dữ liệu • Giảimãlệnhđểtạoracáctínhiệuđiềukhiểnnhằmthựchiệnlệnhđãđượcgiảimã. • Khối tính toá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ủa lệnh • Đơnvịgiaotiếp BUS • 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ặc bộ 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 4 byte [8088], 6 byte [8086] dùng để chứa các lệnh đã đọc được nằm sẵn chờ EU xử lý. Chương II: Bộ vi xử lý Intel 8088
  • Chương II: BỘ VI XỬ LÝ INTEL 8088 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 2. Nguyên lý hoạt động II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ 1. Các thanh ghi 2. Cách mã hóa lệnh của bộ vi xử lý 8088 3. Các chế độ địa chỉ dữ liệu III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088 Chương II: Bộ vi xử lý Intel 8088
  • 1. Các thanh ghi • 8088 có 14 thanh ghi 16 bit
  • 1.1 Các thanh ghi đa năng 8 Bit thấp 8 Bit cao •8088/8086 đến 80286 : 16 bits •80386 trởlên: 32 bits EAX,EBX, ECX, EDX • Lưutrữtạmthờidữliệuđểtruycậpnhanhhơntránhkhỏiphảitruycậpbộnhớ • AX [Accumulator]: Các thanh ghi này được sử dụng trong các tính.Kết quả8 bit được chứa trong AL • 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ường chứ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ực tiếp. Chương II: Bộ vi xử lý Intel 8088
  • 1.2 Cácthanhghiđoạn 4 thanh ghi đoạn: CS,DS,SS,ES • Lưu trữ địa chỉ đoạn của 1 ô nhớ cần truy cập • 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ứa 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. Chương II: Bộ vi xử lý Intel 8088
  • Cácthanhghiđoạn Phươngphápquảnlýbộnhớ • Bộ nhớ là tập hợp các ô nhớ [byte] • Mỗi ô nhớđượcnhậndạngbằngmộtđịachỉvậtlýduynhất 20 bit • 8086/8088 có bus địachỉ 20 bit nêncóthểchophéptruyxuất 220= 1048576 địachỉbộnhớkhácnhau. • Trong 1 MB = 1048576 byte bộ nhớ cầnchiathànhnhiềuđoạnnhớkhác nhau: Chương II: Bộ vi xử lý Intel 8088
  • Các thanh ghi phân đoạn • Cácthanhghinàycó 16 bit trongkhiđịachỉbộnhớlà 20 bit nênđểxácdịnhvịtríbộnhớ, tasẽthêm 4 bit 0 vàocác bit thấpcủathanhghiđoạn. • Giảsửnhưthanhghi CS chứagiátrị 1111h thìnósẽchỉtớiđịachỉbắtđầulà 11110h. • VD: Thanhghi DS cógiátrịlà 1000h thìđịachỉbắtđầucủađoạnlà 10000h. • ĐịachỉkếtthúctìmđượcbằngcáchcộngđịachỉbắtđầuvớivớigiátrịFFFFh [64K] → địachỉkếtthúclà 10000h + FFFFh = 1FFFFh. • Nhưvậyđoạndữliệucóđịachỉtừ 10000h -> 1FFFFh.
  • VD • Giả sử các thanh ghi đoạn có các giá trị CS = 2800h, DS = E000h, SS = 2900h và ES = 1000h. Ta có vị trí các đoạn trong bảng bộ nhớ như sau:
  • Địa chỉ vật lý và địa chỉ logic • Địachỉlệch [offset]: xuấthiệntrongđoạnnhớ 64KB [từ 0000h đếnffffh] • Vídụ: địachỉ offset 0010h củađoạnmã CS= 2800h sẽcóđịachỉthậtsựlà 28000h + 0010h = 28010h. Địachỉnàygọilàđịachỉvậtlý. • Địa chỉ vật lý = Nội dung thanh ghi đoạn x 10h + Nội dung thanh ghi lệch= Địa chỉ đoạn + Địa chỉ lệch • Địachỉ logic = Thanh ghi đoạn:Thanh ghi lệch [địa chỉ lệch]
  • Mối liên hệ ĐCVL & ĐCLG Chương II: Bộ vi xử lý Intel 8088
  • Mối liên hệ ĐCVL & ĐCLG • 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ần truy 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ác nhau. • 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 Chương II: Bộ vi xử lý Intel 8088
  • VD Vd:1 Cho một ô nhớ có địa chỉ vật lý là 1256Ah hãy cho biết địa chỉ dạng segment:offset với các đoạn 1256h và 1240h? Giải: Gọi X là offset trong segment 1256h và Y là offset trong segment 1240h chúng ta có: 1256Ah=12560h+X 1256Ah=Y+12400h Do đó: X=1256Ah-12560h=Ah Y= 1256Ah-12400h=16Ah Như vậy: 1256Ah =1256:000A=1240:016A Chương II: Bộ vi xử lý Intel 8088
  • VD Vd2: Một ô nhớ có địa chỉ vật lý 80FD2h, ở trong đoạn nào thì nó có Offset bằng BFD2h Giải: Địa chỉ vật lý=segment * 10h + offset Chương II: Bộ vi xử lý Intel 8088
  • 1.3. Thanh ghi con trỏ và chỉ số • IP [Instruction Pointer]: thanh ghi con trỏ lệnh • IP luôn trỏ vào lệnh tiếp theo sẽ được thự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 chủyếuđượcsửdụngđểtruynhậpdữ liệu nằm trong đoạn ngăn xếp. • Địa chỉ logic của ô nhớ ngăn xếp do BP trỏ tới là SS:BP Chương II: Bộ vi xử lý Intel 8088
  • Thanh ghi con trỏ và chỉ số • 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ỉ logic củ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 phần 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. Chương II: Bộ vi xử lý Intel 8088
  • Thanh ghi con trỏ và chỉ số 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: Chương II: Bộ vi xử lý Intel 8088
  • 1.5 Thanh ghi cờ [Flag Register] • Mục đích của thanh ghi cờ là chỉ ra trạng thái của bộ vi xử lý. • 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ết quả 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ó 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ. Các cờ điều khiển Các trạng thái Chương II: Bộ vi xử lý Intel 8088
  • Thanh ghi cờ [Flag Register] • có 6 cờ trạng thái là C, P, A, Z, S và O. Các cớ trạng thái này được thiế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ớ từ bit trái nhất trong phép cộng hoặc có vay vào bit msb trong phép trừ • P [Parity]: cờ chẵn lẻ, P = 1 khi tổng số bit 1 trong byte thấp là chẵn, P = 0 khi tổng số bit 1 trong byte thấplà 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. • 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ả vuợt ra ngoài giới hạn biểu diễn dành cho nó Chương II: Bộ vi xử lý Intel 8088
  • Thanh ghi cờ [Flag Register] • 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 0 thô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. Chương II: Bộ vi xử lý Intel 8088
  • Hiệntượngtrànxảyrakhinào?
  • Hiệntượngtrànxảyrakhinào? • Xét số có dấu 1 word [-32768,32767] • Co dau 1 byte [-128,127] *. Xét số không dấu 1 word [0,65535] 1 byte [0,255] • Vượt ra khỏi giới hạn biểu diễn => tràn
  • VD1: Tràn không dấu nhưng không tràn có dấu • AX: FFFFH, BX: 0001H • ADD AX,BX Kết quả: 1111 1111 1111 1111 0000 0000 0000 0001 10000 0000 0000 0000 - Nếu xét số không dấu: KQ: 65536 > 65535 => AX: 0h=> sai - Nếu xét số có dấu: FFFFH=-1; 0001H=+1 => AX:0h =>đúng
  • VD2: tràn có dấu nhưng không tràn không dấu • AX, BX: 7FFFH • Add AX,BX 0111 1111 1111 1111 0111 1111 1111 1111 1111 1111 1111 1110 • Xét số có dấu: AX,BX: 32767 => KQ: 65534 >32767 => Vượt khỏi phạm vi, kết quả nhận được dạng có dấu -2 => tràn có dấu • Xét số không dấu: AX,BX: 32767 => KQ: 65534 không tràn • Làm sao CPU chỉ ra được hiện tượng tràn? • Làm sao CPU biết được có hiện tượng tràn xảy ra?
  • Giảipháp • CPU chỉrahiệntượngtràn: • CPU lậpcờ OF=1 báohiệntượngtràncódấu • CF=1 => hiệntượngtrànkhôngdấu • Làmthếnào CPU biếtđượccóhiệntượngtrànxảyra: xét +, - -Hiệntượngtrànkhôngdấu: + Phép + => Trànxảyrakhicónhớtừ bit msbnghĩalà KQ vượtrakhỏiphạm vi biểudiễnnó + Phép -: Hiệntượngtrànxảyrakhivóvayvào bit msb [KQ

Chủ Đề