Tải bản đầy đủ (.ppt) (144 trang)

Chương 3: Tập lệnh của vi xử lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (572.49 KB, 144 trang )


Chương 3: Tập lệnh của
Vi Xử Lý
Phạm Thế Duy


Khái niệm lệnh

Là chuỗi bit 0, 1 cung cấp để vi xử lý thực
hiện một chức năng cơ bản.

Bao gồm hai phần:

OP CODE: chọn chức năng thực hiện.

Operand: Chọn dữ liệu cho lệnh.

Định dạng lệnh - Instruction Format
opcode
d w
mod reg r/m
optional
optional
optional
optional
07
low addr
high addr
Low Displacement or Immediate
High Displacement or Immediate
Low Immediate


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 thanh ghi Reg là toán hạng đích
d=0 chỉ thị toán hạng thanh ghi Reg là toán hạng nguồn
w (word): w=1 toán hạng trong lệnh bao gồm hai byte
w=0 toán hạng trong lệnh bao gồm 01 byte

opcode
d w
mod reg r/m
optional
optional
optional
optional
07
low addr
high addr
Low Displacement or Immediate
High Displacement or Immediate
Low Immediate
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 thanh ghi (bảng kế)
r/m là 3-bit chỉ thị vị trí của toán hạng là trong thanh 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

Định dạng lệnh - Instruction Format
Mod
M/R
00 01 10 11
W=0 W=1
000
001
010
011
100
101
110
111
[BX]+[SI]
[BX]+[DI]
[BP]+[SI]
[BP]+[DI]
[SI]
[DI]
[BP]
[BX]
[BX]+[SI] + d8
[BX]+[DI] + d8
[BP]+[SI] + d8

[BP]+[DI] + d8
[SI] + d8
[DI] + d8
[BP] + d8
[Bx] + d8
[BX]+[SI] + d16
[BX]+[DI] + d16
[BP]+[SI] + d16
[BP]+[DI] + d16
[SI] + d16
[DI] + d16
[BP] + d16
[Bx] + d16
AL
CL
DL
BL
AH
CH
DH
BH
AX
CX
DX
BX
SP
BP
SI
DI


opcode
d w
mod reg r/m
optional
optional
optional
optional
07
low addr
high addr
Low Displacement or Immediate
High Displacement or Immediate
Low Immediate
High Immediate
Displacement có thể 8 hoặc 16 bit
- Là giá trị Hex được mã hoá trong 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 trong lệnh
Định dạng lệnh - Instruction Format

opcode
d w
mod reg r/m
optional
optional
optional
optional
07

low addr
high addr
Low Displacement or Immediate
High Displacement or Immediate
Low Immediate
High Immediate
Ví dụ xét lệnh: mov ax, bx
Mã lệnh sẽ là: 8B C3 = 1000101111000011
opcode là: 100010 mov
d là: 1 thanh ghi là toán hạng đích
w là: 1 toán hạng đích là 1 word
mod là: 11 chỉ thị giá trị r/m trỏ tới a thanh ghi
reg là: 000 thanh ghi toán hạng đích là ax
r/m là: 011 thanh ghi toán hạng nguồn là bx
Định dạng lệnh - Instruction Format

Các loại toán hạng -Operand types
1) Register - Được mã hoá trong 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á trong lệnh
• 8 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 trong bộ nhớ, yê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 trong 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ó trong một số chế độ địa chỉ khác nhau:

Displacement

8 hoặc 16 bit là hằng số trong lệnh

Thanh ghi cơ 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 thanh ghi (Indirect register)


Tương đối Cơ sở (Based relative)

Tương đối Chỉ số (Indexed Relative)

Cơ sở chỉ số (Based Index)

Chế độ địa chỉ tức thời – Immediate
Addressing

Mov ax,1000H

Mov bp,3000H

Dữ liệu là một số mã hóa trong lệnh

Chế độ địa chỉ thanh ghi - Register

Mov ax,bx

Mov al,ah

Dữ liệu nằm trong thanh ghi.

Chế độ địa chỉ trực tiếp
Direct Addressing
mov [7000h], ax
mov es:[7000h], ax
opcode mod r/m
displacement

effective address
ds:7000h ax
es:7000h ax
26 A3 00 70
A3 00 70
prefix byte
- longer instruction
- more fetch time

Chế độ địa chỉ trực tiếp Direct
Addressing

Dữ liệu nằm trong bộ nhớ, lệnh chỉ thị địa chỉ
offset của ô nhớ.

Chế độ địa chỉ gián tiếp thanh ghi
Register Indirect Addressing
mov al, [bp] ;al gets 8 bits at SS:BP
mov ah, [bx] ;ah gets 8 bits at DS:BX
mov ax, [di] ;ax gets 16 bits at DS:SI
mov eax, [si] ;eax gets 32 bits at DS:SI
opcode mod r/m
BX
effective address
BP
SI
DI

Chế độ địa chỉ tương đối cơ sở
Based Relative Addressing

mov al, [bp+2] ;al gets 8 bits at SS:BP+2
mov ah, [bx-4] ;ah gets 8 bits at DS:BX-4
BX
effective address
BP
+
opcode mod r/m displacement

Chế độ địa chỉ chỉ số tương đối
Indexed Relative Addressing
mov ax, [si+1000h] ;ax gets 16 bits at DS:SI+1000h
mov eax, [si+300h] ;eax gets 32 bits at DS:SI+300h
Mov [di+100h], al ;DS:DI+100h gets 8 bits in al
DI
effective address
SI
+
opcode mod r/m displacement

Chế độ địa chỉ cơ sở chỉ số tương đối
Based Indexed Relative Addressing
mov ax, [bp+di] ;ax gets 16 bits at SS:BP+DI
mov ax, [di+bp] ;ax gets 16 bits at DS:BP+DI
mov eax, [bx+si+10h] ;eax gets 32 bits at DS:BX+SI+10h
mov cx, [bp+si-7] ;cx gets 16 bits at SS:BP+SI-7
DI
effective address
SI
+
opcode mod r/m displacement

BX
BP
+

Ví dụ về các chế độ địa chỉ
Addressing Mode Examples
mov al, bl ;8-bit register addressing
mov di, bp ;16-bit register addressing
mov eax, eax ;32-bit register addressing
mov al, 12 ;8-bit immediate, al<-0ch
mov cx, 0faceh ;16-bit immediate, cx<-64,206
mov ebx, 2h ;32-bit immediate, ebx<-00000002h
mov al, LIST ;al<-8 bits stored at label LIST
mov ch, DATA ;ch<-8 bits stored at label DATA
mov ds, DATA2 ;ds<-16 bits stored at label DATA2
mov al, [bp] ;al<-8 bits stored at SS:BP
mov ah, [bx] ;ah<-8 bits stored at DS:BX
mov ax, [bp] ;ax<-16 bits stored at SS:BP
mov eax, [bx] ;eax<-32 bits stored at DS:BX
mov al, [bp+2] ;al<-8 bits stored at SS:(BP+2)
mov ax, [bx-4] ;ax<-16 bits stored at DS:(BX-4)
mov al, LIST[bp] ;al<-8 bits stored at SS:(BP+LIST)
mov bx, LIST[bx] ;bx<-16 bits stored at DS:(BX+LIST)
mov al, LIST[bp+2] ;al<-8 bits stored at SS:(BP+2+LIST)
mov ax, LIST[bx-12h] ;ax<-16 bits stored at DS:(BX-
18+LIST)
Register
Immediate
Direct
Based


mov al, [si] ;al<-8 bits stored at DS:SI
mov ah, [di] ;ah<-8 bits stored at DS:DI
mov ax, [si] ;ax<-16 bits stored at DS:SI
mov eax, [di] ;eax<-32 bits stored at DS:DI
mov ax, es:[di] ;ax<-16 bits stored at ES:DI
mov al, [si+2] ;al<-8 bits stored at DS:(SI+2)
mov ax, [di-4] ;ax<-16 bits stored at DS:(DI-4)
mov al, LIST[si] ;al<-8 bits stored at DS:(SI+LIST)
mov bx, LIST[di] ;bx<-16 bits stored at DS:(DI+LIST)
mov al, LIST[si+2] ;al<-8 bits stored at DS:(SI+2+LIST)
mov ax, LIST[di-12h] ;ax<-16 bits stored at DS:(DI-18+LIST)
mov al, [bp+di] ;al<-8 bits from SS:(BP+DI)
mov ah, ds:[bp+si] ;ah<-8 bits from DS:(BP+SI)
mov ax, [bx+si] ;ax<-16 bits from DS:(BX+SI)
mov eax, es:[bx+di] ;eax<-32 bits from ES:(BX+DI)
mov al, LIST[bp+di] ;al<-8 bits from SS:(BP+DI+LIST)
mov ax, LIST[bx+si] ;ax<-16 bits from DS:(BX+SI+LIST)
mov al, LIST[bp+di-10h] ;al<-8 bits from SS:(BP+DI-16+LIST)
mov ax, LIST[bx+si+1AFH] ;ax<-16 bits from DS:(BX+SI+431+LIST)
Indexed
Based
Indexed
Based
Indexed
Relative
Ví dụ về các chế độ địa chỉ
Addressing Mode Examples

Chế độ địa chỉ cổng

I/O Port Addressing

Họ x86 quản lý 65,536 địa chỉ cổng vào ra

Mỗi địa chỉ cổng (giống như bộ nhớ)

Truy cập tới một cổng duy nhất

Địa chỉ I/O có thể 1 byte hoặc 2 byte

Với 386+ có thể là 4 byte

Có hai chế độ địa chỉ cổng
1) Chế độ địa chỉ cổng tức thời
- Chỉ có thể là địa chỉ 1 byte
- Giá trị trong khoảng từ 00 tới ffH
2) địa chỉ cổng giữ trong DX
- có thể mang các giá trị trong khoảng từ 0000h tới ffffh

Chỉ có thể sử dụng thanh ghi DX để giữ địa chỉ cổng

Chỉ có thể sử dụng các thanh ghi AL,AX,EAX cho dữ liệu cổng.

Tập lệnh của 80286

Các lệnh truyền dữ liệu.

Các lệnh xử lý dữ liệu.

Các lệnh số học


Các lệnh logic

Các lệnh quay dịch

Các lệnh điều khiển chương trình.

Các lệnh nhảy.

Các lệnh chương trình con.

Các lệnh xử lý chuỗi dữ liệu.

Các lệnh truyền dữ liệu - MOVE

- Cú pháp: MOV Dest,Source

- Thực hiện: Dest ← Source

Dữ liệu được chép từ toán hạng nguồn (Source) tới toán hạng
đích (Dest). Chú ý lệnh không làm thay đổi toán hạng nguồn,
chỉ làm thay đổi toán hạng đích.

Chú ý một số trường hợp không sử dụng được trong lệnh này
bao gồm:

Không chuyển dữ liệu trực tiếp giữa hai ô nhớ.

Không nên chuyển giá trị tức thời (Imm) vào thanh ghi đoạn.


Không chuyển dữ liệu giữa hai thanh ghi đoạn.

Không dùng thanh ghi CS làm toán hạng đích.

Các toán hạng sử dụng trong lệnh MOV
Dest Source Ví dụ
Reg
Reg
Reg
Mem
Mem
Seg.Reg
Seg.Reg
Reg
Mem
Imm
Reg
Imm
Reg16
Mem16
MOV AH,BH
MOV CL,[1000H]
MOV DH,10
MOV Table,BX
MOV X1,25H
MOV DS,AX
MOV ES,X2

Các lệnh truyền dữ liệu - EXCHANGE


- Cú pháp: XCHG Dest,Source

- Thực hiện: Dest ↔ Source

Dữ liệu được chuyển đổi giữa hai toán hạng
đích và nguồn, tức là sau khi thực hiện cả
toán hạng đích và toán hạng nguồn đều thay
đổi.

×