Bài giảng Cấu trúc máy tính và ASM

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.

pdf570 trang | Chia sẻ: maiphuongdc | Lượt xem: 1506 | Lượt tải: 3download
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:

  • pdfCau Truc May Tinh & ASM.pdf
Tài liệu liên quan