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

toán tử toán hạng các phép điịnh địa chỉ

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 (8.97 MB, 41 trang )

04/26/14
04/26/14
1
1
Toán tử – Toán hạng -
Toán tử – Toán hạng -
các phép đònh đòa chỉ – Tập lệnh
các phép đònh đòa chỉ – Tập lệnh
Toán tử – Toán hạng -
Toán tử – Toán hạng -
các phép đònh đòa chỉ – Tập lệnh
các phép đònh đòa chỉ – Tập lệnh
04/26/14
04/26/14
2
2
Toán tử – Toán hạng -
Toán tử – Toán hạng -
các phép đònh đòa chỉ – Tập lệnh
các phép đònh đòa chỉ – Tập lệnh
Toán tử – Toán hạng -
Toán tử – Toán hạng -
các phép đònh đòa chỉ – Tập lệnh
các phép đònh đòa chỉ – Tập lệnh


Hiểu cách dùng toán tử trong ASM.
Hiểu cách dùng toán tử trong ASM.


Nắm được tập lệnh của CPU 8086/8088.


Nắm được tập lệnh của CPU 8086/8088.


Biết cách đònh đòa chỉ thông qua toán hạng.
Biết cách đònh đòa chỉ thông qua toán hạng.


Biết vận dụng các kỹ năng trên vào vấn đề cần giải
Biết vận dụng các kỹ năng trên vào vấn đề cần giải
quyết và hiện thực thành chương trình.
quyết và hiện thực thành chương trình.
Mục tiêu
3
3
04/26/14
04/26/14
Toán tử
Toán tử
Điểm quan trọng phân biệt giữa toán tử và lệnh là :
Điểm quan trọng phân biệt giữa toán tử và lệnh là :


Toán tử điều khiển sự tính toán các trò hằng xác
Toán tử điều khiển sự tính toán các trò hằng xác
đònh lúc dòch.
đònh lúc dòch.


Lệnh điều khiển sự tính toán các trò không xác đònh
Lệnh điều khiển sự tính toán các trò không xác đònh

được cho đến khi CT thực hiện.
được cho đến khi CT thực hiện.
Ex : toán tử + điều khiển phép cộng khi dòch.
Lệnh cộng ADD điều khiển phép cộng khi chương trình thực
hiện.
4
4
04/26/14
04/26/14
Toán tử số học
Toán tử số học
Toán tử
Toán tử
Cú pháp
Cú pháp
Công dụng
Công dụng
+
+
+ expression
+ expression
Dương
Dương
-
-
- expression
- expression
m
m
*

*
exp1*exp2
exp1*exp2
Nhân
Nhân
/
/
exp1/exp2
exp1/exp2
Chia
Chia
MOD
MOD
exp1 mod exp2
exp1 mod exp2
Phần dư
Phần dư
+
+
exp1 + exp2
exp1 + exp2
Cộng
Cộng
-
-
exp1 - exp2
exp1 - exp2
Trừ
Trừ
SHL

SHL
exp shl n
exp shl n
Dòch exp sang trái n bit
Dòch exp sang trái n bit
SHR
SHR
exp shr n
exp shr n
Dòch exp sang phải n bit
Dòch exp sang phải n bit
5
5
04/26/14
04/26/14
Toaùn töû logic
Toaùn töû logic
Not
Not
Not expression
Not expression
And
And
Exp1 and exp2
Exp1 and exp2
Or
Or
Exp1 or exp2
Exp1 or exp2
Xor

Xor
Exp1 xor exp2
Exp1 xor exp2
Ex : MOV AH , 8 OR 4 AND 2
MOV AL, NOT (20 XOR 0011100B)
6
6
04/26/14
04/26/14
Toán Tử Quan Hệ
Toán Tử Quan Hệ
So sánh 2 biểu thức và cho trò là true (-1) nếu
So sánh 2 biểu thức và cho trò là true (-1) nếu
điều kiện của toán tử thỏa, ngược lại là false.
điều kiện của toán tử thỏa, ngược lại là false.
EQ
EQ
Exp1 EQ exp2
Exp1 EQ exp2
True
True
nếu
nếu
Exp1 = exp2
Exp1 = exp2
NE
NE
Exp1 NE exp2
Exp1 NE exp2
True

True
nếu
nếu
Exp1 <> exp2
Exp1 <> exp2
LT
LT
Exp1 LT exp2
Exp1 LT exp2
True n
True n
ếu
ếu
Exp1 < exp2
Exp1 < exp2
LE
LE
Exp1 LE exp2
Exp1 LE exp2
True
True
nếu
nếu
Exp1 <= exp2
Exp1 <= exp2
GT
GT
Exp1 GT exp2
Exp1 GT exp2
True n

