Ch­¬ng IV. LÖnh vµ chÕ ®é ®Þa chØ I. CÊu tróc m· lÖnh



tải về 124.96 Kb.
Chuyển đổi dữ liệu17.08.2016
Kích124.96 Kb.
#20912
Ch­¬ng IV . LÖnh vµ chÕ ®é ®Þa chØ
I. CÊu tróc m· lÖnh
Quy trình thực hiện một lệnh trong bộ vi xử lý được chia làm ba giai đoạn: Lấy lệnh (feeching), giải mã lệnh (decording) và xử lý lệnh (excution). Những bộ VXL cổ điển 8 bit tiến hành ba giai đoạn trên một cách tuần tự. Từ các bộ VXL 16 bit trở đi, bộ VXL dùng pipeline (xen kẽ dòng lệnh) để tiết kiệm thời gian xử lý. Mã lệnh dành cho VXL được viết dưới dạng mã nhị phân. Để con người có thể lập trình và hiểu được VXL, người ta dùng hợp ngữ (assembly language) để miêu tả các lệnh máy bằng tổ hợp các ký tự gợi nhớ (mnemonic).
Một lệnh mô tả bằng mã nhị phân có thể dài từ 1 đến 6 byte. Cấu trúc chung của một mã lệnh bao gồm:

- Prefix đi trước mã lệnh.

- 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.

- Toán hạng (operand) cho biết cái gì được xử lý (nội dung của thanh ghi hay bộ nhớ).

- Địa chỉ trực tiếp (2 byte).
Nội dung của mã lệnh được quy định khá chặt chẽ. hình 4-1 dưới đây cho thấy cấu trúc nhị phân của một lệnh dịch chuyển MOV đích, nguồn dùng để chuyền dữ liệu giữa 2 thanh ghi hoặc giữa ô nhớ và thanh ghi.


1

0

0

0

1

0































§Þa chØ

phÇn thÊp



§Þa chØ

phÇn cao


M· lÖnh

D

W

MOD

REG

M/R

Byte 1 Byte 2 Byte 3 Byte 4
H×nh 4-1: CÊu tróc m· lÖnh
- Bit D (direction) chØ h­íng cho thanh ghi REG. D=1 chØ d÷ liÖu ®i ®Õn REG; D=0 th× chØ d÷ liÖu ®i tõ REG.

- Bit W (Word) chØ xem thanh ghi ®­îc dïng lµ 8 bit hay 16 bit (1 word). W=1 cã nghÜa lµ thanh ghi 16 bit ®­îc dïng. B¶ng 4-1 cho thÊy c¸ch m· ho¸ c¸c thanh ghi trong bé VXL:

- Hai bit MOD (mode, chÕ ®é) vµ ba bit R/M (register/memory, thanh ghi/bé nhí) t¹o ra 5 bit, dïng ®Ó chØ chÕ ®é ®Þa chØ cña lÖnh. Nh÷ng chÕ ®é nµy ®­îc quy ®Þnh trong b¶ng 4-1. B¶ng 4-2 cho thÊy c¸ch m· ho¸ c¸c chÕ ®é ®Þa chØ (c¸ch t×m ra c¸c to¸n h¹ng) b»ng c¸c bit nµy.
B¶ng 4-1: C¸ch m· ho¸ c¸c thanh ghi trong bé VXL.


Thanh ghi

W=1


Thanh ghi

W=0


M· REG




Thanh ghi ®o¹n



AX

BX

CX



DX

SP

DI



BP

SI


AL

BL

CL



DL

AH

BH



CH

DH


000

011


001

010


100

111


101

110





ES

CS

SS



DS

00

01

10



11



B¶ng 4-2: Phèi hîp MOD vµ R/M ®Ó t¹o ra c¸c chÕ ®é ®Þa chØ.

MOD

R/M


00

01

10

11













W=0 W=1

000

[BX] + [SI]

[BX] + [SI] + d8

[BX] + [SI] + d16

AL AX

001

[BX] + [DI]

[BX] + [DI] + d8

[BX] + [DI] + d16

CL CX

010

[BP] + [SI]

[BP] + [SI] + d8

[BP] + [SI] + d16

DL DX

011

[BP] + [DI]

[BP] + [DI] + d8

[BP] + [DI] + d16

BL BX

100

[SI]

[SI] + d8

[SI] + d16

AH SP

101

[DI]

[DI] + d8

[DI] + d16

CH BP

110


d16

(§Þa chØ trùc tiÕp)



[BP] + d8

[BP] + d16

DH SI

111

[BX]

[BX] + d8

[BX] + d16

BH DI

ChÕ ®é bé nhí ChÕ ®é thanh ghi
Ghi chó: - d8: disp. 8 bit, d16: disp. 16 bit.

- C¸c gÝa trÞ cho trong c¸c cét 2, 3, 4 lµ c¸c ®Þa chØ hiÖu dông (EA) sÏ ®­îc céng víi DS ®Ó t¹o ra ®Þa chØ vËt lý (riªng BP ph¶i ®­îc céng víi SP).


VÝ dô 1: M· ho¸ c¸c lÖnh: a. MOV CL,[BX]; b. MOV 0F3H[SI],CL.

a. MOV CL, [BX]




1

0

0

0

1

0

1

0

0

0

0

0

1

1

1

1

C¸c bit m· ho¸ CL; « nhí cã ®Þa chØ DS:BX;

ChuyÓn 1 bite; Opcode. ChuyÓn tíi thanh ghi

b. MOV 0F3H[SI], CL




1

0

0

0

1

0

0

0

0

1

0

0

1

1

0

0

1

1

1

1

0

0

1

1

C¸c bit m· ho¸ CL; « nhí cã ®Þa chØ DS:SI; chuyÓn 1 bite;

Opcode. ChuyÓn tõ thanh ghi; d8 = F3H.

II. TËp lÖnh cña bé vi xö lý.

