Tải bản đầy đủ (.doc) (30 trang)

Bài tập lớn: Nguyên lý tập lệnh

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 (179.72 KB, 30 trang )

Bộ công thơng
Trờng đại học công nghiệp hà nội
Khoa Điện tử

Bài tập lớn
Môn học : kiến trúc máy tính
TI
: NGUYấN Lí TP LNH
Giảng viên hớng dẫn: vũ thị thu hơng
Sinh viên thực hiện:

Lớp : LT TC- đh

điện tử I - KI

Mục lục
I . giới thiệu
ii. các thành phần của lƯnh m¸y
1. CÊu tróc chung cđa lƯnh m¸y
2. C¸c kiĨu thao t¸c
iii. c¸c nhãm lƯnh cđa bé vi xư lý
1. Nhãm lƯnh dÞch chun
2. Nhãm lƯnh sè häc
3. Nhãm lƯnh lo gic

Nguyễn Duy Quân
Nguyễn Huỳnh Quang
Bùi Văn Vinh
Bùi Xuân Lợi
Đinh Xu©n Huy



4. Nhóm lệnhvào ra chuyên dụng
5. Nhóm lệnh chuyển điều khiển
6. Nhóm lệnh điều khiển hệ thống
IV. các chế độ định địa chỉ
1. Chế độ định địa chỉ tức thì
2. Chế độ định địa chỉ thanh ghi
3. Chế độ định địa chỉ trực tiếp
4. Chế độ định địa chỉ gián tiếp qua thanh ghi
5. Chế độ định địa chỉ trực tiếp
6. Chế độ định địa chỉ dịch chuyển

I.

GớI THIệU CHUNG

Mỗi bộ vi xử lý đều phải có một tập lệnh xác định , tập lệnh thờng có từ
hàng chục ch cho đém hàng trăm lệnh mỗi lệnh là một chuỗi số nhị phân
mà bộ vi xử lý hiểu đợc để thực hiện một thao tác nhất định đối với ngời sử
dụng thì các lệnh đợc mô tả bằng các kí hiệu gợi nhớ ( đó chính là hợp
ngữ )

II . CáC THàNH PHầN CủA LệNH MáY
1. Cấu trúc chung của một lệnh máy
MÃ thao tác

địa chỉ các toán hạng

Trong đó mà thao tác là mà hóa cho thao tác mà máy phải thực hiện những
mà này đợc dịch ra mà máy là các chuỗi số nhị phân

địa chỉ toán hạng :chỉ ra nơi chứa các toán hạng mà thao tác sẽ tác động
+ toán hạng nguồn : dữ liệu vào cđa thao t¸c


+toán hạng đích
: dữ liệu ra của thao tác
ví dụ : lệnh dịch chuyển BX vào AX
MOV AX,BX ; chuyển BX vào AX
Trong đó : + MOV là mà thao tác
+ AX , BX là địa chỉ toán hạng

III.CáC NHóM LƯNH CđA VI Xư Lý
1. Nhãm lƯnh dÞch chun
a. LƯnh MOVE
Dạng lệnh: MOV đích , gốc
Lệnh MOVE đợc sử dụng để chuyển dữ liệu từ toán hạng nguồn vào toán
hạng ®Ých
vÝ dơ: MOV AL,BL : chun néi dung cđa BL vµo AL
GØa sư tríc khi thùc hiƯn lƯnh MOVE néi dung cđa AL vµ BL lµ
0AH
05H
AL
BL
Sau khi thùc hiƯn lƯnh MOVE thì nội dung của AL à BL là
05H
05H
AL
BL
Một bản sao của thanh ghi BL sẽ đợc chuyển vào thanh ghi AL còn nội dung
của BL vẫn dữ nguyên ,giá trị trớc đó của AL bị viết chèn lên.

Khả năng kết hợp giữa toán hạng nguồn và toán hạng đích cđa lƯnh MOVE


Toán hạng
đích

Thanh ghi
đa năng

Thanh ghi
đoạn

ô nhớ

Hằng số

Toán hạng gốc
Thanh ghi đa
năng

Có thể

Có thể

Có thể

Không thể

Thanh ghi đoạn


Có thể

Không thể

Có thể

Khô ng thĨ

« nhí

Cã thĨ

Cã thĨ

Kh«ng thĨ

H»ng sè

Cã thĨ

Kh«ng thĨ

Kh«ng
thĨ
Cã thĨ

kh«ng thể
Toán hạng nguồn và toán hạng đích phải cùng kiểu
ví dụ : nếu toán hạng đích là AX thì toán hạng nguồn khôngđợc là AL
b.lệnh LOAD

Lệnh LOAD dùng để nạp dữ liệu từ bộ nhớ đến bộ xử lý, lệnh LOAD có các
dạng sau:

LSD- Load register and DS with words from memory:
Viết lệnh: LDS đích, gốc
+đích :là một trong các thanh ghi AX ,BX ,CX,DX ,SP, BP ,SI ,DI
+gèc :lµ ô nhớ trong đoạn DS đợc chỉ rõ trong lệnh
Mô tả:
đích gốc ,DS gốc + 2
Đây là lệnh để nạp vào thanh ghi đà chọn và vào DS từ 4 ô nhớ liên
tiếp.Một trong những ứng dụng của lệnh này là làm cho SI vàDI chỉ vào
địa chỉ đầu của vùng nhớ chứa chuỗi gốc trớc khi dùng đến lệnhthao tác
chuỗi.
Lệnh này không tác động dến các cờ.

LEA- load efective address( nạp địa chỉ hiệu dụng vào thanh
ghi)
Viết lệnh: LEA đích , gốc
+đích : thờng là một trong các thanh ghi BX , CX, DX, BP , SI ,DI
+ gèc : là tên biến trong đoạn DS đợc chỉ rõ trong lệnh
Mô tả:
đích , địa chỉ lệch của gốc
Hoặc
đích , địa chỉ hiệu dụng của gốc
Đây là lệnh đẻ tính dịa chỉ lệch của biến hoặc dịa chỉ của ô nhớ chọn
làm gốc rồi nạp vào thanh ghi đà chọn
Lệnh này không tác động đến các cờ


ví dụ: LSA DX,MSG


; nạp địa chỉ lệch của bản tin MSG vào DX

LSA CX,{BX}{DI} ; nạp vào CX địa chØ hiƯu dơng do BX va DI chØ ra
LƯnh nµy không tác đông đến các cờ

LES- Load register and ES with words from memory( nạp 1 từ từ bộ nhớ
vào thanh ghi cho trong lệnh và môt t tiếp theo vào ES)
Viết lệnh:
LES đích, gốc
+đích :là một trong các thanh ghi AX , BX ,CX ,DX ,SP , BP , SI , DI
+Gốc :là ô nhớ trong đoạn DS đợc chỉ rõ trong lệnh
Mô tả:
đích
gốc,ES
gốc +2
Đây là lệnh để nạp vao thanh ghi đà chọn và vào ES từ 4 « nhí liªn tiÕp .
mét trong nhng øng dơng cđa lƯnh nµy lµ lµm cho DI vµ ES chØ vµo địa
chỉ đầu của vùng nhớ chứa chuỗi đích trớc khi dùng dến lệnh thao tác
Lệnh này không tác động đến các cờ
ví dụ :
LES DI,[BX]
Thí dụ trên nạp vào DI nội dung hai ô nhớ do BX và BX +1 chỉ ra và nạp vào
ES nội dung hai ô nhớ tiÕp theo do BX +2 vµ BX +3 chØ ra .Các ô nhớ này
đều nằm trong đoạn dữ liệu DSvà chứa địa chỉcủa chuỗi đích .Do vậy
sâu đó ES :DI chỉ vào đầu chuỗi đích cần thao tác.
c.Lệnh STORE (cất dữ liệu từ bộ xử lý đến bộ nhớ)
Dạng lệnh : SAHF(store AH in flag register)
Thao t¸c : lu 5 bit thÊp cđa AH vµo byte thÊp cđa thanh ghi cờ chỉ có bit tơng ứng với cờ mới đợc chuyển đổi các cờ trong bit thấp của thanh ghi cê lµ
SF = bit7 ,AF =bit 4 ,PF= bit 2 ,CF= bit 0.

Cờ không bị ảnh hởng
d.Lệnh EXCHANGE
Trao đổi nội dung của toán hạng nguồn và toán hạng đích
Viết lệnh:
XCHG đích,gốc
Toán hạng nguồn và toán hạng đích đợc đổi lẫn cho nhau
Cờ không bị ảnh hởng
ví dụ: XCHG AL,BL ; trao đổi nội dung của AL và BL
Giả sử thanh ghi AL vµ BL cã néi dung nh sau:
05
H
BL
AL
Sau khi thùc hiƯn lƯnh XCHG th× néi dung cđa hai thanh ghi AL vµ BL lµ


05
H

BL

AL

e.Lệnh CLEAR
Chuyển các bit 0 vào toán hạng đích

LệnhCLC( clear the carry flag: xoá cờ nhớ)
Mô tả :
CLC CF,0; chuyển 0 vào CF
Lệnh này không tác động đến cờ khác


Lệnh CLD (clear the direction:xoá cờ hớng)
Mô tả:
CLD DF,0; chuyển 0 vào DF
Lệnh này không tác động đến các cờ khác
Lệnh này định hớng thao tác theo chiều tiến cho các lệnh liên quan đến
chuỗi . Các thanh ghi liên quan là SI và DI Ssẽ tự động tăng lên khi làmg việc
xong với một phần tử của chuỗi.

Lệnh CLI (clear the inerprrupt flag: xáo cờ cho phép ngắt)
Mô tả:
CLI IF,0;chuyển 0 vào IF
Lệnh này xoá cờ cho phép ngắt các yêu cầu ngắt che đợc sẽ bị che
Không tác động đến các cờ
f.Lệnh SET
Chuyển các bit 1 vào toán hạng đích

Lệnh STC (set the carry flag:lập cờ nhớ)
Mô tả :
STC CF,1; chuyển 1 vào CF
Lệnh này không tác động đến c¸c cê kh¸c

LƯnh STD (set the direction flag: lËp cê hớng)
Mô tả:
STD DF,1 ;chuyển 1 vào DF
Lệnh này không tác động đến các cờ khác
Lệnh này định hớng thao tác cho các lệnh làm việc với chuỗi theo chiều lùi
các thanh ghi SI và DI liên quan sẽ đơc tự động giảm khi làm việc xong với
một phần tử của chuỗi .


Lệnh STI (setthe interprrupt flag:lập cờ cho phép ngắt )
Mô tả :
STI IF, 1 ; chuyển 1 vào IF


Lệnh này lập cờ cho phép ngắt để cho phép các yêu cầu ngắt tác động
vao chân INTR đợc CPU nhËn biÕt . Khi IF=1 nÕu cã tÝn hiÖu INTR thì
8086/8088 sẽ bị ngắt nó sẽ tự động cất thanh ghhi cờ và địa chỉ trở về
vào ngăn xếp rồi chuyển sang chạy chơng trình con phục vụ ngắt
(CTCPVN) .Tại cuối CTCPVN sẽ có lệnh trở về chơng trình con từ CTCPVN
(IRET) để 8086/8088 lấy lại từ ngăn xếp giá trị cua thanh ghi cờ và địa chỉ
trở về.
Lệnh này không tác động đến các cờ.
g. Lệnh PUSH
Cất nội dung toán hạng nguồn vào ngăn xếp

PUSH Push word on the stack( cất một từ vào ngăn xếp)
Viết lệnh :
PUSH Gốc
Mô tả:
SP
SP-2
Gốc
{SP}
Lệnh nguồn thực hiện giảm SP đi 2 sau đó chuyển bản sao của toán hạng
nguồn vào ngăn xếp có địa chỉ SS:BP
Trong đó toán hạng gốc có thể tìm đợc theo các chế ịô địa chỉ khác nhau
có thể là các thanh ghi đa năng thanh ghi đoạn hoăc ô nhớ .Lệnh này thờng
dùng với lệnh POP nh là một cặp đối ngẫu để xử lý cho các dữ liệu và trạng
thái của chơng trình chính (CTC)khi vào/ ra chơng trình con.

Lệnh này không tác động đến các cờ .
ví dụ:
PUSH BX
; cất BX vào ngăn xếp tại vÞ trÝ do SP chØ ra
PUSH table {BX} ; cÊt hai byte của vùng dữ liệu DScó địa chỉ đầu t¹i
; {table +BX}

