Bộ thanh ghi trong 8086

THThiNganHang
0 Downloads
10
0

Vorschau wird generiert...

Inhalt des Dokuments

Seite 1

Bộ thanh glii trong 8086 Các thanh ghi trong bộ vi xử lí 8086 đều là các thanh ghi 16 bit và được chia thành các nhóm như sau: Các thanh ghi công dụng chung AX (accumulator), BX (base), cx (counter), DX (data): có thể được truy xuất độc lập như 2 thanh ghi 8 bit : AH và AL, BH và BL, CH và CL, DH và DL. AX BX Các thanh ghi con trỏ và chi mục (xem chi tiết ờ các phần sau) SP (Stack Pointer), BP (Base Pointer): con trỏ dùng khi làm việc với stack SI (Source Index), DI (Destination Index): chỉ số mảng khi xử lí mảng (chuỗi) Các thanh ghi phân đoạn cs (Code Segment), DS (Data Segment), ES (Extra data Segment), ss (Stack Segment): tương ứng lưu địa chi phân đoạn mã lệnh, phân đoạn dừ liệu, phân đoạn dừ liệu bổ sung, phân đoạn ngăn xếp. Địa chỉ phân đoạn này sẽ được kết hợp với địa chi offset để truy xuất ô nhớ. (xem chi tiết ờ các phần sau) Các thanh ghi con trỏ lệnh và trạng thái IP (Intruction Pointer): thanh ghi chứa địa chi offset của lệnh kế tiếp cần thực hiện. Thanh ghi này không thể được truy xuất trực tiếp. FLAGS: thanh ghi cờ trạng thái, dùng đê chứa các bit mô tả trạng thái cùa lệnh vừa được thực hiện, hoặc chứa các bit điều khiển cần thiết lập trước khi gọi lệnh. Bao gồm các bit cờ sau đây: (xem chi tiết ờ các phần sau) 16 14 13 12 11 10 3 3 ( 5 5 4 3 2 1 Ü Io ữ I I I T s Iz A I p CF (Carry Flag): bật khi phép tính vừa thực hiện có sử dụng bit nhớ PF (Parrity Flag): bật khi kết quả của phép tính vừa thực hiện có chẵn bit 1 AF (Auxilary Flag): bật khi phép tính vừa thực hiện có sử dụng bit nhớ phụ ZF (Zero Flag): bật khi kết quả của phép tính vừa thực hiện là 0 SF (Sign Flag): bật khi kết quả của phép tính vừa thực hiện có bit dấu bật TF (Trace Flag): bật để chuyển sang chế độ chạy từng bước IF (Interrupt Flag): bật để cho phép các ngắt xảy ra DF (Direction Flag): bật để chọn chế độ giảm chỉ số tự' động khi làm việc với mảng OF (Overflow Flag): bật khi phép tính vừa thực hiện gây ra tràn số 1 ThiNganHang.com

Seite 2

cấu trúc mã lênh - Các kiểu đinh vi dữ liệu • • • • Cấu trúc mã lệnh (Instruction format) trong 8086 Một lệnh (instruction) mà bộ vi xử lí có thể hiểu được thường rất đơn giản. Ví dụ như di chuyển dừ liệu từ một ô nhớ vào thanh ghi, cộng thanh ghi thứ haivào thanhghi thứ nhất,... Trong 8086 mỗi lệnh thường tác động đến 0,1 hoặc 2 đối tượng (operand, tạm gọilà toán hạng). Toán hạng có thể là một thanh ghi, một hằng số hoặc một ô nhớ. Thông thường, một lệnh (instruction) có cấu trúc như sau: Hình 1. Cấu trúc mã lệnh Trường Prefix dùng để thay đổi thanh ghi phân đoạn mặc định hoặc chỉ định sự lặp lại cùa lệnh trong thao tác xử lí chuỗi. Trường Opcode là mã của thao tác, cho biết lệnh này làm gì. Bit D (direction) cho biết hướng tác động của lệnh. Bit w (width) cho biết kích thước của toán hạng. Hai trường REG và R/M mô tả hai toán hạng chịu tác động của lệnh. Trường REG chứa mã số của một thanh ghi. Trường R/M có thể là mã số của một thanh ghi (trường hợp toán hạng là thanh ghi) hoặc ià mô tả cách tính địa chi của một ô nhớ trong bộ nhớ (trường họp toán hạng là ô nhớ). Trường MOD cho biết trường R/M mô tả thanh ghi hay ô nhớ, cũng như cho biết có trường Displacement phía sau hay không. Trường Displacement được sử dụng khi toán hạng là ô nhớ. Trường này được sử dụng kết hơp với các thông tin lưu trong trường R/M để tính địa chỉ của toán hạng. Trường Immediate được sử dụng khi toán hạng là một hằng số. Không phải lệnh nào cũng có đù các trường được miêu tả ở trên. Chi tiết về các trường như sau: £ II o REG W = 1 Segm ent D = 1 REG là đích đên 000 AX AL ES a II o 001 cx CL es REG là nguôn ss 010 DX DL 011 BX BL DS W = 1 Toán hạng là word 100 SP AH w = 0 Toán hạng là byte 101 BP CH 110 SI DH 111 DI BH Bảng 1 Mã trường REG và các bit D, w 2 ThiNganHang.com

Seite 3

M O D Y nghĩa của R /M và D isplacem ent 00 Nêu R/M = 110 thì EA = disp-high _ disp-low Neu R/M ì 110 thì phần displacement không có. 01 DISP = disp-low, sẽ được signed extended 10 DISP = disp-high _ disp-low 11 R/M mô tả thanh ghi Bảng 2. Mã trường MOD R A I C ách tính địa chỉ (Effective A ddress) 000 EA = BX + SI + DISP 001 EA = BX + DI + DISP 010 EA = BP + SI + DISP 011 EA = BP + DI + DISP 100 EA = SI + DISP 101 EA = DI + DISP 110 EA = BP + DISP (trừ trường hợp MOD = 00, xem ở trên) 111 EA = BX + DISP Bảng 3. Mã trường R/M Ví du: Lệnh chép nội dung thanh ghi DX vào cx có mã 8BCAh, lệnh chép nội dung thanh ghi cx vào DX có mã 8BD lh. R/M là Opcode D w VIOD REG R/M 100010 1 1 11 010 Ũ01 MOV DX. cx SBh D lh Hình 2. Mã lệnh MOV giữa hai thanh ghi Ví du: Lệnh chép nội dung biến var (có địa chi DS:1234h) vào thanh ghi c x có mã 8B0E1234h. (Xem Hình 3). Lệnh chép ngược lại có mã 890E1234h. Hai mã này chi khác nhau ở bit D. Trường hợp thứ nhất, D = 1 vì thanh ghi c x là đích đến. Trường hợp thứ hai, D = 0 vì thanh ghi c x là nguồn. Trong cả hai trường hợp, địa chỉ (EA) của ô nhớ (biến var) được lấy trực tiếp từ 2 bytes của vùng Displacement (MOD = 00 và R/M = 1 1 0 , xem ờ bảng phía trên). Hai byte disp-high và disp-low của vùng Displacement chứa offset cùa biến var trong phân đoạn dừ liệu. 3 ThiNganHang.com

Die ersten 3 Seiten werden angezeigt. Laden Sie das Dokument herunter, um alles zu sehen.

Kommentare (0)

Anmelden um an der Diskussion teilzunehmen

Noch keine Kommentare. Seien Sie der Erste!