KIẾN TRÚC MÁY TÍNH & H P NG ThS Vũ Minh Trí – vmtri@fit.vn 04 – Lập trình h p ng (Phần 3) 2 Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên trong • Mô tả tập lệnh của 8086 • Lập trình hợp ngữ 8086 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 • Mô tả tập lệnh của 8086 • Lập trình hợp ngữ 8086 Sơ đồ khối 8088/8086 bus địa chỉ Các thanh AX EU 20 bit BIU 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 ES và chỉ số DI 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ờ 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, ECX, BX BH BL 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) Các thanh ghi đoạn • Tổ chức của bộ nhớ 1 Mbytes Đoạn bộ nhớ (segment) 216 bytes =64 KB FFFFFH Đ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 Offset=F000 1F000H 10000H 1000 Địa chỉ vật lý=Segment*16 + offset Thanh ghi đoạn Chế độ thực (real mode) 00000H 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 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 4900 ES 43FFF Đoạn ngăn xếp Stack segment 34000 3400 SS 30000 2FFFF Đoạn mã Code segment 20000 2000 CS 1FFFF Đoạn dữ liệu Data segment 10000 1000 DS 00000 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 d 0A28 SS 0A27F e Data 0A0F0 0A0F DS 0A0EF Code 090F0 090F CS 00000 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.