Các chiến lược trữ đệm trong Cache
Các chiến lược trữ đệm liên quan đến tác vụ đọc ghi từ CPU. Có 2 loại :
Writethrough Cache (WTC) và Writeback cache (WBC).
• Khi CPU đọc từ bộ nhớ qui ước thì WTC và WBC đều nhưnhau : sẽ đọc 1 đoạn nội dung
trong bộ nhớ vào cache.
• Khi CPU ghi ra bộ nhớ qui ước :
WTC : CPU ghi data ra vùng đệm ghi (write buffer) rồi bỏ đó tiếp tục việc khác, cache
sẽ lấy nội dung trong buffer rồi chịu trách nhiệm ghi ra bộ nhớ qui ước khi bus rãnh.
WBC : CPU ghi data vào cache, khi cache đầy thìđẩy thông tin ra bộ đệm (đệm castoff)
rồi từ castoof, data chuyển sang bộ nhớ qui ước.
570 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1596 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Bài giảng Cấu trúc máy tính và ASM, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
K 100H
.DATA
MOV AX, VALUE1
MOV BX, VALUE2
INC BX, 1
INT 21H
MOV 4C00H, AX
MAIN ENDP
VALUE1 0AH
VALUE2 1000H
END MAIN
4/4/2006 Chuong 5 Nhap mon ASM 37
Caâu hoâ ûûi oân taâ ääp
Chöông trình sau coùù loãi. Haõy tã õ ìm caâu leâ äänh naøøo gaây ra loãi, giaâ ã ûûi
thích vaøø söûûa laïïi cho ñuùùng.
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS , AX
MOV AX, VALUE1
MOV AX, VALUE2
MOV AX, 4C00H
INT 21H
MAIN ENDP
VALUE1 DB 0AH
VALUE2 DB 1000H
END MAIN
4/4/2006 Chuong 5 Nhap mon ASM 38
Baøøi taääp laääp trình
Baøøi 1 : Vieáát chöông trình nhaääp 1 kyùù töïï thöôøøng , in
ra kyùù töïï hoa töông öùùng.
Baøøi 2 : Vieáát chöông trình hoaùùn vò 2 bieáán kieååu
byte ñöôïïc gaùùn saüün trò.
Baøøi 3 : Vieáát chöông trình taïïo 1 array coùù caùùc phaààn
töûû 31h,32h,33h,34h.
Naïïp töøøng phaààn töûû vaøøo thanh ghi DL vaøø xuaáát noùù ra
maøøn hình. Giaûûi thích taïïi sao keáát xuaáát treân maâ øøn
hình laøø 1234.
14/4/2006 Chuong 7 Cac phep dinh vi dia chi
24/4/2006 Chuong 7 Cac phep dinh vi dia chi
34/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn töûû soáá hoïïc
Dòch exp sang phaûûi n bitexp shr nSHR
Dòch exp sang traùùi n bitexp shl nSHL
Tröøøexp1 - exp2-
Coäängexp1 + exp2+
Phaààn döexp1 mod exp2MOD
Chiaexp1/exp2/
Nhaânâexp1*exp2*
Aâmâ- expression-
Döông+ expression+
Coâng duâ ïïngCuùù phaùùpToaùùn töûû
44/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn töûû logic
Exp1 xor exp2Xor
Exp1 or exp2Or
Exp1 and exp2And
Not expressionNot
Ex : MOV AH , 8 OR 4 AND 2
MOV AL, NOT (20 XOR 0011100B)
54/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn Töûû Quan Heää
So saùùnh 2 bieååu thöùùc vaøø cho trò laøø true (-1) neááu
ñieààu kieään cuûûa toaùùn töûû thoûûa, ngöôïïc laïïi laøø false.
True neááu Exp1 >= exp2Exp1 GE exp2GE
True neááu Exp1 > exp2Exp1 GT exp2GT
True neááu Exp1 <= exp2Exp1 LE exp2LE
True neááu Exp1 < exp2Exp1 LT exp2LT
True neááu Exp1 exp2Exp1 NE exp2NE
True neááu Exp1 = exp2Exp1 EQ exp2EQ
64/4/2006 Chuong 7 Cac phep dinh vi dia chi
ÑOÄÄ ÖU TIEÂN Â TOAÙÙN TÖÛÛ
Coääng, tröøø+ , -
Nhaân , chia, Modulusâ* / MOD
Daááu döông , aâmâ+ , -
Daááu ngoaëëc( )
MOÂ TAÂ ÛÛTOAÙÙN TÖÛÛ
Ñoä öu tieân
giaûm daàn
74/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn töûû SEG
Cuùù phaùùp :
SEG expression
Cho ñòa chæ ñoaïïn cuûûa bieååu thöùùc expression.
Expression coùù theåå laøø bieáán | nhaõn | teân segment õ â
hay toaùùn haïïng boää nhôùù khaùùc.
84/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn töûû OFFSET
Cuùù phaùùp :
OFFSET expression
Cho ñòa chæ OFFSET cuûûa bieååu thöùùc expression.
Expression coùù theåå laøø bieáán | nhaõn | teân segment õ â
hay toaùùn haïïng tröïïc tieááp boää nhôùù khaùùc.
Ex : naïp ñòa chæ segment vaø offset cuûa bieán table vaøo DS :AX
TABLE DB ?
MOV AX, SEG TABLE
MOV DS, AX
MOV DX, OFFSET Table
94/4/2006 Chuong 7 Cac phep dinh vi dia chi
TOAÙÙN TÖÛÛ $
Cho ñòa chæ cuûûa OFFSET cuûûa phaùùt
bieååu chöùùa toaùùn töûû $.
Thöôøøng ñöôïïc duøøng ñeåå tính chieààu daøøi
chuoååi.
104/4/2006 Chuong 7 Cac phep dinh vi dia chi
TOAÙÙN TÖÛÛ PTR
Cuùù phaùùp : type PTR expression
Cho pheùùp thay ñoååi daïïng cuûûa expression
neááu expr laøø 1 bieáán | toaùùn haïïng boää nhôùù thì type coùù
theåå laøø byte , word hay dword.
Neááu expr laøø 1 nhaõn thõ ì type coùù theåå laøø near hay
far.
Ex : mov ax, word ptr var1 ; var1 laø toaùn haïng kieåu
Word
mov bl , byte ptr var2 ; var2 laø toaùn haïng kieåu byte
114/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn haïïng (Operand)
Caùc toaùn haïng chæ ra nôi chöùa döõ lieäu cho 1 leänh , chæ thò.
Haàu heát caùc leänh Assembly ñeàu coù ñoái soá laø 1 hoaëc 2 toaùn haïng
Coù 1 soá leänh chæ coù 1 toaùn haïng nhö RET, CLC.
Vôùi caùc leänh 2 toaùn haïng thì toaùn haïng thöù 2 laø toaùn haïng
nguoàn (source) – chöùa döõ lieäu hoaëc ñòa chæ cuûa döõ lieäu.
124/4/2006 Chuong 7 Cac phep dinh vi dia chi
Toaùùn haïïng (Operand)
Toaùn haïng ñích giöõ keát quaû (neáu coù yeâu caàu) sau khi
thi haønh leänh.
Toaùn haïng ñích coù theå laø thanh ghi hay Boä nhôù.
Toaùn haïng nguoàn coù theå laø thanh ghi, boä nhôù hay 1 giaù trò
töùc thôøi .
Toaùn haïng soá töùc thôøi coù theå laø soá trong caùc heä ñeám khaùc nhau
vaø ñöôïc vieát theo qui ñònh sau :
Soá heä 2 : xxxxxxxxB (x laø bit nhò phaân)
Soá heä 10 : xxxxxD hay xxxxx (x laø 1 soá heä 10)
Soá heä 16 : xxxxH vaø baét ñaàu baèng soá (x laø 1 soá heä 16)
134/4/2006 Chuong 7 Cac phep dinh vi dia chi
144/4/2006 Chuong 7 Cac phep dinh vi dia chi
154/4/2006 Chuong 7 Cac phep dinh vi dia chi
ðỊ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
164/4/2006 Chuong 7 Cac phep dinh vi dia chi
174/4/2006 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 :
184/4/2006 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
194/4/2006 Chuong 7 Cac phep dinh vi dia chi
ðỊ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.
204/4/2006 Chuong 7 Cac phep dinh vi dia chi
ÑÒA CHÆ HIEÄÄU DUÏÏNG
Toaùn haïng boä nhôù duøng trong taäp leänh vi xöû lyù 86 söû duïng
phöông phaùp ñònh ñòa chæ toång hôïp ñöôïc goïi laø ñòa chæ hieäu
duïng.
Ñòa chæ hieäu duïng laø toå hôïp cuûa 3 nhoùm sau ñaët trong daáu [ ].
Nhoùm thanh ghi chæ soá : SI , DI
Nhoùm thanh ghi neàn : BX, BP
Ñòa chæ tröïc tieáp : soá 16 bit
Caùc thanh ghi trong cuøng 1 nhoùm khoâng ñöôïc xuaát hieän trong cuøng 1
ñòa chæ hieäu duïng.
Caùc thanh ghi trong cuøng 1 nhoù khoâng ñöôïc xuaát hieän trong cuøng 1
ñòa chæ hieäu duïng.
214/4/2006 Chuong 7 Cac phep dinh vi dia chi
ÑÒA CHÆ HIEÄÄU DUÏÏNG
Ñòa chæ hieäu duïng hôïp leä :
Moät soá thí duï
[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æ hieäu duïng khoâng hôïp leä :
[70000], [AX] , [SI+DI+1000h], [BX] [BP]
224/4/2006 Chuong 7 Cac phep dinh vi dia chi
234/4/2006 Chuong 7 Cac phep dinh vi dia chi
Ñòa chæ hieääu duïïng (tt)
Qui öôùc Ñeå thuaän tieän trong vaán ñeà giaûi thích leänh, ta qui öôùc
sau :
Döõ lieäu 8 bit boä nhôù : [ ñòa chæ ]
Döõ lieäu 16 bit boä nhôù : [ ñòa chæ +1, ñòa chæ ]
Ñeå xaùc ñònh roõ hoaït ñoäng cuûa boä nhôù , ta phaûi duøng
theâm toaùn töû PTR nhö sau :
8 bit : BYTE PTR [1000H] Tham khaûo 1 byte boä nhôù ôû ñòa chæ1000h
16 bit : WORD PTR [1000H] Tham khaûo 2 byte boä nhôù lieân tieáp ôûñòa chæ 1000h vaø 1001h
244/4/2006 Chuong 7 Cac phep dinh vi dia chi
Ex : Tính toåång 1 array coùù 5 phaàà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
Caùch thöïc hieän :
Laáy ñòa chæ cuûa List vaøo BX
Döïa vaøo BX ñeå xaùc ñònh caùc phaàn
töû cuûa array.
Khi tính toång xong, ñöa toång vaøo
bieán SUM.
254/4/2006 Chuong 7 Cac phep dinh vi dia chi
Ex : Tính toåång 1 array coùù 5 phaàà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
CHAÏY CT naøy baèng DEBUG
264/4/2006 Chuong 7 Cac phep dinh vi dia chi
Taääp leäänh
Leänh MOV :
YÙ nghóa : copy giaù trò töø toaùn haïng nguoàn toaùn haïng ñích
Cuù phaùp : MOV dest , source
Yeâu caàu : Dest vaø source cuøng kieåu
Daïng leänh :
MOV reg , reg
MOV mem , reg
MOV reg, mem
MOV reg16, segreg
MOV segreg, reg16
MOV reg, immed
MOV mem, immed
MOV mem16, segreg
MOV segreg, mem16
274/4/2006 Chuong 7 Cac phep dinh vi dia chi
Minh hoaïï leäänh MOV
MOV AX, CX
MOV DL, BH
MOV [SI+1000h], BP ; [SI+1000h, SI+1001h] BP
MOV DX, [1000h] ; DX [1000h, 1001h]
MOV DI, 12h
MOV AL, 12h
MOV BYTE PTR [1000h], 12h
MOV WORD PTR [2000h] , 1200h
MOV [BX] , DS
MOV SS, [2000h]
284/4/2006 Chuong 7 Cac phep dinh vi dia chi
Leäänh MOV khoâng laâ øøm aûûnh höôûûng ñeáán côøø.
Khoâng theâ åå chuyeåån döõ lieõ ääu tröïïc tieááp giöõa 2 toaõ ùùn
haïïng boää nhôùù vôùùi nhau, muoáán chuyeåån phaûûi duøøng
thanh ghi trung gian.
Khoâng theâ åå chuyeåån 1 giaùù trò töùùc thôøøi vaøøo thanh ghi
ñoaïïn, muoáán chuyeåån phaûûi duøøng thanh ghi trung gian.
Khoâng theâ åå chuyeåån tröïïc tieááp giöõa 2 thanh ghi õ ñoaïïn
Chuùù yùù
294/4/2006 Chuong 7 Cac phep dinh vi dia chi
Minh hoïïa leäänh MOV
Ex1 : Cho table laø 1 maûng goàm 10 phaàn töû daïng byte
Table DB 3,5,6,9,10, 29,30,46,45,90
Truy xuaát phaàn töû ñaàu , phaàn töû thöù 2 vaø thöù 5 cuûa maûng:
MOV AL, TABLE hay MOV AL, TABLE[0]
MOV AL, TABLE+1 hay MOV AL, TABLE[1]
MOV AL, TABLE+4 hay MOV AL, TABLE[4]
304/4/2006 Chuong 7 Cac phep dinh vi dia chi
Minh hoïïa leäänh MOV
Ex2 : MOV AX, DS : [100h]
Ex3 : MOV AX, [100h]
; chuyeån NỘI DUNG Ô NHỚ 100h vaøo Reg AX.
; cheùp noäi dung 16 bit taïi ñòa chæ
100h trong ñoaïn chæ bôûi DS vaøo Reg AX.
314/4/2006 Chuong 7 Cac phep dinh vi dia chi
AÙÙp duïïng
Vieát chöông trình chuyeån noäi dung vuøng nhôù baét ñaàu taïi ñòa chæ 700h
sang vuøng nhôù coù ñòa chæ baét ñaàu laø 1000h. Bieát chieàu moãi vuøng
nhôù laø 9 bytes vaø döõ lieäu ñang khaûo saùt trong ñoaïn ñöôïc chæ bôûi DS.
Cho vuøng nhôù MEM coù chieàu daøi 9 bytes goàm caùc kyù töï ‘abcdefghi’
trong ñoaïn chæ bôûi DS.
Vieát chöông trình ñaûo ngöôïc vuøng nhôù MEM.
324/4/2006 Chuong 7 Cac phep dinh vi dia chi
Leäänh LEA (Load Effective Address)
Cuù phaùp : LEA REG | MEM
yù nghóa : naïp ñòa chæ Offset vaøo thanh ghi ñeå khôûi ñoäng Reg.
Ex : MOV DX, OFFSET MES
Töông ñöông vôùi LEA DX, MES
Ex : LEA BX, [1000h] ; BX 1000h
LEA SI, [DI][BX][2000h] ; SI DI + BX + 2000h
334/4/2006 Chuong 7 Cac phep dinh vi dia chi
Leäänh XCHG (XCHANGE)
Cuù phaùp : XCHG DEST , SOURCE
yù nghóa : hoaùn chuyeån noäi dung 2 Reg, Reg vaø oâ nhôù
Yeâu caàu :
2 toaùn haïng phaûi cuøng kieåu
2 toaùn haïng khoâng theå laø 2 bieán boä nhôù. Muoán hoaùn
ñoåi trò cuûa 2 bieán phaûi duøng Reg trung gian.
Ex : XCHG AH, BL
MOV VAR1, VAR2 ; khoâng hôïp leä, phaûi duøng Reg taïm
344/4/2006 Chuong 7 Cac phep dinh vi dia chi
Leäänh PUSH
Cuù phaùp : PUSH REG16
PUSH MEM16
PUSH SEGREG
Ñaåy toaùn haïng nguoàn 16 bit vaøo STACK
Ex : PUSH DI ; [SS :SP+1, SS :SP] DI
Ex : PUSH CS ; [SS :SP+1, SS :SP] CS
354/4/2006 Chuong 7 Cac phep dinh vi dia chi
Leäänh POP
Cuù phaùp : POP REG16
POP MEM16
POP SEGREG
Laáy döõ lieäu töø ñænh STACK vaøo toaùn haïng ñòch.
Ex : POP AX ; AX [SS :SP+1, SS :SP]
Ex : POP [BX+1] ; [BX+2, BX+1] [SS :SP+1, SS :SP]
364/4/2006 Chuong 7 Cac phep dinh vi dia chi
Leäänh IN
Cuù phaùp : IN ACCUM, IMMED8
IN ACCUM, DX
nhaäp döõ lieäu töø coång xuaát nhaäp vaøo thanh ghi tích luyõ AL
hay AX. Tröôøng hôïp AX seõ nhaäp byte thaáp tröôùc, byte cao sau.
Ex : IN AL ,61h
IN AX, 40h Daïng leänh coù Reg DX duøng
Ñeå cho coång coù ñòa chæ 16 bit Ex : MOV DX, 378H
IN AL, DX
374/4/2006 Chuong 7 Cac phep dinh vi dia chi
SUMMARY
Duøøng DEBUG ñeåå hôïïp dòch vaøø chaïïy chöông trình sau :
Cheùùp 3 soáá nguyeân kieâ ååu Word ôûû ñòa chæ 0120h vaøøo ñòa chæ
0130h.
Cho bieáát giaùù trò cuûûa AX sau khi caùùc leäänh sau ñöôïïc thöïïc thi :
MOV AX, ARRAY1
INC AX
ADD AH, 1
SUB AX, ARRAY1
……
ARRAY1 DW 10h, 20h
384/4/2006 Chuong 7 Cac phep dinh vi dia chi
SUMMARY
Giả söûû bieáán VAL1 ôûû ñòa chæ offset 0120h vaøø PTR1 ôûû
ñòa chæ 0122h. Cho bieáát giaùù trò cuûûa caùùc thanh ghi AX,
BX khi moãi leã äänh sau ñöôïïc thöïïc thi :
.CODE
MOV AX, @DATA
MOV DS, AX
MOV AX, 0
MOV AL, BYTE PTR VAL1 ; AX = ?
MOV BX, PTR1 ; BX = ?
XCHG AX, BX ; BX = ?
SUB AL,2 ; AX = ?
MOV AX, PTR2 ; AX = ?
.DATA
VAL1 DW 3Ah
PTR1 DW VAL1
PTR2 DW PTR1
394/4/2006 Chuong 7 Cac phep dinh vi dia chi
Cho bieát giaù trò cuûa caùc thanh ghi ôû beân phaûi, khi moãi leänh
cuûa ñoaïn chöông trình sau ñöôïc thöïc thi. Giaû söû FIRST ôû
offset 0H
MOV AL, BYTE PTR FIRST+1 ; AL =
MOV BX, WORD PTR SECOND+2 ; BX =
MOV DX, OFFSET FIRST + 2 ; DX =
MOV AX, 4C00H
INT 21H
…….
FIRST DW 1234h
SECOND DW 16385
THIRD DB 10,20,30,40
404/4/2006 Chuong 7 Cac phep dinh vi dia chi
Baøøi taääp Laääp trình
Baøi 1 : Vieát chöông trình nhaäp 1 kyù töï.
Hieån thò kyù töï ñöùng tröôùc vaø kyù töï ñöùng sau kyù töï ñaõ nhaäp theo
thöù töï maõ ASCII.
Keát quaû coù daïng :
Nhaäp moät kyù töï : B
Kyù töï ñöùng tröôùc : A
Kyù töï ñöùng sau : C
Baøi 2 : Vieát chöông trình nhaäp 2 kyù töï vaø hieån thò kyù töï thöù 3 coù
maõ ASCII laø toång cuûa maõ 2 kyù töï ñaõ nhaäp.
Keát quaû coù daïng :
Chuong 8 : Cau truc DK va Vong lap 1
Chöông 8 : Caááu truùùc ñieààu khieåån vaøø Voøøng laëëp
Muïc tieâu
Bieát caùch moâ phoûng caáu truùc ñieàu khieån vaø voøng laëp nhö ôû ngoân ngöõ
laäp trình caáp cao.
Naém ñöôïc caùc leänh nhaûy trong laäp trình Assembly.
Treân cô sôû ñoù, vaän duïng ñeå laäp trình giaûi quyeát 1 soá baøi toaùn.
Chuong 8 : Cau truc DK va Vong lap 2
Noääi dung
Söïï caààn thieáát cuûûa leäänh nhaûûy trong laääp trình ASM.
Leäänh JMP (Jump) : nhaûûy khoâng â ñieààu kieään.
Leäänh LOOP : cho pheùùp laëëp 1 coâng vieâ ääc vôùùi 1 soáá laààn naøøo ñoùù.
Caùùc leäänh so saùùnh vaøø luaään lyùù.
Leäänh laëëp coùù ñieààu kieään.
Leäänh nhaûûy coùù ñieààu kieään.
Bieååu dieãn moâ phoã â ûûng caááu truùùc luaään lyùù möùùc cao.
Chöông trình con.
Moäät soáá chöông trình minh hoïïa.
Chuong 8 : Cau truc DK va Vong lap 3
Söïï caààn thieáát cuûûa leäänh nhaûûy
ÔÛÛ caùùc chöông trình vieáát baèèng ngoân ngâ öõ caõ ááp cao thì
vieääc nhaûûy (leäänh GoTo) laøø ñieààu neân traâ ùùnh nhöng ôûû laääp
trình heää thoááng thì ñaây laâ øø vieääc caààn thieáát vaøø laøø ñieååm
maïïnh cuûûa 1 chöông trình vieáát baèèng Assembly.
Moäät leäänh nhaûûy CPU phaûûi thöïïc thi 1 ñoaïïn leäänh ôûû 1
choã khaã ùùc vôùùi nôi maøø caùùc leäänh ñang ñöôïïc thöïïc thi.
Trong laääp trình, coùù nhöõng nhoõ ùùm phaùùt bieååu caààn phaûûi
laëëp ñi laëëp laïïi nhieààu laààn trong 1 ñieààu kieään naøøo ñoùù. Ñeåå
ñaùùp öùùng ñieààu kieään naøøy ASM cung caááp 2 leäänh JMP vaøø
LOOP.
Chuong 8 : Cau truc DK va Vong lap 4
Leäänh JMP (Jump)
Coâng duâ ïïng :Chuyeåån ñieààu khieåån khoâng â ñieààu
kieään.
• Nhaûûy gaààn (NEAR) : 1 taùùc vuïï nhaûûy trong cuøøng 1
segment.
• Nhaûûy xa (FAR) : 1 taùùc vuïï nhaûûy sang segment
khaùùc.
• Cuùù phaùùp : JMP ñích
Chuong 8 : Cau truc DK va Vong lap 5
Cacùù leäänh chuyeåån ñieààu khieåån
Chuyeån ñieàu khieån voâ ñieàu kieän
Chuyeån ñieàu khieån coù ñieàu kieän
JMP [ SORT | NEAR PTR |FAR PTR ] DEST
JConditional destination
Ex : JNZ nhaõn ñích ;
Chuong 8 : Cau truc DK va Vong lap 6
LEÄÄNH LOOP
Coâng duïng : cho pheùp laëp 1 coâng vieäc vôùi 1 soá laàn naøo ñoù.
Moãi laàn laëp CX giaûm ñi 1 ñôn vò. Voøng laëp chaám döùt khi CX =0.
Ex 1 : xuaát ra maøn hình 12 doøng goàm caùc kyù töï A.
MOV CX, 12 * 80
MOV DL, ‘A’
NEXT :
MOV AH, 2
INT 21H
LOOP NEXT
Chuong 8 : Cau truc DK va Vong lap 7
LOOP (tt)
Ex : coù 1 Array A goàm 6 bytes, cheùp A sang array B – duøng SI vaø
DI ñeå laáy Offset
MOV SI, OFFSET A
MOV DI, OFFSET B
MOV CX, 6
MOVE_BYTE :
MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP MOVE_BYTE
A DB 10H,20H,30H,40H,50H,60H
B DB 6 DUP (?)
Chuong 8 : Cau truc DK va Vong lap 8
CAÙÙC LEÄÄNH LUAÄÄN LYÙÙ
Löu yù veà caùc toaùn töû LOGIC :
AND 2 Bit : keát quaû laø 1 khi vaø chæ khi 2 bit laø 1
OR 2 Bit : keát quaû laø 1 khi 2 Bit coù bit laø 1
XOR 2 Bit : keát quaû laø 1 chæ khi 2 bit khaùc nhau
NOT 1 Bit : laáy ñaûo cuûa Bit naøy
Löu yù veà thanh ghi côø :
Côø ZERO ñöôïc laäp khi taùc vuï cho keát quaû laø 0.
Côø CARRY ñöôïc laäp khi coäng keát quaû bò traøn hay tröø phaûi möôïn.
Côø SIGN ñöôïc laäp khi bit daáu cuûa keát quaû laø 1, töùc keát quaû laø soá aâm.
Chuong 8 : Cau truc DK va Vong lap 9
Leäänh AND
Coâng duïng :
Leänh naøy thöïc hieän pheùp AND giöõa 2 toaùn haïng, keát quaû cuoái
cuøng chöùa trong toaùn haïng ñích.
Duøng ñeå xoùa caùc bit nhaát ñònh cuûa toaùn haïng ñích giöõ nguyeân
caùc bit coøn laïi.
Cuù phaùp : AND Destination , Source
Muoán vaäy ta duøng 1 maãu bit goïi laø maët naï bit (MASK),
caùc bit maët naï ñöôïc choïn ñeå sao cho caùc bit töông öùng
cuûa ñích ñöôïc thay ñoåi nhö mong muoán.
Chuong 8 : Cau truc DK va Vong lap 10
Leäänh AND
Ex1 : xoaù bit daáu cuûa AL, giöõ nguyeân caùc bit coøn laïi :
duøng AND vôùi 01111111b laøm maët naï
AND AL, 7FH
Ex2 :
MOV AL, ‘5’ ; Ñoåi maõ ASCII cuûa soá
AND AL, 0FH ; thaønh soá töông öùng.
Ex3 :
MOV DL, ‘a’ ; Ñoåi chöõ thöôøng thaønh chöõ hoa.
AND DL, 0DFH ; thaønh soá töông öùng.
Mask bits
Mask bits
Chuong 8 : Cau truc DK va Vong lap 11
LEÄÄNH OR
Coâng duïng : duøng ñeå baät leân 1 soá bit vaø giöõ nguyeân caùc bit khaùc.
Cuù phaùp : OR destination, source
Ex1 :
OR AL , 10000001b ; baät bit cao nhaát vaø bit thaáp nhaát trong thanh ghi AL leân 1
Ex 2:
MOV AL , 5 ; ñoåi 0..9 thaønh kyù soá
OR AL , 30h ; ASCII töông öùng.
Ex 3:
OR AL , AL ; kieåm tra moät thanh ghi coù = 0.
Neáu : côø ZF ñöôïc laäp AL =0
côø SIGN ñöôïc laäp AL <0
côø ZR vaø côø SIGN khoâng ñöôïc laäp AL >0
Chuong 8 : Cau truc DK va Vong lap 12
Chuong 8 : Cau truc DK va Vong lap 13
LEÄÄNH XOR
Coâng duïng : duøng ñeå taïo ñoà hoïa maøu toác ñoä cao.
Cuù phaùp : XOR destination, source
Ex : laät bit cao cuûa AL 2 laàn
MOV AL , 00111011b ;
XOR AL, 11111111b ; AL = 11000100b
XOR AL, 11111111b ; AL = 00111011b
Chuong 8 : Cau truc DK va Vong lap 14
LEÄÄNH TEST
Cuù phaùp : TEST destination, source
Ex : kieåm tra bit 13 trong DX laø 0 hay 1
TEST DX, 2000h
JZ BitIs0
BitIs1 : bit 13 is 1
BitIs0 : bit 13 is 0
Ñeå kieåm tra 1 bit naøo ñoù chæ caàn
ñaët bit 1 vaøo ñuùng vò trí bit caàn
kieåm tra vaø khaûo saùt côø ZF.
(neáu bit kieåm laø 1 thì ZF seõ xoaù,
ngöôïc laïi ZF ñöôïc laäp.
Coâng duïng : duøng ñeå khaûo saùt trò cuûa töøng bit hay nhoùm bit.
Test thöïc hieän gioáng leänh AND nhöng khoâng laøm thay ñoåi toaùn haïng ñích.
Chuong 8 : Cau truc DK va Vong lap 15
MINH HOÏÏA LEÄÄNH TEST
MOV AH, 2
INT 17h
TEST AL , 00100000b ; Test bit 5, neáu bit 5 = 1 maùy in heát giaáy.
Ex : kieåm tra traïng thaùi maùy in. Interrupt 17H trong BIOS seõ kieåm tra
traïng thaùi maùy in, sau khi kieåm tra AL seõ chöùa traïng thaùi maùy in. Khi bit 5
cuûa AL laø 1 thì maùy in heát giaáy.
Leänh TEST cho pheùp test nhieàu bit 1 löôït.
Chuong 8 : Cau truc DK va Vong lap 16
MINH HOÏÏA LEÄÄNH TEST(tt)
TEST AL, 1 ; AL chöùa soá chaún ?
JZ A1 ; neáu ñuùng nhaûy ñeán A1.
Ex :vieát ñoaïn leänh thöïc hieän leänh nhaûy ñeán nhaõn A1 neáu AL chöùa soá
chaün.
Chuong 8 : Cau truc DK va Vong lap 17
Leäänh CMP
Cuù phaùp : CMP destination , source
Coâng duïng : so saùnh toaùn haïng ñích vôùi toaùn haïng nguoàn
baèng caùch laáy toaùn haïng ñích – toaùn haïng nguoàn.
Hoaït ñoäng : duøng pheùp tröø nhöng khoâng coù toaùn haïng
ñích naøo bò thay ñoåi.
Caùc toaùn haïng cuûa leänh CMP khoâng theå cuøng laø caùc oâ nhôù.
leänh CMP gioáng heät leänh SUB tröø vieäc toaùn haïng ñích khoâng thay ñoåi.
Chuong 8 : Cau truc DK va Vong lap 18
LEÄÄNH NHAÛÛY COÙÙ ÑIEÀÀU KIEÄÄN
Cuù phaùp : Jconditional destination
Coâng duïng : nhôø caùc leänh nhaûy coù ñieàu kieän, ta môùi moâ phoûng ñöôïc caùc phaùt bieåu
coù caáu truùc cuûa ngoân ngöõ caáp cao baèng Assembly.
Phaïm vi
Chæ nhaûy ñeán nhaõn coù khoaûng caùch töø -128 ñeán +127 byte so vôùi
vò trí hieän haønh.
Duøng caùc traïng thaùi côø ñeå quyeát ñònh coù nhaûy hay khoâng?
Chuong 8 : Cau truc DK va Vong lap 19
LEÄÄNH NHAÛÛY COÙÙ ÑIEÀÀU KIEÄÄN
Hoaït ñoäng
ñeå thöïc hieän 1 leänh nhaûy CPU nhìn vaøo caùc thanh ghi côø.
neáu ñieàu kieän cuûa leänh nhaûy thoûa, CPU seõ ñieàu chænh IP troû ñeán
nhaõn ñích caùc leänh sau nhaõn naøy seõ ñöôïc thöïc hieän.
……………
MOV AH, 2
MOV CX, 26
MOV DL, 41H
PRINT_LOOP :
INT 21H
INC DL
DEC CX
JNZ PRINT_LOOP
MOV AX, 4C00H
INT 21H
Chuong 8 : Cau truc DK va Vong lap 20
LEÄÄNH NHAÛÛY DÖÏÏA TREÂN KEÂ ÁÁT QUAÛÛ SO SAÙÙNH
CAÙÙC TOAÙÙN HAÏÏNG KHOÂNG DAÂ ÁÁU.
Thöôøng duøng leänh CMP Opt1 , Opt2 ñeå xeùt ñieàu kieän nhaûy hoaëc
döïa treân caùc côø.
Nhaûûy neááu Not (Opt1<Opt2)JNB
Nhaûûy neááu Opt1 >= Opt2JAE
Nhaûûy neááu Opt1 <= Opt2JNBE
Nhaûûy neááu Opt1 > Opt2JA
Nhaûûy neááu 2 toaùùn haïïng khaùùc nhau.JNE
Nhaûûy neááu keáát quaûû so saùùnh laøø khaùùc nhau. JNZ
Nhaûûy neááu 2 toaùùn haïïng baèèng nhauJE
Nhaûûy neááu keáát quaûû so saùùnh = 0JZ
Chuong 8 : Cau truc DK va Vong lap 21
LEÄÄNH NHAÛÛY DÖÏÏA TREÂN KEÂ ÁÁT QUAÛÛ SO SAÙÙNH
CAÙÙC TOAÙÙN HAÏÏNG KHOÂNG DAÂ ÁÁU (ctn) .
Nhaûûy neááu Not (Opt1 > Opt2)JNA
Nhaûûy neááu Opt1<=Opt2JBE
Nhaûûy neááu coùù CarryJC
Nhaûûy neááu Not(Opt1 >= Opt2)JNAE
Nhaûûy neááu Opt1 < Opt2JB
Nhaûûy neááu khoâng coâ ùù Carry.JNC
Chuong 8 : Cau truc DK va Vong lap 22
LEÄÄNH NHAÛÛY DÖÏÏA TREÂN KEÂ ÁÁT QUAÛÛ SO SAÙÙNH
CAÙÙC TOAÙÙN HAÏÏNG COÙÙ DAÁÁU .
Nhaûûy neááu Not (Opt1 > Opt2)JNG
Nhaûûy neááu Opt1 <= Opt2JLE
Nhaûûy neááu Not (Opt1 >= Opt2)JNGE
Nhaûûy neááu Opt1 < Opt2 JL
Nhaûûy neááu Not (Opt1 < Opt2)JNL
Nhaûûy neááu Opt1>=Opt2JGE
Nhaûûy neááu Not(Opt1 <= Opt2)JNLE
Nhaûûy neááu Opt1>Opt2JG
Chuong 8 : Cau truc DK va Vong lap 23
LEÄÄNH NHAÛÛY DÖÏÏA TREÂN CAÂ ÙÙC CÔØØ .
Nhaûûy neááu PF =0JNP
Nhaûûy neááu parity chaúúnJP
Nhaûûy neááu traøøn trò JNO
Nhaûûy neááu Opt1 <= Opt2JLE
Nhaûûy neááu Not (Opt1 >= Opt2)JNGE
Nhaûûy neááu Opt1 < Opt2 JL
Nhaûûy neááu ñaõ traõ øøn tròJO
Nhaûûy neááu SF =0JNS
Nhaûûy neááu SF=1JS
Nhaûûy neááu CX=0JCXZ
Chuong 8 : Cau truc DK va Vong lap 24
CAÙC VÒ DUÏ MINH HOÏA LEÄNH NHAÛY COÙ ÑK
Ex1 : tìm soá lôùn hôn trong 2 soá
chöùa trong thanh ghi AX vaø BX .
Keát quaû ñeå trong DX
; giaû söû AX laø soá lôùn hôn.
; IF AX >=BX then
; nhaûy ñeán QUIT
; ngöôïc laïi cheùp BX vaøo DX
MOV DX, AX
CMP DX, BX
JAE QUIT
MOV DX, BX
QUIT :
MOV AH,4CH
INT 21H
…………
Chuong 8 : Cau truc DK va Vong lap 25
CAÙC VÍ DUÏ MINH HOÏA LEÄNH NHAÛY COÙ ÑK
Ex1 : tìm soá nhoû nhaát trong 3 soá chöùa trong thanh ghi ALø BL vaø
CL . Keát quaû ñeå trong bieán SMALL
MOV SMALL, AL
CMP SMALL, BL
JBE L1
MOV SMALL, BL
L1 :
CMP SMALL, CL
JBE L2
MOV SMALL, CL
L2 : . . .
; giaû söû AL nhoû nhaát
; neáu SMALL <= BL thì
Nhaûy ñeán L1
; neáu SMALL <= CL thì
; Nhaûy ñeán L2
; CL laø soá nhoû nhaát
Chuong 8 : Cau truc DK va Vong lap 26
Caùùc leäänh dòch vaøø quay bit
SHL (Shift Left) : dòch caùc bit cuûa toaùn haïng
ñích sang traùi
Cuù phaùp : SHL toaùn haïng ñích ,1
Dòch 1 vò trí.
Cuù phaùp : SHL toaùn haïng ñích ,CL
Dòch n vò trí trong ñoù CL chöùa soá bit caàn dòch.
H o a ï t ñ o ä n g
: m o ä t g i a ù
t r ò 0 s e õ ñ ö
ô ï c ñ ö a v a ø o
v ò t r í
b e â n pha û i
n ha á t c u û a t
o a ù n haï n g
ñ íc h, c o ø n b
it m s b
c u û a n o ù ñ ö
ô ï c ñ ö a v a ø o
c ô ø C F
Chuong 8 : Cau truc DK va Vong lap 27
Caùùc leäänh dòch vaøø quay bit
Ex : DH chöùa 8Ah, CL chöùa 3.
SHL DH, CL ; 01010000b
? Cho bieát keát quaû cuûa :
SHL 1111b, 3
MT thöïc hieän pheùp nhaân baèng
dòch traùi
Chuong 8 : Cau truc DK va Vong lap 28
leäänh dòch phaûûi SHR
Coâng duïng : dòch caùc bit cuûa toaùn haïng ñích sang beân
phaûi.
Cuù phaùp : SHR toaùn haïng ñích , 1
MT thöïc hieän pheùp chia baèng
dòch phaûi
Hoaït ñoäng : 1 giaù trò 0 seõ ñöôïc ñöa vaøo bit msb cuûa toaùn
haïng ñích, coøn bit beân phaûi nhaát seõ ñöôïc ñöa vaøo côø CF.
SHR toaùn haïng ñích , CL ; dòch phaûi n bit trong ñoù CL chöùa n
Chuong 8 : Cau truc DK va Vong lap 29
leäänh dòch phaûûi SHR
Ex : shr 0100b, 1 ; 0010b = 2
Ñoái vôùi caùc soá leû, dòch phaûi seõ chia ñoâi noù vaø laøm troøn
xuoáng soá nguyeân gaàn nhaát.
Ex : shr 0101b, 1 ; 0010b = 2
Chuong 8 : Cau truc DK va Vong lap 30
Chuong 8 : Cau truc DK va Vong lap 31
Chuong 8 : Cau truc DK va Vong lap 32
Chuong 8 : Cau truc DK va Vong lap 33
Chöông trình con
Coù vai troø gioáng nhö chöông trình
con ôû ngoân ngöõ caáp cao.
ASM coù 2 daïng chöông trình con : daïng FAR vaø
daïng NEAR.
Leänh goïi CTC
naèm khaùc ñoaïn
boä nhôù vôùi CTC
ñöôïc goïi
Leänh goïi CTC
naèm cuøng ñoaïn
boä nhôù vôùi CTC
ñöôïc goïi
Chuong 8 : Cau truc DK va Vong lap 34
BIEÅÅU DIEÃN CAÃ ÁÁU TRUÙÙC LOGIC MÖÙÙC CAO
Duø Assembly khoâng coù phaùt bieåu IF, ELSE, WHILE,
REPEAT, UNTIL,FOR,CASE nhöng ta vaãn coù th
Các file đính kèm theo tài liệu này:
- Cau Truc May Tinh & ASM.pdf