True n
ếu
ếu
Exp1 > exp2
Exp1 > exp2
GE
GE
Exp1 GE exp2
Exp1 GE exp2
True
True
nếu
nếu
Exp1 >= exp2
Exp1 >= exp2
7
7
04/26/14
04/26/14
ĐỘ ƯU TIÊN
ĐỘ ƯU TIÊN
TOÁN
TOÁN
TỬ
TỬ
TOÁN TỬ
TOÁN TỬ
MÔ TẢ
MÔ TẢ
( )

( )
Dấu ngoặc
Dấu ngoặc
+ , -
+ , -
Dấu dương , âm
Dấu dương , âm
* / MOD
* / MOD
Nhân , chia, Modulus
Nhân , chia, Modulus
+ , -
+ , -
Cộng, trừ
Cộng, trừ
Độ ưu tiên
giảm dần
8
8
04/26/14
04/26/14
Toán tử SEG
Toán tử SEG
Cú pháp :
Cú pháp :


SEG expression
SEG expression



Cho đòa chỉ đoạn của biểu thức expression.
Cho đòa chỉ đoạn của biểu thức expression.
Expression có thể là biến | nhãn | tên segment hay toán hạng
Expression có thể là biến | nhãn | tên segment hay toán hạng
bộ nhớ khác.
bộ nhớ khác.
9
9
04/26/14
04/26/14
Toán tử OFFSET
Toán tử OFFSET
Cú pháp :
Cú pháp :
OFFSET
OFFSET
expression
expression


Cho đòa chỉ OFFSET của biểu thức expression.
Cho đòa chỉ OFFSET của biểu thức expression.
Expression có thể là biến | nhãn | tên segment hay toán hạng
Expression có thể là biến | nhãn | tên segment hay toán hạng
trực tiếp bộ nhớ khác.
trực tiếp bộ nhớ khác.
Ex : nạp đòa chỉ segment và offset của biến table vào DS :AX
TABLE DB ?
MOV AX, SEG TABLE

MOV DS, AX
MOV DX, OFFSET Table
10
10
04/26/14
04/26/14
TOÁN TỬ $
TOÁN TỬ $
Cho đòa chỉ của OFFSET của phát
Cho đòa chỉ của OFFSET của phát
biểu chứa toán tử $.
biểu chứa toán tử $.
Thường được dùng để tính chiều dài
Thường được dùng để tính chiều dài
chuổi.
chuổi.
11
11
04/26/14
04/26/14
TOÁN TỬ PTR
TOÁN TỬ PTR
Cú pháp :
Cú pháp :
type PTR expression
type PTR expression
Cho phép thay đổi dạng của expression
Cho phép thay đổi dạng của expression
nếu expr là 1
nếu expr là 1

biến
biến
|
|
toán hạng bộ nhớ
toán hạng bộ nhớ
thì type có
thì type có
thể là byte , word hay dword.
thể là byte , word hay dword.
Nếu expr là 1 nhãn thì type có thể là near hay
Nếu expr là 1 nhãn thì type có thể là near hay
far.
far.
Ex : mov ax, word ptr var1 ; var1 là toán hạng kiểu
Word
mov bl , byte ptr var2 ; var2 là toán hạng kiểu byte
12
12
04/26/14
04/26/14
Toán hạng (Operand)
Toán hạng (Operand)
Các toán hạng chỉ ra nơi chứa dữ liệu cho 1 lệnh , chỉ thò.
Hầu hết các lệnh Assembly đều có đối số là 1 hoặc 2 toán hạng
Có 1 số lệnh chỉ có 1 toán hạng như RET, CLC.
Với các lệnh 2 toán hạng thì toán hạng thứ 2 là toán hạng
nguồn (source) – chứa dữ liệu hoặc đòa chỉ của dữ liệu.
13
13

04/26/14
04/26/14
Toán hạng (Operand)
Toán hạng (Operand)
Toán hạng đích giữ kết quả (nếu có yêu cầu) sau khi
thi hành lệnh.
Toán hạng đích có thể là thanh ghi hay Bộ nhớ.
Toán hạng nguồn có thể là thanh ghi, bộ nhớ hay 1 giá trò
tức thời .
Toán hạng số tức thời có thể là số trong các hệ đếm khác nhau
và được viết theo qui đònh sau :
Số hệ 2 : xxxxxxxxB (x là bit nhò phân)
Số hệ 10 : xxxxxD hay xxxxx (x là 1 số hệ 10)
Số hệ 16 : xxxxH và bắt đầu bằng số (x là 1 số hệ 16)
14
14
04/26/14
04/26/14
Cách xác đònh dữ liệu trong lệnh được gọi là cơ
Cách xác đònh dữ liệu trong lệnh được gọi là cơ
chế đònh vò đòa chỉ (addressing mode)
chế đònh vò đòa chỉ (addressing mode)