Mçi bé vi xö lý cã mét tËp lÖnh x¸c ®Þnh, c¸c bé vi xö lý thÕ hÖ sau th­êng cã tËp lÖnh ®­îc bæ sung, më réng h¬n so víi c¸c bé vi xö lý thÕ hÖ tr­íc nã, ®iÒu ®ã cã nghÜa c¸c bé vi xö lý thÕ hÖ sau cã thÓ ch¹y ®­îc c¸c ch­¬ng tr×nh viÕt cho c¸c bé vi xö lý tr­íc. Nh­ng ng­îc l¹i th× kh«ng hoµn toµn ®óng.

Nh­ ®· nãi trªn ®©y, chóng ta lÊy bé vi xö lý Intel 8088 lµm c¬ së ®Ó nghiªn cøu nh÷ng vÊn ®Ò kü thuËt cña c¸c bé vi xö lý kh¸c. V× vËy ë ®©y chóng ta còng sÏ nghiªn cøu tËp lÖnh cña chÝnh bé vi xö lý nµy.

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×. Mçi lÖnh c¬ së cã thÓ cã nhiÒu biÕn c¸ch. VÝ dô cã tíi 28 biÕn c¸ch kh¸c nhau cho lÖnh dÞch chuyÓn c¬ së (MOV) ... . Tuy nhiªn trong ch­¬ng tr×nh m«n häc nµy, chóng ta chØ xem xÐt mét sè lÖnh cÇn thiÕt theo môc tiªu cña m«n häc. C¸c lÖnh mµ chóng ta sÏ nghiªn cøu ®­îc chia lµm 6 nhãm:

1. Nhãm lÖnh truyÒn d÷ liÖu.

2. Nhãm lÖnh sè häc.

3. Nhãm lÖnh logic.

4. Nhãm lÖnh so s¸nh.

5. Nhãm lÖnh ®iÒu khiÓn ch­¬ng tr×nh.

6. C¸c lÖnh ®Æc biÖt.


II.1 . Nhãm lÖnh truyÒn d÷ liÖu (kh«ng ¶nh h­ëng ®Õn c¸c cê).

MOV lÖnh di chuyÓn d÷ lÖu c¬ b¶n . LÖnh nµy cãthÓ sö dông ®Ó di chuyÓn byte (8 bit) hoÆc lêi (16 bit) cña d÷ liÖu. CÊu tróc lÖnh :

MOV ®Ých, nguån.

Trong ®ã to¸n h¹ng ®Ých vµ gèc cã thÓ t×m theo c¸c ®Þa chØ kh¸c nhau, nh­ng ph¶i cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhí hoÆc 2 thanh ghi ®o¹n.



C¸c vÝ dô cho trong b¶ng 4-3:
B¶ng 4-3 c¸c vÝ dô vÒ lÖnh MOV.


§Ých

Nguån

VÝ dô

Gi¶i thÝch

1 Bé nhí
2 Thanh ghi
3 Thanh ghi
4 Thanh ghi


Thanh ghi
Bé nhí
Thanh ghi
Tøc thêi

MOV 100H, AX
MOV AX, MEM1
MOV AX, BX
MOV AX, 0FFFFH

- chuyÓn n«i dung trong AX vµo vÞ trÝ nhí 100H.

- ChuyÓn néi dung trong vÞ trÝ nhí do nh·n MEM1 chØ ra vµo thanh ghi AX.

- ChuyÓn néi dung trong BX vµo thanh ghi AX.

- 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.





XCHG -exchange two operands (ho¸n ®æi néi dung 2 to¸n h¹ng).
ViÕt lÖnh: XCHG §Ých, Nguån
Trong ®ã to¸n h¹ng ®Ých vµ nguån cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng ph¶i cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhívµ còng kh«ng ®­îc lµ thanh ghi ®o¹n.
VÝ dô:

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.

IN- Input data from a port (§äc d÷ liÖu tõ cæng vµo thanh Acc)

ViÕt lÖnh: IN Acc, Port

Port lµ ®Þa chØ 8 bit cña cæng, nã cã thÓ cã gi¸ trÞ trong kho¶ng 00H..FFH.

NÕu Acc lµ AL th× d÷ liÖu 8 bit ®­îc ®­a vµo tõ cæng Port.

NÕu Acc lµ AX th× d÷ liÖu 16 bit ®­îc ®­a vµo tõ cæng Port vµ Port+1.
Cã thÓ biÓu diÔn ®Þa chØ cæng th«ng qua thanh ghi DX vµ nh­ vËy ®Þa chØ cæng ®­îc ®Þa chØ ho¸ linh ho¹t h¬n. Lóc nµy ®Þa chØ cæng n»m trong d¶i 0000H..FFFFH vµ lÖnh ®­îc viÕt nh­ sau:

IN Acc, DX

Trong ®ã DX ph¶i ®­îc g¸n tõ tr­íc gi¸ trÞ øng víi cæng.
OUT- Output a byte or word to a port ( §­a d÷ liÖu ra cæng tõ Acc).

ViÕt lÖnh: OUT Port, Acc


NÕu Acc lµ AL th× d÷ liÖu 8 bit ®­îc ®­a ra cæng Por

NÕu Acc lµ AH th× d÷ liÖu 16 bit ®­îc ®­a ra cæng Port vµ cæng Port+1.

T­¬ng tù víi lÖnh IN, ë ®©y còng cã thÓ dïng thanh ghi DX ®Ó chøa ®Þa chØ cæng. Khi ®ã lÖnh ®­îc viÕt nh­ sau:
OUT DX, Acc.

Thanh ghi DX ph¶i ®­îc n¹p ®Þa chØ cæng tõ tr­íc.


LEA (load effective address). 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Öch hoÆc ®Þa chØ cña « nhí chän lµm gèc råi n¹p vµo thanh ghi ®· chän.
ViÕt lÖnh: LEA §Ých, nguån.

trong ®ã :

- §Ých th­êng lµ mét trong c¸c thanh ghi BX, CX, DX, BP, SI, DI.

- Nguån lµ tªn biÕn trong ®o¹n DS ®­îc chØ râ trong lÖnh hoÆc « nhí cô thÓ.



VÝ dô:


LEA DX, MSG ; N¹p ®Þa chØ lÖch 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.
PUSH/POP Thanh ghi ng¨n xÕp lµ n¬i rÊt thuËn tiÖn ®Ó cÊt gi÷ t¹m d÷ liÖu vµ c¸c to¸n h¹ng cÇn nhí cña ch­¬ng tr×nh. VÝ dô, mét ch­¬ng tr×nh cã thÓ muèn cÊt l¹i c¸c néi dung trong thanh ghi AX ®Ó dïng trong mét sè thao t¸c sau nµy. §Ó thùc hiÖn nhiÖm vô ®ã cã thÓ dïng c¸c lÖnh PUSH POP.
- PUSH CÊt d÷ liÖu vµo ng¨n xÕp.

ViÕt lÖnh: PUSH nguån

M« t¶: SP  SP - 2

Nguån  {SP}.

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­ mét cÆp ®èi ngÉu ®Ó xö lý c¸c d÷ liÖu vµ tr¹ng th¸i cña chu­¬ng tr×nh chÝnh khi vµo/ra ch­¬ng tr×nh con.

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 2 byte cña vïng d÷ liÖu DS

; cã ®Þa chØ ®Çu t¹i (Table+BX).



- POP LÊy d÷ liÖu tõ ng¨n xÕp.

ViÕt lÖnh: POP §Ých

M« t¶: §Ých  {SP}.

SP  SP + 2

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 (nh­ng kh«ng ®­îc lµ thanh ghi ®o¹ m· CS) hoÆc « nhí. D÷ liÖu ®Ó t¹i ng¨n xÕp kh«ng thay ®æi. Gi¸ trÞ cña SS kh«ng thay ®æi. VÝ dô:

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).



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 b»ng c¸c lÖnh PUSPFPOPF.

- PUSHF CÊt néi dung thanh ghi cê vµo ng¨n xÕp.

ViÕt lÖnh: PUSHF

M« t¶: SP  SP - 2

RF  {SP}.

D÷ liÖu ®Ó t¹i thanh ghi cê kh«ng thay ®æi. SS kh«ng thay ®æi.
- POPF LÊy 1 tõ, tõ ®Ønh ng¨n xÕp ®­a vµo thanh ghi 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.

II.2. Nhãm lÖnh sè häc (lµ nhãm lÖnh cã ¶nh h­ëng ®Õn cê).

C¸c lÖnh sè häc bao gåm bèn phÐp tÝnh sè häc c¬ b¶n lµ céng, trõ , nh©n, chia vµ ®¶o dÊu to¸n h¹ng.


ADD/SUB D¹ng tæng qu¸t cña c¸c lÖnh céng (add) vµ trõ (subtract) lµ:

ADD ®Ých, nguån

SUB ®Ých, nguån

M« t¶: ADD: §Ých  §Ých + Nguån

SUB : §Ých  §Ých -Nguån

trong ®ã c¸c to¸n h¹ng ®Ých, nguån cã thÓ t×m ®­îc theo c¸c ®Þa chØ kh¸c nhau, nh­ng ph¶i chøa d÷ liÖu cã 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.

B¶ng 4-4 tãm t¾t c¸c lo¹i kh¸c nhau cña c¸c to¸n h¹ng ®Ých vµ nguån dïng trong c¸c lÖnh céng vµ trõ:
B¶ng 4-4. c¸c d¹ng to¸n h¹ng trong lÖnh ADD/SUB:


§Ých (n¬i ®Õn)

Nguån (gèc)

Thanh ghi

Thanh ghi

Bé nhí

Bé nhí


Thanh ghi

Thanh ghi

Bé nhí


Thanh ghi

Tøc thêi (h»ng sè)

Tøc thêi(h»ng sè)


VÝ dô 1:


ADD AX, BX ; AX  AX+BX

ADD AL, 74H ; AX  AX+ 74H

SUB CL, AL ; CL  CL - AL

SUB AX, 0405H ; AX  AX - 0405H.

VÝ dô 2: ViÕt ®o¹n ch­¬ng tr×nh ng«n ng÷ assembly ®Ó céng 5H víi 3H, dïng c¸c thanh ghi AL, BL.

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.
MUL/DIV D¹ng tæng qu¸t cña lÖnh nh©n (multiply, MUL) vµ chia (divide, DIV) lµ:

MUL sè nh©n nguån

DIV sè chia nguån

trong ®ã sè nh©n nguån (to¸n h¹ng gèc) cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau. Khi dïng lÖnh nh©n, sè ®­îc nh©n ph¶i ®­îc chuyÓn vµo thanh ghi AX hoÆc AL. Cßn sè nh©n th× cã thÓ chuyÓn vµo thanh ghi kh¸c bÊt kú hoÆc mét ®Þa chØ nhí.


VÝ dô 2:

MUL BX ; sè nh©n n»m trong thanh ghi BX

MUL MEM1 ; sè nh©n n»m trong ®Þa chØ nhí mang nh·n MEM1
Khi hai byte nh©n víi nhau th× kÕt qu¶ ®­îc göi l­u vµo thanh ghi AX.
VÝ dô 3. ViÕt ®o¹n ch­¬ng tr×nh nh©n 5H víi 3H, dïng thanh ghi CL.

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.


Khi nh©n hai lêi (16 bit) víi nhau th× sè ®­îc nh©n ph¶i chuyÓn vµo thanh ghi AX, cßn sè nh©n cã thÓ ë trong mét thanh ghi kh¸c bÊt kú hoÆc trong vÞ trÝ nhí 16 bite. kÕt qu¶ sÏ lµ con sè 32 bit (hoÆc hai lêi) vµ ®­îc chøa trong c¸c thanh ghi DX vµ AX. Lêi cã träng sè lín sÏ ë trong thanh ghi DX vµ lêi cã träng sè nhá sÏ ë trong thanh ghi AX.
VÝ dô 4. ViÕt ®o¹n ch­¬ng tr×nh ®Ó nh©n 3A62H víi 2B14H.

MOV AX, 3A62H ; AX  3A62H

MOV CX, 2B14H ; CX  2B14H

MUL CX ; DXAX  tÝch = 289C63A8H

