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

Cấu trúc Máy tính và Lập trình Assembly - Chương 7 pps

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.9 MB, 40 trang )

07/24/14
07/24/14
Chuong 7 Cac phep dinh vi dia chi
Chuong 7 Cac phep dinh vi dia chi
1
1
Chương 6 : Toán tử – Toán hạng -
Chương 6 : 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
Chương 6 : Toán tử – Toán hạng -
Chương 6 : 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
207/24/14 Chuong 7 Cac phep dinh vi
dia chi
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.
307/24/14 Chuong 7 Cac phep dinh vi
dia chi
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
407/24/14 Chuong 7 Cac phep dinh vi
dia chi
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)
507/24/14 Chuong 7 Cac phep dinh vi
dia chi
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
607/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỘ Ư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
707/24/14 Chuong 7 Cac phep dinh vi
dia chi
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.
807/24/14 Chuong 7 Cac phep dinh vi
dia chi
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
907/24/14 Chuong 7 Cac phep dinh vi
dia chi
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.
1007/24/14 Chuong 7 Cac phep dinh vi
dia chi
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
1107/24/14 Chuong 7 Cac phep dinh vi
dia chi
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.
1207/24/14 Chuong 7 Cac phep dinh vi
dia chi

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)
1307/24/14 Chuong 7 Cac phep dinh vi
dia chi
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 ghi, bằng giá trò tức thời
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ớ.
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
1407/24/14 Chuong 7 Cac phep dinh vi
dia chi
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.
1507/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỊ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
1607/24/14 Chuong 7 Cac phep dinh vi
dia chi


Đò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
1707/24/14 Chuong 7 Cac phep dinh vi
dia chi
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 :
1807/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỊ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
1907/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỊ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.
2007/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỊ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.
2107/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỊ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]

2207/24/14 Chuong 7 Cac phep dinh vi
dia chi
ĐỊ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.
2307/24/14 Chuong 7 Cac phep dinh vi
dia chi
Đò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
2407/24/14 Chuong 7 Cac phep dinh vi
dia chi
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.
2507/24/14 Chuong 7 Cac phep dinh vi
dia chi
Ex : Tính tổng 1 array có 5 phần tử
Ex : Tính tổng 1 array có 5 phần tử
-
A 100
MOV BX, 0120
MOV AX, 0
MOV AL, [BX]
ADD AL , [BX+1]
ADD AL , [BX+2]
ADD AL , [BX+3]
ADD AL , [BX+4]
MOV [0125], AX
-A 120
DB 10, 20, 40, 2, 5
DW 0
CHẠY CT này bằng DEBUG

×