PUSHF- Push flag register to the stack(cÊt thanh ghi cờ vào ngăn
xếp)
Viết lệnh:
Pushf
Mô tả :
SP
SP-2
RF
{SP}
Giảm SP đi 2và chuyển các bit cờ vào đỉnh ngăn xếp
Dữ liệu để tại ngăn xếp không thay đổi .SS không thay đổi
Lệnh này không tác động đến các cờ
ví dụ:
POP DX
;lấy hai byte từ đỉnh ngăn xếp đa vào DX
POP Table{BX}
; lấy hai byte ở đỉnh ngăn xếp rồi để tại vùng DS có
địa
; chỉ đầu tại {table +BX}
h. Lệnh POP
Lấy nội dung đỉnh ngăn xếp đa đến toán hạng đích



 POP- pop word from top of stack (lÊy l¹i một từ vào thanh ghi từ đỉnh
ngăn xếp)
Viết lệnh :
POP đích
Mô tả:
Đích
{ SP}
SP
SP+2
Trong đó toán hạng đích có thể tìm đợc theo các chế độ địa chỉ khác
nhaucó thể là các thanh ghi đa năng thanh ghi đoạn ( nhng không đợc là
thanh ghi đoạn mà CS) hoặc ô nhớ .Dữ liệu đẻ tại ngăn xếp không thay
đổi .Gía trị của SS không thay đổi
Lênh này không tác động đến c¸c cê
 POPF – Pop word from to stack to flag register (lấy môt từ từ đỉnh
ngăn xếp rồi đa vào thanh cờ )
Viết lệnh:
POPF
Mô tả:
RF
{SP}
SP
SP+2
Sau lệnh này dữ liệu để tại ngăn xếp không thay đổi .SS không thay đổi
Lệnh nay không tác động đến các cờ
2. Nhóm lệnh số học
a. lệnh ADD
Đợc sử dụng để cộng nội dung của hai toán hạng
Dạng lệnh :
ADD Đích,nguồn

Kết quả lu vào toán hạng đích nguồn không thay đổi
ví dụ :
ADD AL,BL
; cộng nội dung của AL và BL
Giả sử trớc khi thùc hiƯn lƯnh ADD AL,BL th× néi dung cđa AL và BL là:
0FH
02H
AL
BL
Sau khi thực hiện lệnh ADD AL,BL thì nội dung của AL và BL là:
11H

02H

AL

BL
Khả năng kết hợp giữa toán hạng nguồn và toán hạng đích đợc chỉ ra trong
b¶ng sau:


Toán
hạngđích

Thanh ghi
đa năng

ô nhớ

Hằng số


Toan hạng nguồn
Thanh ghi đa
Có thể
Có thể
Không thể
năng
ô nhớ
Có thể
Không thể
Không thể
Hằng số
Có thể
Có thể
Không thể
Chú ý: hai toán hạng phải có cùng độ dài dữ liệu
b. Lệnh SUBTRACT
Đợc sử dụng để trừ nội dung của hai toán hạng kết quả lu trong toán hang
đích toán hạngnguồn vẫn giữ ngyên
Dạng lệnh:
SUB Đích , gốc
ví dụ:
SUB AL,BL
;trừ néi dung cđa AL cho BL
Gi¶ sư tríc khi thùc hiƯn lƯnh SUB AL,BL néi dung cua AL vµ BL là:
05H

02H
AL


BL

Sau khi thực hiện lệnh SUB AL,BL thì nội dung của AL và BL là:
02H
AL
BL
Khả năng kết hợp giữa toán hạng nguồn và toán hạng đích trong phép trừ
đợc cho trong bảng sau:
Toán
hạng
đích
Toán hạng
Nguồn
Thanh ghi đa
năng
ô nhớ
Hăng số

Thanh ghi đa
năng

ô nhí

H»ng sè

Cã thĨ

Cã thĨ

Kh«ng thĨ


Cã thĨ
Cã thĨ

Kh«ng thĨ
Cã thĨ

Kh«ng thĨ
Kh«ng thể

Chú ý : toán hạng nguồn và toán hạng đích phải có cùng độ dài dữ liệu
c. Lệnh MULIPLY
Lệnh này đợc dùng để nhân dữ liệu của hai toán hạng với nhau .Lệnh này
thực hiện phép nhân không dấu


Dạng lệnh:
MUL nguồn
Thao tác : lệnh MUL nguồn thc hiện nhân nội dung của AL với toán hạng
nguồn nếu toán hạng nguồn là 1 byte tích mạc định chứa trong AX , hoăc
nhân nội dung của AX với toán hạng nguồn nếu toán hang nguồn là một từ ,
tích măc định chứa trong DX: AX . Các cờ CF ,OF =0 nếu nửa cao của tích
là phần mở rộng của na thấp .Toán hạng nguồn không đợc là hằng số
Cờ bị ảnh hởng :CF ,OF
Ví dụ :giả sử các biến A,B,C,D là các biến không dấu kiểu byte . Để thực
hiện phép toán
AX (chứa kết quả) =A*B +C*D
Đoạn mà nh sau:
Mov AL ,A


;AL chøa A

MOV BL,B

; BL chøa B

MUL BL

;AX chøa A*B

MOV DX,AX

; cÊt A*B vµo DX

MOV AL,C

;AL chøa trong C

MOV BL,D

;BL chøa trong D

MUL BL ;AX chøa C*D
ADD

AX,DX

;AX chøa A*B+ C*D

d. Lệnh DIVIDE

Đợc sử dụng để chia hai toán hạng không dấu
Dạng lệnh:
DIV nguồn
Thao tác :số chia là toán hạng nguồn có thể là một ô nhớ hay một thanh
ghi.Trong phép chia cho byte (toán hạng nguồn 8bit) số bị chialà một từ
mặc định chứa trong AX, kết quả thơng số chứa trong AL và số d trả về
trong AH.Khi thực hiện một phép chia cho word (toán hạng nguån 16 bit), sè
bÞ chia 32 bit chøa trong DX:AX(16 bit cao trong DX 16 bit thÊp trong ax)
kÕt qu¶ thơng số chứa trong AX và số d trả về trong DX.
Cờ không xác định: AF,OF,CF,SF,PF
Ví dụ :giả sử AX chøa 20 DX chøa 0 BX chøa 6 khi thùc hiện phép chia
cho byte hoặc cho từ ta sẽ đợc kÕt qu¶ nh sau:
KÕt qu¶
LƯnh
DIV BL

AH
2

AL

AX

3

DX
0

0203H



DIV BX

0

3

2
0003H