C¸c lÖnh chia, vÒ c¬ b¶n, còng gièng nh­ c¸c lÖnh nh©n. Trong phÐp chia cì byte, sè chia lµ mét byte cã thÓ ë trong mét thanh ghi hoÆc mét vÞ trÝ nhí. Sè bÞ chia ph¶i lµ mét sè kh«ng dÊu 16 bit chøa trong thanh ghi AX. KÕt qu¶ th­¬ng sè sÏ ë trong thanh ghi AL, cßn sè d­ th× ë trong thanh ghi AH. §èi víi phÐp chia cì lêi th× sè chia 16 bit cã thÓ ®Æt trong thanh ghi hoÆc mét vÞ trÝ nhí. Cßn sè bÞ chia ph¶i lµ mét sè kh«ng dÊu 32 bit ®­îc ®Æt trong c¸c thanh ghi DX vµ AX. Thanh ghi DX sÏ gi÷ lêi cã träng sè cao, thanh ghi AX sÏ gi÷ lêi cã träng sè thÊp. KÕt qu¶ th­¬ng ®Æt trong thanh ghi AX, cßn sè d­ ®Æt trong thanh ghi DX.

VÝ dô 5: ViÕt ®o¹n ch­¬ng tr×nh ®Ó chia 6H cho 3H, dïng thanh ghi CL. MOV AX, 0006H ; AX  6H

MOV CL, 03H ; CL  3H

DIV CL ; AHAL  00H (sè d­), 02H (th­¬ng sè)

Chó ý: 6H ®­îc ®­a vµo thµnh 0006H ®Ó lÊp ®Çy toµn bé thanh ghi AX. Nh­ vËy c¸c byte träng sè cao cña AX sÏ bÞ xo¸ ®Ó tr¸nh bÞ lçi.

VÝ dô 6: ViÕt ®o¹n ch­¬ng tr×nh ®Ó chia 1A034H cho 1002H, dïng thanh ghi BX

MOV AX, 0A034H ; AX  0A034H

MOV DX, 0001H ; DX  0001H

MOV BX, 1002H ; BX  1002H

DIV BX ; DXAX  00H (sè d­)1AH (th­¬ng sè)


INC/DEC §©y lµ lÖnh t¨ng (increment) vµ gi¶m (decrement). LÖnh t¨ng sÏ céng thªm mét ®¬n vÞ vµo to¸n h¹ng, cßn lÖnh gi¶m sÏ trõ mét ®¬n vÞ vµo to¸n h¹ng. C¸c lÖnh nµy rÊt cÇn ®èi víi thao t¸c ®Õm. D¹ng tæng qu¸t cña c¸c lÖnh INC vµ DEC lµ:

INC ®Ých M« t¶: §Ých  §Ých +1

DEC ®Ých M« t¶: §Ých  §Ých -1

To¸n h¹ng ®Ých cã thÓ lµ mét thanh ghi hoÆc mét vÞ trÝ nhí bÊt kú, cã thÓ lµ 1 lêi 16 bit hoÆc 1 byte; cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau.

Chó ý:

- Trong lÖnh t¨ng, nÕu §Ých = FFH (hoÆc FFFFH) th× §Ých + 1 = 00H (hoÆc 0000H) mµ kh«ng ¶nh h­ëng ®Õn cê nhí. LÖnh nµy cho kÕt qu¶ t­¬ng ®­¬ng nh­ lÖnh ADD §Ých, 1 nh­ng ch¹y nhanh h¬n.

- Trong lÖnh gi¶m, nÕu ®Ých lµ 00H (hoÆc 0000H) th× §Ých -1 = FFH (hoÆc FFFFH) mµ kh«ng ¶nh h­ëng ®Õn cê nhí CF. LÖnh nµy cho kÕt qu¶ t­¬ng ®­¬ng víi lÖnh SUB §Ých, 1 nh­ng ch¹y nhanh h¬n.
NEG- Negative a Operand (lÊy bï 2 cña mét to¸n h¹ng hay ®¶o dÊu to¸n h¹ng).

ViÕt lÖnh: NEG §Ých


VÝ dô:

NEG AH ; AH  0 - (AH)

NEG BYTE PTR[BX] ; lÊy bï 2 cña « nhí do BX chØ ra trong DS.

II.3. Nhãm lÖnh logic (cã ¶nh h­ëng ®Õn cê).
C¸c lÖnh logic nh»m thùc hiÖn c¸c phÐp tÝnh Boolean NOT, AND vµ OR. LÖnh NOT th× ®¶o tÊt c¶ c¸c bit trong to¸n h¹ng (byte boÆc lêi). C¸c lÖnh AND/OR thùc hiÖn c¸c phÐp tÝnh AND/OR ®èi víi mét ®«i bit trong to¸n h¹ng nguån vµ to¸n h¹ng ®Ých. C¸c lÖnh nµy cã thÓ dïng víi c¸c to¸n h¹ng cì lêi hoÆc cì byte.

NOT LÊy bï cña mét to¸n h¹ng, ®¶o bit cña mét to¸n h¹ng.

ViÕt lÖnh: NOT §Ých. M« t¶: §Ých (§Ých)

trong ®ã to¸n h¹ng ®Ých cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau.



LÖnh nµy kh«ng t¸c ®éng ®Õn cê.
VÝ dô 1: X¸c ®Þnh kÕt qu¶ cña ®o¹n ch­¬ng tr×nh sau:

MOV BL, 00110011B

NOT BL

MOV MEM1, BL



Néi dung cña thanh ghi BL ®­îc n¹p vµo lµ 00110011B. Sau khi thùc hiÖn phÐp NOT th× néi dung cña thanh ghi BL lµ 11001100B vµ gi¸ trÞ nµy ®­îc ®­a vaß vÞ trÝ nhí ®­îc chØ ra bëi nh·n MEM1.

AND/OR: Vµ/HoÆc hai to¸n h¹ng. d¹ng tæng qu¸t cña lÖnh AND/OR lµ:

AND §Ých, Nguån

OR §Ých, Nguån

trong ®ã to¸n h¹ng ®Ých vµ nguån cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng 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.