chỉ ra
chỉ ra
nơi cất dữ liệu
nơi cất dữ liệu
Cơ chế đònh vò đòa chỉ
Cơ chế đònh vò đòa chỉ

Cơ chế này chia làm 3 loại : đònh vò bằng thanh
Cơ chế này chia làm 3 loại : đònh vò bằng thanh
ghi, bằng giá trò tức thời và bằng bộ nhớ.
ghi, bằng giá trò tức thời và bằng bộ nhớ.


MOV AL, BL ; đònh vò bằng thanh ghi
MOV AL, BL ; đònh vò bằng thanh ghi


INC BX ; đònh vò bằng thanh ghi
INC BX ; đònh vò bằng thanh ghi
Toán hạng là Reg
Lệnh sẽ được thực hiện
nhanh hơn
15
15
04/26/14
04/26/14
Toán hạng tức thời là dữ liệu 8 bit hay 16 bit nằm ngay trong câu lệnh.
Toán hạng tức thời là dữ liệu 8 bit hay 16 bit nằm ngay trong câu lệnh.


Dữ liệu xử lý được lưu ngay trong lệnh
Dữ liệu xử lý được lưu ngay trong lệnh


Ex : MOV CL, 61h ;
Ex : MOV CL, 61h ;



toán hạng tức thời
toán hạng tức thời


Mã máy của lệnh trên là
Mã máy của lệnh trên là
B161h
B161h
ỊNH VỊ T C TH IĐ Ứ Ờ
ỊNH VỊ T C TH IĐ Ứ Ờ
Lệnh sẽ được thực hiện
nhanh vì dữ liệu được lấy cùng
với lệnh.
16
16
04/26/14
04/26/14
ĐỊNH VỊ THANH GHI
ĐỊNH VỊ THANH GHI
Giá trị của toán hạng được truy xuất nằm
ngay trong thanh ghi của CPU.
Ex : MOV AX,BX ; chuyển nội dung của
thanh ghi BX vào thanh ghi AX
17
17
04/26/14
04/26/14



Đònh vò gián tiếp thanh ghi :
Đònh vò gián tiếp thanh ghi :
đòa chỉ toán hạng không chứa trực tiếp trong lệnh mà gián
đòa chỉ toán hạng không chứa trực tiếp trong lệnh mà gián
tiếp thông qua một thanh ghi.
tiếp thông qua một thanh ghi.
NH V B NHĐỊ Ị Ộ Ớ
NH V B NHĐỊ Ị Ộ Ớ
Lấy dữ liệu từ vùng nhớ
Ex : SUB DX, [BX] ;
Khác với lệnh SUB DX, BX
Trong chế độ này, địa chỉ Offset của ơ nhớ chứa
nộI dung của tốn hạng nằm trong các thanh ghi
BX,BP,SI,DI.
Địa chỉ segment ngầm định chứa trong DS nếu dùng
BX,SI,DI
Địa chỉ segment ngầm định chứa trong ES nếu dùng BP
18
18
04/26/14
04/26/14
EX1 : MOV AX, [SI]
Nạp nội dung của ô nhớ mà địa chỉ Offset lưu trong BP
và địa chỉ đoạn lưu trong ES vào AX.
EX2 : MOV AX, [BP]
Nạp nội dung của ô nhớ mà địa chỉ Offset lưu trong SI và
địa chỉ đoạn lưu trong DS vào AX.
Ñònh vò giaùn tieáp thanh ghi :
Ñònh vò giaùn tieáp thanh ghi :
19