Hiện tợng tràn số co thể sảy rakhi số bị chia quá lớn so với số chia nếu thơng sè lín h¬n8 bit trong phÐp chia cho byte (16bit trong phép chia cho
word)hoặc số chia bằng 0 thì ngắt INTO đợc tạo ra.
e. Lệnh NEGATE
Đổi dấu toán hạng (lấy bù 2)
Dạng lệnh:
NEG đích
Thao tác:toán hạng đích bị trừ đi toàn chữ số 1 (0FFHvới byte và 0FFFFH
với từ)Sau đó kết quảchứa trong toán hạng đích đợc cộng thêm 1.
Cờ bị ảnh hởng: AF,OF,CF,SF,ZF.
Ví dụ: giả sử thanh ghi DH chøa 2 kÕt qu¶ DH sau khi thùc hiƯn lƯnh NEG
DH nh sau:
DH=
(0FFH-2) + 1
=
256 -2
=
-2 (hay 0FEH)
NÕu thanh ghi DX chøa 2 , sau khi thùc hiÖn lÖnh NEG DX kết quả DX=
0FFFFH.
f. Lệnh INCREMENT

Tăng toán hạng đích lên 1
Dạng lệnh:
INC đích
Môtả :
Đích
đích +1
Trong đó toán hạng đich có thể tìm đợc theo các chế độ địa chỉ khác
nhau.Lu ý là nếu đích=FFH ( hoặcFFFFH) thì đích +1= 00H (hoặc 0000H)
mà không ảnh hởng đén cờ CF.Lệnh này cho kết quả tơng đơng nh lệnh
ADD đích ,1 nhng chạy nhanh hơn.
Cờ bị ảnh hởng : AF , OF , PF , SF ,ZF
Không tác động: CF.
g. Lệnh DECREMENT
Giảm toán hạng đích đi 1
Dạng lệnh:
DEC destination
Mô tả:
đích
đích- 1
Trong đó toán hạng đích có thể tìm đợc theo các chế độ địa chỉ khác
nhau .Lu ý là nếu đích =00H (hoặc 0000H) thì đích -1= FFH (hoặc
FFFFH) mà không làm ảnh hởng đến cờ CF .Lệnh này cho kết quả tơng đơng nh lệnh SUB đích,1 nhng chạy nhanh hơn
Cờ bị ảnh hởng : AF, OF, PF, SF ,ZF
Không tác động dến cờ : CF
h. Lệnh COMPARE
Trừ toán hạng để lập cê

LƯnh CMP- compare byte of word ( so s¸nh hai byte hay hai tõ)



Dạng lệnh:
CMP đích ,gốc
Mô tả :
đích - gốc
Trong đó toán hạng đích và gốc có thể tìm đợc theo các chế độ địa chỉ
khác nhau, nhng phải chứa dữ liệu có cùng độ dài và không đợc phép đồng
thời là hai ô nhớ .Lệnh này chỉ tạo các cờ ,không lu kết quả so sánh , sau khi
so sánh các toán hạngkhông bị thay đổi.Lệnh này thờng đợc dùng để tạo các
cờ cho các lệnh nhảy có điều kiện (nhảy theo cờ)
Các cờ chính quan hệ đích và gốc khi so sánh hai số không dấu :
CF
ZF
Đích = gốc
0
1
Đích > gốc
0
0
Đích < gốc
1
0
Các cờ bị ảnh hởng :AF , CF , OF, PF , SF , ZF

LÖnh CMPS/ CMPSB/ CMPSW compare string byte or string words (so
sánh hai chuỗi byte hay 2 chuỗi từ )
Dạng lệnh:
CMPS chuỗi đích, chuỗi gốc
CMPSB chuỗi đích , chuỗi gốc
CMPSW chuỗi đích , chuỗi gốc
Mô tả :

Chuỗi đích chuỗi gốc
lệnh này so sánh từng phần tử (byte hay từ ) của hai xâu có các phần tử
cùng loại .Lệnh chỉ tạo các cờ không lu kết quả so sánh sau khi so sánh các
toán hạng không bị thay đổi.Trong lệnh này ngầm định các thanh ghi với
các chức năng :
+ DS : SI là địa chỉ của phần tử so sánh trong chuỗi gốc
+ ES : DI là địa chỉ của phần tử so sánh trrong chuỗi đích
+Sau mỗi lần so SI
SI +/- 1 , DI
DI +/- 1 hc SI SI +/- 2 , DI DI +/2 một cách tự động tuỳ thuộc cờ hớng DF là 0 hay là 1 và chuỗi là chuỗi byte
hay chuỗi từ.
Có hai cách để chỉ ra một chuỗi là chuỗi byte hay chuỗi từ cách đầu tiên
là ta khai rõ bằng tên ngay từ đầu chuỗi nguồn và chuỗi đích là loại gì .Sau
đó ta dùng lệnh COMPS để thao tác với các chuỗi đó :
ví dụ:
StrByte 1
DB đây là chuỗi byte 1
StrByte 2
DB đây là chuỗi byte 2
StrWord
DW đây là chuỗi từ 1
StrWors 2
DW đây là chuỗi từ 2
..
LEA SI,StrByte1
LEA DI,StrByte2
COMP StrByte 2 , StrByte 1
……
LEA SI,StrWord 1



LEA DI,StrWord 2
COMP StrWord 2, StrWord 1
Cách thứ hai là ta thêm vào lệnh CMPS đuôi thích hợp để báo cho chơng
trình dịch biết kiểu thao tác trên chuỗi đà đợc định nghĩa
Lệnh CMPS/ CMPSB/CMPSW có thể dùng kèm với lệnh REPE hoặc REPNE
dể so sánh tất cả các phần tử trong chuỗi
Cờ bị ảnh hởng : AF , CF , OF , PF ,SF , ZF
VÝ dô :
MOV DI,OFFSET chuỗi đích ; lấy địa chỉ lệch của chuỗi đích tại
ES và DI
MOV SI,OFFSET chuỗi gốc

; lấy địa chỉ lệch của chuỗi gốc tại DS

và SI
CLD
CMPS

; làm việc với chuỗi theo chiều tiến
; chuyển 1 Byte SI và DI tăng thªm 1

3.Nhãm lƯnh logic
a. LƯnh AND – And corresponding Bit of two operands( và hai toán hạng)
Dạng lệnh:
AND Đích,Gốc
Mô tả :
Đích
Đích ^ gốc
Trong đó toán hạng đích và gốc có thể tìm thấy theo các chế đọ địa