AND/OR sÏ thùc hiÖn phÐp tÝnh Boolean ®èi víi c¸c to¸n h¹ng nguån vµ ®Ých. PhÐp AND th­êng dïng ®Ó che ®i/gi÷ l¹i mét vµi bit nµo ®ã cña mét to¸n h¹ng b»ng c¸ch nh©n logic to¸n h¹ng ®ã víi to¸n h¹ng tøc thêi cã c¸c bit 0/1 t¹i c¸c vÞ trÝ cÇn che/gi÷ l¹i t­¬ng øng. 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 l«gic 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 (to¸n h¹ng tøc thêi trong nh÷ng tr­êng hîp nµy cßn ®­îc gäi lµ mÆt n¹).

VÝ dô 2 :

AND AL, BL ; néi dung thanh ghi BL ®­îc giao víi néi dung trong

; thanh ghi AL vµ kÕt qu¶ ®­îc l­u trong thanh ghi

; AL(AX). NÕu con sè trong AL lµ 00001101B vµ

; trong BL lµ 00110011B th× kÕt qu¶ trong thanh ghi

; AL sau phÐp AND lµ: AL 0000001B.

OR AL, BL ; néi dung thanh ghi BL ®­îc hîp víi néi dung trong

; thanh ghi AL tõng bit mét vµ kÕt qu¶ ®­îc l­u trong

;thanh ghi AL(AX). NÕu con sè trong AL lµ

; 00001101B vµ trong BL lµ 00110011B th× kÕt qu¶

;trong thanh ghi AL sau phÐp AND lµ: AL 0011111B.


VÝ dô 3:

AND BL, 0FH ; che 4 bit cao cña BL.

OR BL, 30H ; lËp 4 bit b4 vµ b5 cña BL lªn 1.
SAL- Shift arithmetically Left (DÞch tr¸i sè häc)/ SHL- Shift (Logically) Left (DÞch tr¸i logic).

ViÕt lÖnh: SAL §Ých, CL

SHL §Ých, CL

M« t¶:



Mçi lÇn dÞch MSB sÏ ®­îc ®­a qua cê CF vµ 0 ®­îc ®­a vµo LSB. Thao t¸c kiÓu nµy ®­îc gäi lµ dÞch logic. CL ph¶i ®­îc chøa s½n sè lÇn dÞch mong muèn. Thùc chÊt mçi lÇn dÞch tr¸i t­¬ng ®­¬ng víi mét lÇn lµm phÐp nh©n víi 2 cña sè kh«ng dÊu. V× vËy ta cã thÓ lµm phÐp nh©n sè bÞ nh©n kh«ng dÊu víi 2i b»ng c¸ch dÞch tr¸i sè häc sè bÞ nh©n i lÇn. ChÝnh v× vËy thao t¸c nµy cßn ®­îc gäi lµ dÞch tr¸i sè häc.

Sau lÖnh SAL/SHL, cê CF mang gi¸ trÞ cò cña MSB, v× vËy lÖnh nµy cß dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña MSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. Cßn cê OF  1 nÕu sau khi dÞch 1 lÇn mµ bit MSB bÞ thay ®æi so víi tr­íc khi dÞch, cê nµy kh«ng ®­îc x¸c ®Þnh sau nhiÒu lÇn dÞch.

LÖnh nµy cËp nhËt c¸c cê SF, ZF, PF. Trong ®ã PF chØ cã ý nghÜa khi to¸n h¹ng lµ 8 bit; cê AF kh«ng x¸c ®Þnh.
SAR - Shift Arithmetically Right (DÞch ph¶i sè häc).

ViÕt lÖnh: SAR §Ých, CL


M« t¶:

Sau mçi lÇn dÞch ph¶i, MSB ®­îc gi÷ nguyªn (nÕu ®©y lµ bit dÊu th× dÊu lu«n kh«ng ®æi sau c¸c lÇn dÞch. Cßn LSB ®­îc ®­a vµo cê CF, CL ph¶i ®­îc chøa s½n sè lÇn dÞch mong muèn. KiÓu dÞch nµy t­¬ng ®­¬ng víi mét lÇn chia cho 2cña sè cã dÊu. V× vËy cã thÓ thay phÐp chia cho 2


ROL - Rotate All Bit to the Left (Quay vßng sang tr¸i).

ViÕt lÖnh: ROL §Ých, CL


M« t¶:

LÖnh nµy dïng ®Ó quay to¸n h¹ng sang tr¸i, MSB sÏ ®­îc ®­a qua cê CF vµ LSB. CL ph¶i chøa sè lÇn quay mong muèn.

Sau lÖnh ROL cê CF mang gi¸ trÞ cò cña MSB, v× vËy lÖnh nµy cß dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña MSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. Cßn cê OF  1 nÕu sau khi dÞch 1 lÇn mµ bit MSB bÞ thay ®æi so víi tr­íc khi dÞch, cê nµy kh«ng ®­îc x¸c ®Þnh sau nhiÒu lÇn dÞch. LÖnh nµy t¸c ®éng vµo c¸c cê CF, OF.
VÝ dô:

ROL BX, 1 ; quay vßng sang tr¸i thanh ghi BX.

MOV CL, 4 ; ®Æt sè lÇn quay vµo thanh ghi CL.

ROL AL, CL ; quay vßng sang tr¸i thanh ghi AL 4 lÇn.


ROR - Rotate All Bit to the Right (Quay vßng sang ph¶i).

ViÕt lÖnh: ROR §Ých, CL


M« t¶:

LÖnh nµy dïng ®Ó quay to¸n h¹ng sang ph¶i, LSB sÏ ®­îc ®­a qua cê CF vµ MSB. CL ph¶i chøa sè lÇn quay mong muèn.



II.4. Nhãm lÖnh so s¸nh.

CMP - Compare Byte or Word (so s¸nh 2 byte hay 2 tõ).

ViÕt lÖnh: CMP §Ý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, nh­ng ph¶i ch÷a d÷ liÖu cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhí.

LÖnh nµy chØ t¹o c¸c cê, kh«ng l­u kÕt qu¶ so s¸nh; sau lÖnh so s¸nh, c¸c to¸n h¹ng kh«ng bÞ thay ®æi. lÖnh nµy th­êng ®­îc dïng ®Ó t¹o cê cho c¸c lÖnh nh¶y cã ®iÒu kiÖn.

C¸c cê chÝnh theo quan hÖ ®Ých vµ nguån khi so s¸nh 2 sè kh«ng dÊu:

CF ZF


§Ých = Nguån 0 1

§Ých > Nguån 0 0

§Ých < Nguån 1 0.
TEST - And Operands to Update Flag (vµ 2 to¸n h¹ng ®Ó t¹o cê).

ViÕt lÖnh: TEST §Ých, Nguån

Trong ®ã to¸n h¹ng ®Ých vµ nguån cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng ph¶i chøa d÷ liÖu cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « 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 l­u gi÷. C¸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òng cã t¸c dông che nh­ mét mÆt n¹.

T¸c ®éng: Xo¸: CF, OF

CËp nhËt: PF, SF, ZF (PF chØ liªn quan ®Õn 8 bit thÊp)

Kh«ng x¸c ®Þnh: AF.

VÝ dô:

TEST AH, AL ; Vµ AH víi AL ®Ó t¹o cê.



TEST AH, 01H ; Bit 0 cña AH = 0?

TEST BP, [BX][DI] ; Vµ BP víi « nhí DS:BX+DI.


II.5 C¸c lÖnh ®iÒu khiÓn ch­¬ng tr×nh.

- LÖnh nh¶y kh«ng ®iÒu kiÖn: LÖnh nµy khiÕn bé vi xö lý b¾t ®Çu thùc hiÖn mét lÖnh míi t¹i ®Þa chØ ®­îc m« t¶ trong lÖnh.

ViÕt lÖnh: JMP Nh·n

LÖnh míi b¾t ®Çu t¹i ®Þa chØ øng víi nh·n. Ch­¬ng tr×nh dÞch sÏ c¨n cø vµo vÞ trÝ nh·n ®Ó x¸c ®Þnh gi¸ trÞ dÞch chuyÓn.

- LÖnh nh¶y cã ®iÒu kiÖn: LÖnh nµy biÓu diÔn thao t¸c: nh¶y (cã ®iÒu kiÖn) tíi nh·n, tøc lµ chØ thùc hiÖn nh¶y tíi nh·n nÕu ®iÒu kiÖn chØ ra ®óng. Nh·n ph¶i n»m c¸ch xa (dÞch ®i mét kho¶ng) -128.. +127 byte so víi lÖnh tiÕp theo sau lÖnh nh¶y cã ®iÒu kiÖn. Ch­¬ng tr×nh dÞch sÏ c¨n cø vµo vÞ trÝ cña nh·n ®Ó x¸c ®Þnh gi¸ trÞ dÞch chuyÓn.

C¸c lÖnh nµy kh«ng t¸c ®éng ®Õn cê.

Ng­êi ta ph©n biÖt c¸c kiÓu nh¶y cã ®iÒu kiÖn:

+ Nh¶y theo kiÓu kh«ng dÊu:

JA/JNBE - Jump if Above/ Jump if Not Below or Equal.

ViÕt lÖnh: JA Nh·n

JNBE Nh·n

JAE/JNB- Jump if Above or Equal/ Jump if Not Below.

ViÕt lÖnh: JAE Nh·n

JNB Nh·n

JB/JNAE- Jump if Below/ Jump if Not Above or Equal.

ViÕt lÖnh: JB Nh·n

JNAE Nh·n.

VÝ dô 1:

CMP AL, 10H ; so s¸nh AL víi 10H.

JA MEM1 ; nh¶y ®Õn nh·n MEM1 nÕu AL cao h¬n 10H.

JB MEM2 ;nh¶y ®Õn nh·n MEM2 nÕu AL thÊp h¬n 10H.

+ Nh¶y theo kiÓu cã dÊu:



JG/JNLE- Jump if Greater than/ Jump if Not Less than or Equal.

ViÕt lÖnh: JG Nh·n

JNLE Nh·n.

JGE/JNL- Jump if Greater than or Equal/ Jump if Not Less than.

ViÕt lÖnh: JGE Nh·n

JNL Nh·n.

JL/JNGE- Jump if Less than/ Jump if Not Greater than or Equal.

JLE/JNG- Jump if Less than or Equal/ Jump if Not Greater than.
+ Nh¶y theo kiÓu ®¬n.

JE/JZ- Jump if Equal/ Jump if Zero.

JNE/JNZ- Jump if Not Equal/ Jump if Not Zero.

JC- Jump if Carry

JNC- Jump if Not Carry

JO- Jump if Overflow

JNO- Jump if Not Overflow

JS- Jump if Sign

JNS- Jump if Not Sign

JP/JPE- Jump if Parity/ Jump if Parity Even

JNP/JPO- Jump if Not Parity/ Jump if Parity Odd
- LÖnh lÆp: LÖnh nµy dïng ®Ó lÆp l¹i ®o¹n ch­¬ng tr×nh (bao gåm c¸c lÖnh n»m trong kho¶ng tö nh·n ®Õn hÕt lÖnh LOOP Nh·n cho ®Õn khi sè lÇn lÆp CX=0. §iÒu nµy cã nghÜa lµ tr­íc khi vµo vßng lÆp, ta ph¶i ®­a sè lÇn lÆp mong muèn vµo thanh ghi CX vµ sau mçi lÇn thùc hiÖn lÖnh LOOP Nh·n th× CX tù ®éng gi¶m ®i 1.

Nh·n ph¶i n»m c¸ch xa (dÞch mét kho¶ng) -128 byte so víi lÖnh tiÕp theo sau lÖnh LOOP.

LÖnh nµy kh«ng t¸c ®éng ®Õn cê.

ViÕt lÖnh: LOOP Nh·n

VÝ dô:

XOR AL, Al ; xo¸ AL



MOV CX, 16 ; sè lÇn lÆp ®­a vµo CX

Lap: INC AL ; t¨ng AL lªn 1

LOOP Lap ; lÆp l¹i 16 lÇn, AL =16.
- LÖnh JCXZ- Jump if CX is Zero (nh¶y nÕu CX = 0).

ViÕt lÖnh: JCXZ Nh·n

§©y lµ lÖnh nh¶y cã ®iÒu kiÖn tíi nh·n nÕu néi dung thanh ®Õm b»ng 0 vµ kh«ng cã liªn hÖ g× víi cß ZF. Nh·n ph¶i n»m c¸ch xa (dÞch ®i mét kho¶ng) -128.. +127 byte so víi lÖnh tiÕp theo sau lÖnh JCXZ. Ch­¬ng tr×nh dÞch sÏ c¨n cø vµo vÞ trÝ nh·n ®Ó x¸c ®Þnh gi¸ trÞ dÞch chuyÓn.
- LÖnh gäi ch­¬ng tr×nh con CALL: LÖnh nµy dïng ®Ó chuyÓn ho¹t ®éng cña bé vi xö lý tõ ch­¬ng tr×nh chÝnh (CTC) sang ch­¬ng tr×nh con (ctc). NÕu ctc ë cïng mét ®o¹n m· víi CTC th× ta cã gäi gÇn. NÕu CTC vµ ctc n»m trong hai ®o¹n m· kh¸c nhau th× ta cã gäi xa. Gäi gÇn vµ gäi xa kh¸c nhau vÒ c¸ch t¹o ®Þa chØ trë vÒ. §Þa chØ trë vÒ lµ ®Þa chØ tiÕp theo ngay sau lÖnh CALL. Khi gäi gÇn th× chØ cÇn cÊt IP cña ®Þa chØ trë vÒ, khi gäi xa th× ph¶i cÊt c¶ CS vµ IP cña ®Þa chØ trë vÒ. §Þa chØ trë vÒ ®­îc tù ®éng cÊt vµo ng¨n xÕp khi b¾t ®Çu thùuc hiÖn lÖnh gäi vµ ®­îc tù ®éng lÊy ra khi gÆp lÖnh trë vÒ RET.

-RET - Return from Procedure to Calling Program (Trë vÒ CTC tõ ctc).
ViÕt lÖnh: RET

Khi gÆp lÖnh trë vÒ RET, vi xö lý kÕt thóc ctc lÊy l¹i ®Þa chØ trë vÒ, bao gåm ®Þa chØ IP (tr­êng hîp gäi gÇn) hoÆc IP vµ CS (trong tr­êng hîp gäi xa) cña lÖnh tiÕp theo sau lÖnh CALL, ®­îc ®Æt trong ng¨n xÕp.


- INT - Interrupt Program Excution (Ng¾t, gi¸n ®o¹n ch­¬ng tr×nh ®ang ch¹y).
ViÕt lÖnh: INT N, N = 0.. FFH

M« t¶: C¸c thao t¸c cña bé vi xö lý khi ch¹y lÖnh INT :


1. SP  SP - 2. {SP}  FR

2. IF  0 (cÊm c¸c ng¾t kh¸c t¸c ®éng), TF  0 (ch¹y suèt).

3. SP  SP - 2, {SP}  CS.

4. SP  SP - 2, {SP}  IP.

5. {N x 4}  IP, {5N x 4 + 2}  CS.
Mçi lÖnh ng¾t øng víi mét ch­¬ng tr×nh phôc vô ng¾t kh¸c nhau cã ®Þa chØ lÊy tõ b¶ng vÐc t¬ ng¾t. B¶ng nµy g«mg 256 vec t¬, chøa ®Þa chØ cña c¸c ch­¬ng tr×nh phôc vô ng¾t t­¬ng øng vµ chiÕm 1 Kb RAM cã ®Þa chØ thÊp nhÊt.
VÝ dô nh­ c¸c ch­¬ng tr×nh phôc vô ng¾t cña BIOS, cña DOS nh­ IO.SYS, MSDOS.SYS.

VÝ dô:


INT 21H

III. C¸c chÕ ®é ®Þa chØ


Nh÷ng ph­¬ng ph¸p ®Þnh ®Þa chØ hay cßn gäi lµ chÕ ®é ®Þa chØ (addressing mod) ®­îc dïng ®Ó vi xö lý t×m ra (®Þnh vÞ, addressing) c¸c to¸n h¹ng cÇn thiÕt cho mét lÖnh nµo ®ã. Mét bé vi xö lý cã thÓ cã nhiÒu chÕ ®é ®Þa chØ, c¸c chÕ ®é ®Þa chØ nµy ®­îc x¸c ®Þnh ngay tõ khi chÕ t¹o bé vi xö lý vµ sau nµy kh«ng thÓ thay ®æi ®­îc. Hä vi xö lý Intel cã b¶y chÕ ®é ®Þa chØ nh­ sau:
1. ChÕ ®é ®Þa chØ thanh ghi

2. ChÕ ®é ®Þa chØ tøc th×

3. ChÕ ®é ®Þa chØ trùc tiÕp

4. ChÕ ®é ®Þa chØ gi¸n tiÕp thanh ghi

5. ChÕ ®é ®Þa chØ t­¬ng ®èi c¬ së

6. ChÕ ®é ®Þa chØ t­¬ng ®èi chØ sè

7. ChÕ ®é ®Þa chØ t­¬ng ®èi chØ sè c¬ së
III.1. ChÕ ®é ®Þa chØ thanh ghi (register addressing).

Trong chÕ ®é ®Þa chØ nµy ng­êi ta dïng c¸c thanh ghi bªn trong CPU nh­ lµ c¸c to¸n h¹ng ®Ó chøa d÷ liÖu cÇn thao t¸c. V× vËy khi thùc hiÖn lÖnh cã thÓ ®¹t tèc ®é truy nhËp cao h¬n so víi c¸c lÖnh cã truy nhËp ®Õn bé nhí.

VÝ dô:

MOV AX, BX ; chuyÓn néi dung BX vµo AX.



ADD DS, DL ; céng néi dung AL vµ DL , kÕt qu¶ gi÷ trong AL.
III.2. ChÕ ®é ®Þa chØ tøc th× (immediate addressing)

Trong chÕ ®é ®Þa chØ nµy to¸n h¹ng ®Ých lµ mét thanh ghi hay mét « nhí, cßn to¸n h¹ng nguån lµ mét h»ng sè vµ ta cã thÓ t×m thÊy to¸n h¹ng nµy ë ngay sau m· lÖnh (chÝnh v× vËy chÕ ®é ®Þa chØ nµy gäi lµ chÕ ®é ®Þa chØ tøc th×). Ta cã thÓ dïng chÕ ®é nµy ®Ó n¹p d÷ liÖu cÇn thao t¸c vµo bÊt kú thanh ghi nµo (trõ c¸c thanh ghi ®o¹n vµ c¸c thanh ghi cê) hoÆc vµo bÊt kú « nhí nµo trong ®o¹n d÷ liÖu DS.


VÝ dô:

MOV AX, 4EH ; chuyÓn gi¸ trÞ 4EH vµo thanh ghi AX.

MOV AX, 0FFOH ; chuyÓn 0FF0H vµo thanh ghi AX

MOV DS, AX ; ®Ó ®­a vµo DS.

MOV [BX], 4EH ; chuyÓn 4EH vµo ®Þa chØ « nhí DS:BX
III.3. ChÕ ®é ®Þa chØ trùc tiÕp (direct addresssing mode)

Trong chÕ ®é ®Þa chØ nµy mét to¸n h¹ng chøa ®Þa chØ lÖch cña « nhí dïng ®Ó chøa d÷ liÖu, cßn to¸n h¹ng kia chØ cã thÓ lµ mét thanh ghi mµ kh«ng thÓ lµ mét vÞ trÝ nhí.

NÕu so s¸nh víi chÕ ®é ®Þa chØ tøc th× ta thÊy ë ®©y ngay sau m· lÖnh kh«ng ph¶i lµ mét to¸n h¹ng mµ lµ mét ®Þa chØ lÖch cña to¸n h¹ng. XÐt vÒ ph­¬ng diÖn ®Þa chØ th× ®ã lµ ®Þa chØ trùc tiÕp.

VÝ dô:


MOV AL, [1234H] ; chuyÓn néi dung « nhí DS:1234H vµo AL.

MOV [4321H], CX ; chuyÓn néi dung CX vµo 2 vÞ trÝ nhí

; liªn tiÕp lµ DS:4321 vµ DS:4322.
III.4. ChÕ ®é ®Þa chØ gi¸n tiÕp qua thanh ghi (register indirect addressing).

Trong chÕ ®é ®Þa chØ nµy mét to¸n h¹ng lµ mét thanh ghi ®­îc sö dông ®Ó chøa ®Þa chØ lÖch cña « nhí chøa d÷ liÖu, cßn to¸n h¹ng kia chØ cã thÓ lµ mét thanh ghi mµ kh«ng ®­îc lµ « nhí.

VÝ dô:

MOV AL, [BX] ; chuyÓn néi dung t¹i « nhí DS:BX vµo AL.



MOV [SI], CL ; chuyÓn néi dung CL vµo « nhí DS:SI.

III.5. ChÕ ®é ®Þa chØ t­¬ng ®èi c¬ së (based relative addresing).


Trong chÕ ®é nµy c¸c thanh ghi c¬ së nh­ BX vµ BP vµ c¸c h»ng sè biÓu diÔn c¸c gi¸ trÞ dÞch chuyÓn (displacement values) ®­îc dïng ®Ó tÝnh ®Þa chØ hiÖu dông cña to¸n h¹ng trong c¸c vïng nhí DS vµ SS. Sù cã mÆt cña c¸c gi¸ trÞ di¹ch chuyÓn x¸c ®Þnh tÝnh t­¬ng ®èi (so víi c¬ së) cña ®Þa chØ.

VÝ dô:


MOV CL, [BX] + 10 ; chuyÓn néi dung 2 « nhí liªn tiÕp cã ®Þa

; chØ DS:(BX+10) vµ DS:(BX+11) vµo CX.

MOV CX, [BX +10] ; t­¬ng tù nh­ lÖnh trªn.

MOV AL, [BP] + 10 ; chuyÓn néi dung « nhí SS:(BP+10) vµo AL


III. 6. ChÕ ®é ®Þa chØ t­¬ng ®èi chØ sè (indexed relative addressing).

Trong chÕ ®é ®Þa chØ nµy c¸c thanh ghi chØ sè nh­ SI vµ DI vµ c¸c h»ng sè biÓu diÔn c¸c gi¸ trÞ dÞch chuyÓn (displacement values) ®­îc dïng ®Ó tÝnh ®Þa chØ cña to¸n h¹ng trong vïng nhí DS.


VÝ dô:

MOV AL, [SI]+10 ; chuyÓn néi dung « nhí DS:(SI+10) vµo AL.

MOV AL, [SI+10] ; t­¬ng tù nh­ trªn.

III.7. ChÕ ®é ®Þa chØ t­¬ng ®èi chØ sè c¬ së (based indexed relative addressing).

KÕt hîp hai chÕ ®é ®Þa chØ chØ sè vµ c¬ së ta cã chÕ ®é ®Þa chØ chØ sè c¬ së. Trong chÕ ®é ®Þa chØ nµy ta dïng c¶ thanh ghi c¬ së vµ thanh ghi chØ sè ®Ó tÝnh ®Þa chØ cña to¸n h¹ng. NÕu ta dïng thªm c¶ thµnh phÇn biÓu diÔn sù dÞch chuyÓn cña ®Þa chØ th× ta cã chÕ ®é ®Þa chØ phøc hîp cho chÕ ®é ®Þa chØ ho¸ c¸c m¶ng hai chiÒu.


VÝ dô:

MOV AL, [BP][SI]+10 ; chuyÓn néi dung DS:(BX+SI+10) vµo AL.

MOV AL, [BP+SI+10] ; t­¬ng tù nh­ trªn.
Khi dïng thanh ghi chØ sè , thanh ghi c¬ së vµ thanh ghi con trá th× nh÷ng cÆp ®Þa chØ ®o¹n vµ ®Þa chØ lÖch sau sÏ ®­îc ®Þnh nghÜa tr­íc:

CS:IP, DS:SI, DS:DI, DS:BX, ES:DI, SS:SP, SS:BP.


Muèn lo¹i bá gi¸ trÞ ngÇm ®Þnh cho BX trong thanh ghi ®o¹n DS vµ dïng gi¸ trÞ trong thanh ghi ®o¹n ES ta cÇn viÕt:

MOV AL, ES:[BX] ; chuyÓn néi dung ES:BX vµo AL.
tải về 124.96 Kb.

Chia sẻ với bạn bè của bạn:




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương