Tải bản đầy đủ

KTMT lecture 3

TRƯỜNG CAO ĐẲNG VIỄN ĐÔNG

KIẾN TRÚC MÁY TÍNH

LỆNH VÀ CHẾ ĐỘ ĐỊA CHỈ
GV: Th.S Nguyễn Đặng Thế Vinh
Email: vinhnguyen@vido.edu.vn
Tp.HCM, tháng 09 năm 2018


Cấu trúc mã lệnh
2

1. Cấu trúc mã lệnh
▪ Quy trình thực hiện một lệnh trong bộ

VXL: Lấy lệnh (feeching), giải mã lệnh
(decording) và xử lý lệnh (excution).

▪ LT hợp ngữ (assembly language) mô tả
lệnh máy bằng tổ hợp các ký tự gợi nhớ


(mnemonic).


Cấu trúc mã lệnh
3

▪ Cấu trúc chung của một mã lệnh:
o Prefix đi trước mã lệnh.
o Mã toán (operation code) phân biệt đó là
lệnh gì, ví dụ với lệnh dịch chuyển MOV
có mã toán là 100010.
o Toán hạng (operand) cho biết cái gì
được xử lý (nội dung của thanh ghi hay
bộ nhớ).
o Địa chỉ trực tiếp (2 byte).


Cấu trúc mã lệnh
4

1 0 0 0 1 0
Mã lệnh

Địa

Địa chỉ

chỉ

phần

D W MOD REG R/M phần

cao

thấp
Byte 1

Byte 2



Byte 3

Byte 4

Bit D (Direction) chỉ hướng thanh ghi REG,
Bit W (Word) chỉ xem thanh ghi được dùng
là 8 bit hay 16 bit (1 word), MOD và R/M
(register/memory) chế độ địa chỉ của lệnh


Cấu trúc mã lệnh
5

1

0

0

0

1

0

Operation Code
Mã lệnh

1

0

0

0

0

0

1

1

1

1

(*) (**)

(***)

(****)

(*****)

D

MOD

REG

R/M

CL

[BX]

W

MOV

(*), (***): chuyển tới thanh ghi

(**): chuyển 1 bit
(****): các bit mã hóa CL
(*****): ô nhớ có địa chỉ DS:BX


Tập lệnh của bộ vi xử lý
6

2. Tập lệnh của bộ vi xử lý
▪ Tập lệnh của 8086/8088 gồm hơn 100 ký

hiệu gợi nhớ (mnemonic) của lệnh ngôn
ngữ assembler cơ sở, để quy định cho

bộ vi xử lý phải làm gì.
▪ Gồm 6 nhóm lệnh


Nhóm lệnh Truyền dữ liệu (TDL)
7

3. Nhóm lệnh truyền dữ liệu
3.1. Lệnh di chuyển dữ liệu
▪ Ý nghĩa: Dùng để di chuyển byte (8 bit)
hoặc (16 bit)
▪ Cú pháp: MOV đích, nguồn


TDL - Lệnh di chuyển dữ liệu
8

Đích

Nguồn

Ví dụ

Ý nghĩa

Bộ nhớ

Thanh ghi

MOV 100H, AX

Chuyển nội dung trong AX vào vị trí
nhớ 100H.

Thanh ghi

Bộ nhớ

MOV AX, MEM1

Chuyển nội dung trong vị trí nhớ do
nhãn MEM1 chỉ ra vào thanh ghi AX.

Thanh ghi

Thanh ghi

MOV AX, BX

Chuyển nội dung trong BX vào thanh
ghi AX.

Thanh ghi

Tức thời

MOV AX, 0FFFFH

Chuyển giá trị hằng số FFFFH vào
thanh ghi AX; số 0 ở đầu được dùng
để phân biệt và chỉ rõ FFFFH là một
giá trị hằng chứ không phải là một

nhãn.


TDL - Lệnh XCHG
9

3.2. Lệnh XCHG - Exchange two operands
▪ Ý nghĩa: Hoán đổi nội dung 2 toán hạng.
▪ Cú pháp: XCHG đích, nguồn
Ví dụ

Ý nghĩa

XCHG AH, AL

Tráo nội dung AH và AL.

XCHG AL, [BX]

Tráo nội dung AL với ô nhớ có địa chỉ
DS:BX.


TDL - Lệnh IN
10

3.3. Lệnh IN- Input data from a port
▪ Ý nghĩa: Đọc dữ liệu từ cổng vào thanh
Acc.
▪ Cú pháp: IN Acc, Port
▪ Trong đó: Port là địa chỉ 8 bit của cổng,
nó có thể có giá trị trong khoảng
00H…FFH.


TDL - OUT
11

3.4. Lệnh OUT- Output a byte or word to a
port
▪ Ý nghĩa: Đưa dữ liệu ra cổng từ Acc.
▪ Cú pháp: OUT Port, Acc


TDL - LEA
12

3.5. Lệnh LEA - Load Effective Address
▪ Ý nghĩa: Lệnh nạp địa chỉ hiệu dụng vào
thanh ghi, nó không di chuyển nội dung
chứa trong địa chỉ đó. Đây là lệnh để tính
địa chỉ lệnh hoặc địa chỉ của ô nhớ chọn
làm gốc rồi nạp vào thanh ghi đã chọn.
▪ Cú pháp: LEA đích, nguồn


TDL - LEA
13

Ví dụ
LEA DX, MSG

Ý nghĩa
Nạp địa chỉ lệnh của bản tin
MSG vào DX.

LEA CX, [BX] [DI]

Nạp vào CX địa chỉ hiệu dụng do
BX và DI chỉ ra: EA=BX+DI.


TDL - PUSH/POP
14

3.6. Lệnh PUSH/POP
▪ Ý nghĩa: Lưu giữ tạm dữ liệu và các toán
hạng cần nhớ của chương trình. PUSH
cất dữ liệu vào ngăn xếp. POP lấy dữ
liệu từ ngăn xếp.
▪ Cú pháp: PUSH nguồn/ POP đích


TDL - PUSH/POP
15

Ví dụ
PUSH BX

Ý nghĩa
Lưu BX vào ngăn xếp, tại vị trí do SP chỉ
ra.

PUSH Table [BX]

Lưu 2 byte của vùng dữ liệu DS, có địa chỉ
đầu tại (Table+BX).

POP DX

Lấy 2 byte từ đỉnh ngăn xếp, đưa vào DX.

PUSH Table [BX]

Lấy 2 byte ở đỉnh ngăn xếp rồi để tại vùng
DS, có địa chỉ đầu tại (Table+BX).


TDL - PUSHF/POPF
16

3.7. Lệnh PUSHF/POPF
▪ Các nội dung của thanh ghi cờ có thể
được gửi vào hay lấy ra khỏi ngăn xếp.


Nhóm lệnh số học - ADD/SUB
17

4. Nhóm lệnh số học
4.1. Lệnh ADD/SUB
▪ Ý nghĩa: Thực hiện phép tính cộng (Add)
và trừ (Subtract).
▪ Cú pháp: ADD đích, nguồn/ SUB đích,
nguồn


Nhóm lệnh số học - ADD/SUB
18

Ví dụ: Sử dụng ngôn ngữ assembly viết
đoạn chương trình thực hiện cộng 5H với
3H, dùng các thanh ghi AL, BL.
Thực hiện

Ý nghĩa

MOV AL, 05H

AL  05H

MOV BL, 03H

BL  03H

ADD AL, BL

AL  05H+03H =08H

MOV 100H, AL

Di chuyển kết quả từ AL vào vị trí nhớ
DS:100H


Nhóm lệnh số học - MUL/DIV
19

4.2. Lệnh MUL/DIV
▪ Ý nghĩa: Thực hiện phép tính nhân
(Multiply) và chia (Divide).
▪ Cú pháp: MUL số nhân nguồn/ DIV số
chia nguồn


Nhóm lệnh số học - MUL/DIV
20

Ví dụ: Sử dụng ngôn ngữ assembly viết
đoạn chương trình thực hiện nhân 5H với
3H, dùng thanh ghi CL.
Thực hiện

Ý nghĩa

MOV AL, 05H

AL  05H (số được nhân)

MOV CL, 03H

CL  03H (số nhân)

MUL CL

AL  0FH (kết quả)

MOV MEM1, AL

Chuyển kết quả (0FH) từ AL vào vị trí
nhớ có nhãn MEM1.


Nhóm lệnh số học - MUL/DIV
21

Ví dụ: Sử dụng ngôn ngữ assembly viết
đoạn chương trình thực hiện chia 6H với
3H, dùng thanh ghi CL.
Thực hiện

Ý nghĩa

MOV AX, 0006H

AX  6H

MOV CL, 03H

CL  3H

DIV CL

AHAL  00H (số dư), 02H (thương số)

Chú ý: 6H→0006H lấp đầy thanh ghi AX.
Các byte trọng số cao AX bị xoá,tránh bị lỗi.


Nhóm lệnh số học - INC/DEC
22

4.3. Lệnh INC/DEC
▪ Ý nghĩa: Thực hiện tăng (increment)
hoặc giảm (decrement) 1 đơn vị vào toán
hạng.
▪ Cú pháp: INC đích/ DEC đích


Nhóm lệnh số học - NEG
23

4.4. Lệnh NEG- Negative a Operand
▪ Ý nghĩa: Lấy bù 2 của một toán hạng hay
đảo dấu toán hạng.
▪ Cú pháp: NEG đích
Ví dụ

Ý nghĩa

NEG AH

AH  0 - (AH)

NEG BYTE PTR[BX]

Lấy bù 2 của ô nhớ do BX chỉ ra
trong DS


Nhóm lệnh Logic - NOT
24

5. Nhóm lệnh Logic
5.1. Lệnh NOT
▪ Ý nghĩa: Đảo tất cả các bit trong toán
hạng
▪ Cú pháp: NOT đích


Nhóm lệnh Logic - NOT
25

Ví dụ: Xác định kết quả đoạn chương trình
Ví dụ

MOV

Ý nghĩa

BL, Nội dung của thanh ghi BL được nạp

00110011B

vào là 00110011B

NOT BL

Thực hiện phép NOT

MOV MEM1, BL Nội dung của thanh ghi BL là

11001100B và giá trị này được đưa
vào vị trí nhớ có nhãn MEM1


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×