chỉ khác nhau, nhng phải chứa dữ liệu cùng đọ dài và không đợc phép
đồng thời là hai ô nhớ và cũng không đợc là thanh ghi đoạn .Phép AND thờng đợc dùng để che đi / giữ lại một vài bit nào đó của một toán hạng bằng
cach nhân logic toán hạng đó với toán hạng tức thì có các bit 0/1 ở các chỗ
cần che đi / giữ nguyên tơng ứng ( các toán hạng tức thì lúc này còn đợc gọi
là mặt nạ)
Xoá :CF , OF
Cờ bị ảnh hởng : PF, SF , ZF , PF chØ cã nghÜa khi toán hạng là 8 bit
Cờ không xác định: AF
Ví dụ:
AND AL,BL ;AL
AL^BL theo tõng bit
AND BL,0FH ; che 4 bit cao cđa BL
b.LƯnh OR – Logically Or Corresponding Bits Of Two Operands ( hoặc hai
toán hạng)
Dạng lệnh:
OR Đích ,Gốc
Mô tả:
đích đích v gốc
Trong đó toán hạng đích và toán hạng gốc có thể tìm đợc theo các chế độ
địa chỉ khác nhau nhng phải chứa dữ liệu cùng độ dài và không đợc phép
đồng thời là hai ô nhớ và cũng không đợc là thnah ghi đoạn .Phép OR thờng


dùng để lập một vài bit nào đó của toán hạng bằng cách cộng logic toán hạng
đó với toán hạng tức thời có các bit 1 tại các vị trí tơng ứng cần thiết lập.
Xoá : CF, OF
Cờ bị ảnh hëng : PF , SF , PF chØ cã ý nghĩa khi toán hạng là 8 bit
Cờ không xác định : AF
VÝ dô:
OR

AL,BL ; AL
AL v BL theo tõng bit
OR
BL,30H ; Lập bit b4 và b5 cuaBL lên 1
c.Lệnh Exclussive or corresponding bits of two operands ( hoặc loại trừ
hai toán hạng )
Dạng lệnh :
XOR Đích , gốc
Mô tả : trong đó toán hạng đích vầ toan hạng gốc có thể tìm ddwos theo
các chế độ địa chỉ khác nhau , nhng phải chứa dữ liệu cùng độ dài và
không đợc phép là hai ô nhớ và cũng không đợc là thanh ghhi đoạn .Từ tính
chất của phép hoặc loại trừ ,ta thấy nếu toán hạng đích và toán hạng gốc
trùng nhau thì kết quả bằng 0 do đó lệnh này còn đợc dùng để xoá về 0
một thanh ghi nào đó kèm theo các cờ CF và OF cũng bị xoá .
Các cờ bị ảnh hởng : PF , SF , ZF chỉ có nghĩa khi toán hạng là 8 bit
Cờ không xác định : AF
Ví dụ:
XOR AL,BL ; AL
AL+ BL theo tõng
XOR BH,BH ; xãa BH xãa CFvµ OF
d. LÖnh NOT - Invert each bit of an operand (from its 1’s complement)
( lÊy bï mét cđa mét to¸n hạng , đảo bit của một toán hạng)
Dạng lệnh :
NOT Đích
Trong đó cá toán hạng đích có thể tìm đợc theo các chế độ địa chỉ khác
nhau
Mô tả:
Đích Đích
Lệnh này không tác động đến các cờ
ví dụ:

NOT AH ; AH AH
NOT BYTE PTR { BX} ; LÊy bï mét cña « nhí do BX
chØ
; ra trong DS
e. LƯnh TEST – And operand to update flag ( phÐp AND hai to¸n hạng để
lập cờ )
Dạng lệnh:
TEST Đích ,gốc
Mô tả :
Đích ^ gốc
Trong đó toán hạng đích và toán hạng gốc có thể tìm đợc theo các chế
độ địa chỉ khác nhau nhng phải chứa dữ liệu cùng độ dài và không đợc
phép đồng thời là hai ô nhớ và cũng không đợc là thanh ghi đoạn . sau lệnh
này các toán hạng không bị thay đổi và kết quả không đợc lu trữ .Các ờ đợc


tạo ra sẽ đợc dùng làm điều kiện cho các lệnh nhảy có điều kiện .Lệnh này
có tác dụng che nh một mặt nạ
Cờ bị xoá : CF ,OF
Cờ bị ảnh hởng :PF ,SF ,ZF (PF chỉ liên quan đến 8 bit thấp)
Không xác định : AF
Ví dụ :
TEST AH,BL
; AH ^BL để tạo cờ
TEST AH,01H
; bit 0 của AH bằng 0
TEST BP,{BX} {DI}; và BP với ô nhớ do BX +DI chØ ra trong vïng d÷
;liƯu DS
f.LƯnh : SHIFT
 Lệnh SAL- Shift arithmetically left (dịch trái số học )

Dạng lệnh:
SAL Đích , CL
SHL Đích , CL
Mô tả :
CF
MSB
LSB

Thao tác:dịch các bit sang trong toán hạng đích sang trái một hay nhiều
vị tríbit bên trái nhất sẽ đợc dịch vào cờ nhớ . Bit bên phải sẽ đợc đa 0
vào .Nếu dịch trái một vị trí ta dùng lệnh SAL đích,1 trong đó bộ đếm
CL=1 để dịch nhiều hơn một bit số lần dịch dợc đặt trong CL . Khi bộ
đếm CL=1 và MSB của toán hạng đích bị thay đổi so với trớc khi quay thì
cờ OF đợc thiết lập 1 .Nếu chúng bằng nhau thì cờ OF bị xóa . Nếu bộ
đếm khác 1 , OF không xác định CL không thay đổi kkhi thực hiện xong
Lệnh SAL và lệnh SAH tạo ra cùng một mà máy
Cờ bị ¶nh hëng :CF , OF , PF , ZF , SF
mô tả : với toán hạng là một từ hoặc một byte nh sau

1

CF
0

15 14 13

12

11


10

9

8

7

6

5

4

0
2

3

0
CF

7

6

5

4


3

2

1

0

ví dụ : giả sữ thanh ghi AH chøa 7AH (01111010B) nÕu thùc hiÖn lÖnh
SAL AH,1 nội dung của AH nhận đợc bằng cách xóa đi một bit phần cao của
AH và thêm 1 bit 0 vào phần thấp . Kết quả là AH = 11110100B cờ CF = 0 .
Nếu muốn dịch tría đi 3 vÞ trÝ ta thùc hiƯn lƯnh nh sau ( gi¶ sư thanh ghi
AH chøa 7AH )


MOV CL,3
; CL chứa số lần dịch
SHL AH,CL
Sau khi thực hiện lệnh SHL AH,CL nội dung trong AH nhận đợc bằng cách
xóa đi ba bit phần cao của AH và thêm vào ba bit 0 của phần thấp . Lệnh
dịch nhiều bit thực chất là thực hiện nhiều lệnh dịch một bit vì thế có
thể thay hai lệnh trên bằng ba lệnh dịch một bit liên tiếp , cờ CF chứa bit
cuối cùng dịch ra khỏi toán hạng
7
0

6
1

5

1

4
1

3
1

2
0

1
1

0

0
0

CF

1

1
0

1

0


1

0

0

0

CF
kết quả là AH= 11010000B , cờ CF chứa 1
Khi dịch toán hạng sang trái một bit tơng ứng nhân số đó với 2 ví dụ : AH=
00000011B (3) dịch trái một bit ta đợc AH= 00000110B (6) nếu dịch trái
tiếp một bit nữa ta sẽ có kết quả AH= 00001100 (12). Nh vậy khi dịch trái
toán hạng n bit vị trí tơng ứng nhân toán hạng đó với 2 mũ n . hiện tợng
tràn có thể sảy ra khi chúng ta sử dụng lệnh dịch trái để thực hiện phép
nhân


Lệnh SHR Shif logical right (lệnh dịch phải logic )
Dạng lệnh :
SHR
Đích, CL
Hoặc :
SHR
đích ,1
Mô tả:
MSB

LSB


CF

Thao tác : dịch các bit trong toán hạng sang phải một hay nhiều vị trí . CF
nhận đợc bit LSB và 0 đợc dịch vào bit MSB
Nếu dịch một vị trí ta dùng lệnh SHR đích , 1 để dịch hơn nhiều lần
một lần dịch số lần dịch đặt trong CL . Khi bộ đếm bằng 1 và 2 bit trái
nhất của toán hạng đích bằng nhau thì cờ CF bị xóa . Nếu chúng khác nhau
, OF thiết lập 1 OF không xác định , CL không thay đổi
Cờ bị ảnh hởng : CF , OF , PF , SF, ZF
vÝ dô :


Gi¶ sư CL chøa 3 AH chøa 93H sau khi thực hiện lệnh SHR AH,CL nội dung
trong AH nhận đợc bằng cách xóa đI 3 bit phần thấp và thêm 3 bit 0 vào vào
phần cao của AH
mô tả:
7
6
5
4
3
2
1
0
CF
0
1
0
0
1

0
0
1

1

0
0
0
1
0
0
1
0
0
Kết quả lµ AH = 00010010 B cê CF chøa bit cuèi cùng dịch ra khỏi toán
hạng . Ngợc lại với phép dịch trái , khi dịch phải một bit sẽ tơng ứng chia số
đó cho 2 khi dịch phải toán hạng n vi trí tơng ứng chia số đó cho 2 mị n .
VÝ dơ : AH= 10100000 B ( 160 ) khi dịch phải một bit ta có AH= 01010000B
(80) nếu dịch phải tiếp ta có AH= 00101000 B( 40 )nhng điều này chỉ
đúng với số chẵn , còn đối với số lẻ thì khi dịch phải sẽ chia đôi nó và làm
tròn xuống số nguyên gần nhất
g.lệnh ROTATE ( lệnh quay trái /phải toán hạng )
lệnh quay thực hiện dịch tất cả các bit của toán hang sang trái hặc sang
phải nhiều vị trí bit dịch ra khỏi toán hạng sẽ đợc đa vào cờ nhớ đồng thời
đa trở lại
+Lệnh ROL ( Roltate left ) lệnh quay trái
Dạng lệnh :
ROL đích,1
Hoặc :

ROL đích,CL
Thao tác : lệnh ROL thực hiện dịch tất cả các bit của toán hạng đích sang
trái một hay nhiều vị trí , bit MSB dịch ra khỏi toán hạng sẽ đợc đa vào cờ
nhớ đồng thời đa trở lại bit LSB
Nếu quay trái một vị trí ta dùng lệnh ROLđích,1 nếu quay nhiều hơn một
lần thì số lần quay đợc dặt trong CL .Khi bộ đếm bằng1 MSB của toán hạng
đích bị thay đổi so với trớc khi quay tì cờ OF đợc thiết lập . Nếu bộ đếm
khác 1 , OF không xác định , CL không thay đổi
Cờ bị ảnh hởng, ngoại trừ OF , CF
Mô tả :
CF

MSB

LSB

ví dụ :hiển thị từng bit trong một toán hạng mà không làm thay đổi nội
dung của chúng giả sử hiển thị các bit của thanh ghi AX


MOV CX,16
MOV AH,2
Top:
ROL
JC
MOV
INT
JMP

BX,1

so 1
DL,0
21H
thoat

;đếm số bit cần hiển thị
; hàm hiển thị
; CF chứa bit MSB dịch đến
; CF=1 xuống hiĨn thÞ ‘1’
; CF=0
; hiĨn thÞ 0

So 1 :
MOV DL,’1’
INT 21H
; hiển thị 1
Thoat :
Loop top
; lặp lại 16 lần
Muốn hiển thị từng bit trong một toán hạng thì ta phải lần lợt đa đợc các
bit của toán hạng đó ra cờ nhớ . Sử dụng lệnh nhảy JC hoặc JNC nếu có nhớ
( JC=1 ) thì bit dịch ra là 1 , khi đó hiển thị 1 ngợc lại hiển thị 0 . Thực
hiện lặp 16 lần ta in ra đợc 16 bit của toán hạng lệnh ROL sau khi thực hiện
xong vòng lặp giá trị của toán hạng vẫn giữ nguyên
Ngắn gọn hơn ta dùng lệnh ADC nh sau :
MOV CX,16
; lặp 16lần
MOV AH,2
;hàm hiển thị
MOV DL, 30H

Top:
ROL BX,1
ADC DL,0
; DL=30H +0+CF
INT 21H
; hiển thị 1 hoặc 0
Loop top
; lặp lại nếu CX=0
+ Lệnh ROR ( Roltate right ) lệnh quay phải
Dạng lệnh :
ROR
đích ,1
Hoặc :
ROR
đích , CL
Thao tác : ngợc lại với lệnh ROL lệnh ROR thực hiện dịch tất cả các bit của
toán hạng đích sang phải một hay nhiều vị trí , bit LSB dịch ra khỏi toán
hạng sẽ đợc đa vào cờ nhớ đồng thời đa trở lại vị trí bit MSB
Cờ bị ảnh hởng ngoại trừ OF, CF
Mô tả lệnh ROR nh sau:
MSB

LSB

CF

+ LƯnhRCL (Rotate through cary left) - lƯnh quay tr¸i thông qua cờ nhớ
Dạng lệnh :
RCL đích , 1



Hoặc:
RCL đích ,CL
Thao tác : quay các bit của toán hạng đích sang trái qua cờ CF một hoặc
nhiều lần
Mô t¶ :
MSB
LSB

CF

+LƯnh RCR (Rotate through carry right) – quay ph¶i toán hạng thông qua cờ
nhớ
Dạng lệnh :
RCR đích , 1
Hoặc
:
RCR đích,CL
Thao tác : quay các bit của toán hạng sang phải thông qua cờ CF một hay
nhiều lần .Bit LSB của toán hạng đích đợc đặt vào cờ CF và nội dung cũ
của CF đợc chuyển vào bit MSB lệnh quay nhiỊu bit thùc chÊt lµ thùc hiƯn
nhiỊu lƯnh quay một bit , số lần dịch chứa trong CL
Cờ bị ¶nh hëng : CF, OF
M« t¶ :
MSB
LSB

CF



vÝ dơ :
RCR BX ,1
MOV CL,8
RCR AL,CL

; quay ph¶i thanh ghi BX thông qua CF
; số lần quay để trong CL
; quay phải thanh ghi AL 8 lần thông qua
; CF . LSB chứa giá trị CF ban đầu

4. Các lệnh vào ra chuyên dụng
a. lệnh INPUT ( đọc dữ liệu từ một cổng xác định đến đích)
Dạng lệnh :
IN Acc, Port
Trong đó { port} là dữ liệu của cổng có địa chỉ là port . Port là địa chỉ
8 bit của cổng nó có thể có các giá trị trong kho¶ng 00H … FFH . Nh vËy ta
cã thĨ co các khả năng sau :
+ Nếu Acc là AL thì dữ liệu đợc đa vào từ cổng Port
+ Nếu Acc là AX thì dữ liệu 16 bit đợc da vào từ cổng Port và cổng
Port +1
Có một cách khác để biểu diễn địa chỉ cổng thông qua thanh ghi DX .Khi
dùng thnah ghi DX để chứa dữ liệu cổng ta sẽ có khả năng địa chỉ hóa
cổng mềm dẻo hơn .Lúc này địa chỉ cổng nằm trong dải 0000H FFFFH
và ta phải viết lệnh theo dạng :
IN Acc , DX
Trong đó DX phải đợc gán từ trớc giá trị ứng với địa chỉ cổng
lệnh này không tác động đến các cờ
b. Lệnh OUTPUT( cop dữ liệu từ nguồn dến một cổng xác định )
Dạng lệnh :
OUT Port , Acc

Trong đó {Port } là dữ liệu của cổng có địa chỉ là port .Port là địa chỉ
8 bit của cổng , nó có thể có các giá trị nằm trong khoảng 00H ... FFH.Nh
vậy ta có thể có các khả năng sau :
+ Nếu Acc là AL thì dữ liệu 8 bit đợc đa ra cổng port
+ Nếu Acc là AX thì dữ liệu 16 bit đợc đa ra cổng port và cổng
port+1
Một cách khác để biểu diễn địa chỉ cæng thong qua thanh ghi DX . Khi
dïng thanh ghi DX để chứa dữ liệu cổng ta sẽ có khả năng địa chỉ hóa
cổng mềm dẻo hơn .Lúc này địa chỉ cổng nằm trong dải 0000H ... FFFFH
và ta phải viết lệnh theo dạng :
OUT DX,Acc
Trong đó DX phải đợc gán từ các giá trị trớc ứng với địa chỉ cổng
lệnh này không tác động đến các cờ
5.Các lệnh chuyển điều khiển
a.Lệnh JMP( BRANCH) lệnh nhảy không điều kiện
Nạp vao PC một địa chỉ xác định


Dạng lệnh :
JMP nhÃn,đích
Thao tác :nếu gặp lệnh JMP thì chơng trình chuyển ngay đến lệnh nhÃn
đích để thi hành lệnh mà không cần điều kiện gì
Cờ không bị ảnh hởng
ví dụ :
MOV AH,2
; hàm hiển thị ký tự
MOV DL,30H ; DL chøa m· ASCII cưa kÝ tù hiĨn thÞ
H1: INC 21H ;giảm mà ASCII
CMP DL,39H ; so sánh vơI ký tự 9
JLE H2

; nhảy đến H2 nếu (<=9)
JMP thoát ; nếu lớn hơn 9 thì thoát
H2: JMP H1
; nhảy không điều kiện về h1
Thoát:
b. Lệnh JNZ ( jump if not zero) lệnh nhảy có điều kiện
Điều kiện của JNZ ( nhảy nếu khác 0) là kết quả của lệnh trớc đó khác 0
Dạng lệnh:
JPZ NhÃn ,đích
Thao tác : nếu kết quả của lệnh trơc đó khác 0 thì lệnh có tên là nhÃn
đích đợc thi hành còn ngợc lại thì thực hiện lệnh ngay sau lệnh nhảy
c. Lệnh CALL lệnh gọi chơng trình con
- Cất nội dung của PC ( địa chỉ trở về ) vào một vị trí xác định ( thờng ở
stack)
- Nạp vào PC địa chỉ của lệnh đầu tiên của lệnh tiếp theo
Dạng lệnh :
CALL , name
Thao tác : địa chỉ offset của lệnh ngay sau lệnh CALL là địa chỉ trở về
của chơng trình đợc cất vào ngăn xếp .Điều khiển đợc chuyển cho thủ tục
IP chứa địa chỉ offset của lệnh
Cờ không bị ảnh hởng
d.Lệnh RETURN Reurn from procedue ( Lệnh trở về từ chơng trình con)
Khôi phục dữ liệu địa chỉ trở về trả lại cho PC để trở về từ chơng trình
chính
Dạng lệnh :
RET
Thao tác: nếu lệnh RET là một thủ tục NAER nó đợc dịch thành một lệnh
trở về trong cùng đoạn lệnh này cập nhật thanh IP bằng cách lấy một từ ra
khỏi ngăn xếp
Cờ không bị ảnh hởng

ví dụ:
.model small
.stack
100H
.data
x_dong DB 13,10
.code
main proc
mov AX ,@ data
; khëi t¹o tõ thanh ghi DS


mov DS,ax
call nhap
push BX
mov AH,9
lea
DX,x_dong
int
21H
call nhap
pop AX
add BX,AX
mov AH,9
lea DX,x_dong
int 21H
mov CX,16

; nhËp sè thø nhÊt vµo BX
; cÊt sè thứ nhất vào vào ngăn xếp

; xuống dòng về đầu dòng
; nhập số thứ hai vào BX
;lấy số thứ nhất đặt vào AX
; cộng hai số lu kết quả ở BX
; xuống dòng về đầu dòng
; hiển thị kết quả dới dạng nhị

phân
mov AH,2
movDL,30H
lap 2:
rol BX,1
adc AL,0
int 21H
loop lap 2
mov AH,4CH
int 21H
main endp
nhap proc near

; chơng trình con nhập vào một số

nhị phân
mov BX,0000H
mov CX,10H
lap :
mov AH,1
int 21H
cmp AL,0DH
jne thoat

and AL,0FH
sh1 BX,1
or BL,AL
loop lap1
thoat :
ret
nhap endp
end main
6.Các lệnh điều khiển hệ thống
a. lệnh HALT dừng thực hiện chơng trình ,đa bộ vi xử lý vào trạng thái
dừng để chờ ngắt ngoài
Dạng lệnh:
HLT
Cờ không bị ảnh hởng


b. lệnh WAIT
Tạm dừng thực hiện chơng trình , lặp kiểm tra điều kiện cho đến khi
thỏa mÃn thì tiếp tục thực hiên lệnh
Dạng lệnh :
WAIT
Thao tác : bộ vi xử lý ở trạng thái chờ cho đến khi đợc kích hoạt bằng một
lệnh ngắt ngoài
Cờ không bị ảnh hởng
c. lệnh NO OPERATION không thực hiện gì cả
Dạng lệnh :
NOP
Thao tác : không thực hiện một thao tác nào
Cờ không bị ảnh hởng
d. lệnh LOCK lệnh khóa BUS cấm không cho chuyển nhợng BUS

Thao tác : lock có thể dùng nh một tiền tố đặt trớc bất cứ một lệnh nào
.BUS sẽ bị khóa trong thời gian thực hiện lệnh để ngăn các bộ vi xử lý khác
truy cập bộ nhớ
Cờ không bị ảnh hởng .

IV.CáC PHƯƠNG PHáP ĐịNH DịA CHỉ( ADDRESSING MODES )

Chế độ địa chỉ (addressing modes) là cách để vi xử lý tìm thấy toán
hạng của lệnh khi hoạt động .Mỗi bộ vi xử lý có thể có nhiều địa chỉ , các
chế độ địa chỉ đó đợc xác định ngay từ khi chế tạo bộ vi xử lý.
Khái niệm về định địa chỉ(addressing) :
-Toán hạng của lệnh có thể là :
+ Một giá trị cơ thĨ n»m ngay trong lƯnh
+ Néi dung cđa thanh ghi
+ Nội dung của ngăn nhớ hoặc cổng vào ra
-phơng pháp định địa chỉ là cách thức địa chỉ hóa trong trờng địa chỉ
của lệnh để xác định toán hạng
Khái niệm về định địa chỉ :
- Toán hạng của lệnh có thể là :
+một giá trị cụ thể nằm ngay trong lệnh
+Nội dung của thanh ghi
+Nội dung của ngăn nhớ hoặc cổng vào ra
-Phơng pháp định địa chỉ là cách thức địa chỉ hóa trong trờng địa chỉ
của lệnh để xác định toán hạng
Có 7 phơng pháp định địa chỉ
1. Chế độ địa chỉ thanh ghi (register addressing modes)
Là chế độ địa chỉ mà các toán hạng của lệnh là các thanh ghi chứa dữ
liệu cần thao tác , vì thế khhi thực hiện các lệnh ở chế độ địa chỉ này có
thể đạt tốc độ truy cập nhanh hơn so với các lệnh truy cập ới bộ nhớ
Sơ đồ định địa chỉ thanh ghi:


mà thao tác

Tên thanh ghi


Toán hạng

ví dụ:
MOV
MOV
MOV
MOV
ADD AL,BH

AX,BX
DL,AL
SI,DX
SP,BP

;chuyển nội dung của AX vào BX
; chun néi dung cđa AL vµo DL
; chun néi dung cđa DX vµo SI
; chun néi dung cđa BP vµo SP
; céng néi dung cđa BH víi AL kÕt qu¶ chứa trong

AL
Trong các chế độ địa chỉ toán hạng đích và nguồn phải cùng độ lớn
2. Chế độ địa chỉ tức thời ( immediate addressing mode )
Trong chế đọ này toán hạng đích là một thanh ghi hay ô nhớ toán hạng

nguồn là hằng số.Chế độ địa chỉ này cho phép nạp dữ liệu cần thao tác
vào bát kỳ thanh ghi nào ( trừ thanh ghi đoạn ) hoặc ô nhớ nào nằm trong
đoạn dữ liệu DS
Sơ đồ chế độ định địa chỉ tức thì :
mà thao tác
ví dụ :
MOV
MOV
MOV
MOV
MOV

toán hạng

AH,12
; chuyển 12H vào thanh ghi AH
DL ,0AH ; chuyển 0AH vµo thanh ghi DL
AH,01000010B ; chun 01000010 (66) vµo thanh ghi AH
CL , ‘A’ ; chun ‘A’ (65) vµo thanh ghi CL
{BX} , 100 ; chuyển 100 vào ô nhớ có địa chỉ DS:BX


Hằng số có thể biểu diễn dới dạng nhị phân thập phân hexa hoặc dới
dạng kí tự
3. Chế độ địa chỉ trực tiếp (drect addressing mode)
Chế độ địa chỉ trực tiếp là chế độ địa chỉ mà một toán hạng của lệnh
là thanh ghi toán hạng còn lại chứa địa chỉ lệch của ô nhớ chứa dữ liệu
Sơ đồ định dịa chỉ trực tiếp
MÃ thao tác


địa chỉ
Bộ nhớ

Toán hạng

ví dụ:
MOV
MOV
MOV
MOV

AL,[ 012H] ; chuyển nội dung ô nhớ DS:[ 012H] vào AL
AL,ES:[22H] ; chuyển nội dung ô nhớ ES:[012H] vào AL
[16H],AX ; chuyển nội dung của hai ô nhớ liên tiếp có địa
chỉ ;DS:[16H] và DS:[ 17H]
BX , [ 5678]; chuyển nội dung của hai ô nhớ có địa chỉ DS:
[ 5678H] , ;và DS:[ 5679 ] vào BX

Sơ đồ mô tả lệnh MOV AL,[ 012H ]
đoạn dữ liệu DS
dữ liệu

địa chØ lÖch
0
1

-56

+12H
……..

12H

-56

AL


×