Chương 3: Tập lệnh của Vi Xử Ly Phạm Thế Duy ptduy@yahoo.com Khái niệm lệnh Là chuỗi bit 0, cung cấp để vi xử lý thực hiện một chức bản Bao gồm hai phần: OP CODE: chọn chức thực hiện Operand: Chọn dữ liệu cho lệnh Định dạng lệnh - Instruction Format opcode low addr mod high addr reg d w r/m optional Low Displacement or Immediate optional High Displacement or Immediate optional Low Immediate optional High Immediate opcode 6-bit chỉ thị loại lệnh sẽ thực hiện d (destination): d=1 chỉ thị toán hạng ghi Reg là toán hạng đích d=0 chỉ thị toán hạng ghi Reg là toán hạng nguồn w (word): w=1 toán hạng lệnh bao gồm hai byte w=0 toán hạng lệnh bao gồm 01 byte Định dạng lệnh - Instruction Format opcode low addr mod high addr reg d w r/m optional Low Displacement or Immediate optional High Displacement or Immediate optional Low Immediate optional High Immediate mod is 2-bit chỉ thị chế độ địa chỉ (tuỳ theo giá trị của r/m) reg là 3-bit chỉ thị toán hạng ghi (bảng kế) r/m là 3-bit chỉ thị vị trí của toán hạng là ghi hay bộ nhớ (r/m : register/memory) reg w=1 w=0 000 ax al 001 cx cl 010 dx dl 011 bx bl 100 sp ah 101 bp ch 110 si dh 111 di bh Định dạng lệnh - Instruction Format Mod M/R 000 001 010 011 100 101 110 111 00 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] [BP] [BX] 01 [BX]+[SI] + d8 [BX]+[DI] + d8 [BP]+[SI] + d8 [BP]+[DI] + d8 [SI] + d8 [DI] + d8 [BP] + d8 [Bx] + d8 10 [BX]+[SI] + d16 [BX]+[DI] + d16 [BP]+[SI] + d16 [BP]+[DI] + d16 [SI] + d16 [DI] + d16 [BP] + d16 [Bx] + d16 11 W=0 W=1 AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI Định dạng lệnh - Instruction Format opcode low addr mod high addr reg d w r/m optional Low Displacement or Immediate optional High Displacement or Immediate optional Low Immediate optional High Immediate Displacement có thể hoặc 16 bit - Là giá trị Hex được mã hoá lệnh - Sử dụng để tính toán giá trị địa chỉ của toán hạng Immediate có thể 8, 16 hoặc 32 bit - là số hex - Sử dụng làm toán hạng lệnh Định dạng lệnh - Instruction Format opcode low addr mod high addr reg r/m optional Low Displacement or Immediate optional High Displacement or Immediate optional Low Immediate optional High Immediate Ví dụ xét lệnh: Mã lệnh sẽ là: opcode là: d là: w là: mod là: reg là: r/m là: d w mov 100010 1 11 000 011 ax, bx 8B C3 = 1000101111000011 mov ghi là toán hạng đích toán hạng đích là word chỉ thị giá trị r/m trỏ tới a ghi ghi toán hạng đích là ax ghi toán hạng nguồn là bx Các loại toán hạng -Operand types 1) Register - Được mã hoá lệnh • Lệnh thực hiện nhanh • Khơng có truy cập Bus (in instr queue) • Chiều dài lệnh ngắn 2) Immediate - Hằng sớ mã hoá lệnh • hoặc 16 bit • Không truy cập BUS (in instr queue) • Chỉ có thể là toán hạng nguồn 3) Memory – Nằm bợ nhớ, u cầu truy cập BUS • Có thể cần tính toán địa chỉ • Địa chỉ của toán hạng lệnh là địa chỉ Offset hay: EFFECTIVE ADDRESS Effective Address • Tính toán bởi EU • Thơng thường, Effective address = displacement + [base register]+ [index register] (if any) (if any) (if any) • Có thể tính toán từ 03 giá trị – Có một số chế đợ địa chỉ khác nhau: • Displacement – hoặc 16 bit là hằng số lệnh – Thanh ghi sở “base register” cần là BX hoặcBP – Thanh ghi chỉ số “index register” cần là SI hoặc DI Các chế độ địa chỉ- addressing mode Tức thời (Immediate) Thanh ghi (Register) Trực tiếp (Direct) Gián tiếp ghi (Indirect register) Tương đối Cơ sở (Based relative) Tương đối Chỉ số (Indexed Relative) Cơ sở chỉ số (Based Index) CÁC CẤU TRÚC LẬP TRÌNH CƠ BẢN Cấu trúc IF – THEN – ELSE Ngữ pháp: IF Điều kiện THEN Công việc1 ELSE Công việc Giải thuật của cấu trúc trình bày hình 4.2 cấu trúc này nếu thỏa điều kiện thì công việc được thực hiện, nếu không thì công việc được thực hiện Trong hợp ngữ điều này tương đương với việc sử dụng các lệnh nhảy có điều kiện và không điều kiện đến các nhãn khác CÁC CẤU TRÚC LẬP TRÌNH CƠ BẢN Cấu trúc IF – THEN – ELSE Sai Đúng Điều kiện Công việc Công việc Hình 4.2 Giải thuật cấu trúc IF – THEN – ELSE Ví dụ : Tìm số nhỏ hai số chứa AH và BH gán cho AL CMP AH,BH ;AH