19
04/26/14
04/26/14
ĐỊNH VỊ TRỰC TIẾP
Địa chỉ Offset của ô nhớ chứa dữ liệu toán hạng nằm
trực tiếp trong câu lệnh còn địa chỉ segment ngầm
định chứa trong DS.
Ex : MOV BX, [1234]
Nạp nộI dung ô nhớ có địa chỉ DS:1234  BX
20
20
04/26/14
04/26/14
ĐỊNH VỊ CƠ SỞ
ĐỊNH VỊ CƠ SỞ
Địa chỉ Offset của toán hạng được tính là tổng của nộI
dung thanh ghi BX hoặc BP và 1 độ dịch.
Độ dịch là 1 số nguyên âm hoặc dương. Địa chỉ đọan
là đoạn hiện tại.
21
21
04/26/14
04/26/14
ĐỊA CHỈ HIỆU DỤNG
ĐỊA CHỈ HIỆU DỤNG
Toán hạng bộ nhớ dùng trong tập lệnh vi xử lý 86 sử dụng
phương pháp đònh đòa chỉ tổng hợp được gọi là đòa chỉ hiệu
dụng.
Đòa chỉ hiệu dụng là tổ hợp của 3 nhóm sau đặt trong dấu [ ].
Nhóm thanh ghi chỉ số : SI , DI

Nhóm thanh ghi nền : BX, BP
Đòa chỉ trực tiếp : số 16 bit
Các thanh ghi trong cùng 1 nhóm không được xuất hiện trong cùng 1
đòa chỉ hiệu dụng.
Các thanh ghi trong cùng 1 nhóm không được xuất hiện trong cùng 1
đòa chỉ hiệu dụng.
22
22
04/26/14
04/26/14
ĐỊA CHỈ HIỆU DỤNG
ĐỊA CHỈ HIỆU DỤNG
Đòa chỉ hiệu dụng hợp lệ :
Một số thí dụ
[1000h] [SI], [DI] , [BX] , [BP]
[SI+BX], [SI+BP] , [DI+BX] , [DI+BP] , [SI+1000h], [DI+100h]
[SI] [BX] [1000h], [SI+BP+1000h] , [DI+BX][1000h], [DI+1000h]+
[BP]
Đòa chỉ hiệu dụng không hợp lệ :
[70000], [AX] , [SI+DI+1000h], [BX] [BP]
23
23
04/26/14
04/26/14
ĐỊA CHỈ HIỆU DỤNG (tt)
ĐỊA CHỈ HIỆU DỤNG (tt)
Đòa chỉ hiệu dụng chính là phần offset của đòa chỉ
Đòa chỉ hiệu dụng chính là phần offset của đòa chỉ
luận lý bộ nhớ.
luận lý bộ nhớ.

Segment của đòa chỉ hiệu dụng được mặc đònh
Segment của đòa chỉ hiệu dụng được mặc đònh
như sau :
như sau :
nếu không sử dụng BP trong đòa chỉ hiệu dụng
nếu không sử dụng BP trong đòa chỉ hiệu dụng
thì mặc đònh theo DS.
thì mặc đònh theo DS.
nếu có sử dụng BP trong đòa chỉ hiệu dụng thì
nếu có sử dụng BP trong đòa chỉ hiệu dụng thì
mặc đònh theo ES.
mặc đònh theo ES.
24
24
04/26/14
04/26/14
Đòa chỉ hiệu dụng (tt)
Đòa chỉ hiệu dụng (tt)
Qui ước
Để thuận tiện trong vấn đề giải thích lệnh, ta qui ước
sau :
Dữ liệu 8 bit bộ nhớ : [ đòa chỉ ]
Dữ liệu 16 bit bộ nhớ : [ đòa chỉ +1, đòa chỉ ]
Để xác đònh rõ hoạt động của bộ nhớ , ta phải dùng
thêm toán tử PTR như sau :
8 bit : BYTE PTR [1000H]
T
h
a
m


k
h
a
û
o

1

b
y
t
e

b
o
ä
n
h
ơ
ù
ơ
û

đ
ò
a

c
h



1
0
0
0
h
16 bit : WORD PTR [1000H]
T
h
a
m

k
h
a
û
o

2

b
y
t
e

b
o
ä
n

h
ơ
ù
l
i
e
ân

t
i
e
áp

ơ
û
đ
ò
a

c
h


1
0
0
0
h

v

a
ø
1
0
0
1
h
25
25
04/26/14
04/26/14
Ex : Tính tổng 1 array có 5 phần tử
Ex : Tính tổng 1 array có 5 phần tử
MOV BX, OFFSET LIST
MOV AX, 0
MOV AL, [BX]
ADD AL , [BX+1]
ADD AL , [BX+2]
ADD AL , [BX+3]
ADD AL , [BX+4]
MOV SUM , AX
………
LIST DB 10h, 20h, 40h, 2h, 5h
SUM DW 0
Cách thực hiện :
Lấy đòa chỉ của List vào BX
Dựa vào BX để xác đònh các phần
tử của array.
Khi tính tổng xong, đưa tổng vào
biến SUM.

×