Cho biết giá trị của các thanh ghi ở bên phải, khi mooci lệnh của đoạn chương trình sau được thực thi. Giả 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
38 trang |
Chia sẻ: thucuc2301 | Lượt xem: 655 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng: Cấu trúc máy tính Lập trình hợp ngữ - Chương 7: Toán tử số học - Ngô Phước Nguyên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Toaùn töû soá hoïcToaùn töûCuù phaùpCoâng duïng++ expressionDöông-- expressionAâm*exp1*exp2Nhaân/exp1/exp2ChiaMODexp1 mod exp2Phaàn dö+exp1 + exp2Coäng-exp1 - exp2TröøSHLexp shl nDòch exp sang traùi n bitSHRexp shr nDòch exp sang phaûi n bit11/27/20201Chuong 7 Cac phep dinh vi dia chiToaùn töû logicNotNot expressionAndExp1 and exp2OrExp1 or exp2XorExp1 xor exp2Ex : MOV AH , 8 OR 4 AND 2 MOV AL, NOT (20 XOR 0011100B)11/27/20202Chuong 7 Cac phep dinh vi dia chiToaù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.EQExp1 EQ exp2True neáu Exp1 = exp2NEExp1 NE exp2True neáu Exp1 exp2LTExp1 LT exp2True neáu Exp1 exp2GEExp1 GE exp2True neáu Exp1 >= exp211/27/20203Chuong 7 Cac phep dinh vi dia chiÑOÄ ÖU TIEÂN TOAÙN TÖÛTOAÙN TÖÛMOÂ TAÛ( )Daáu ngoaëc+ , - Daáu döông , aâm* / MODNhaân , chia, Modulus+ , - Coäng, tröøÑoä öu tieângiaûm daàn11/27/20204Chuong 7 Cac phep dinh vi dia chiToaùn töû SEGCuù 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. 11/27/20205Chuong 7 Cac phep dinh vi dia chiToaùn töû OFFSETCuù 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 :AXTABLE DB ?MOV AX, SEG TABLEMOV DS, AXMOV DX, OFFSET Table 11/27/20206Chuong 7 Cac phep dinh vi dia chiTOAÙ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.11/27/20207Chuong 7 Cac phep dinh vi dia chiTOAÙN TÖÛ PTRCuù phaùp : type PTR expressionCho pheùp thay ñoåi daïng cuûa expressionneá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 byte11/27/20208Chuong 7 Cac phep dinh vi dia chiToaù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ïngCoù 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.11/27/20209Chuong 7 Cac phep dinh vi dia chiToaù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 nhauvaø ñöôï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)11/27/202010Chuong 7 Cac phep dinh vi dia chi11/27/202011Chuong 7 Cac phep dinh vi dia chi11/27/202012Chuong 7 Cac phep dinh vi dia chiĐỊNH VỊ THANH GHIGiá 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 AX11/27/202013Chuong 7 Cac phep dinh vi dia chi11/27/202014Chuong 7 Cac phep dinh vi dia chiEX1 : 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 : 11/27/202015Chuong 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 BX11/27/202016Chuong 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. 11/27/202017Chuong 7 Cac phep dinh vi dia chiÑÒA CHÆ HIEÄU DUÏNGToaù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 , DINhoùm thanh ghi neàn : BX, BPÑòa chæ tröïc tieáp : soá 16 bitCaù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.11/27/202018Chuong 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]11/27/202019Chuong 7 Cac phep dinh vi dia chi11/27/202020Chuong 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æ 1000h16 bit : WORD PTR [1000H]Tham khaûo 2 byte boä nhôù lieân tieáp ôû ñòa chæ 1000h vaø 1001h11/27/202021Chuong 7 Cac phep dinh vi dia chiEx : Tính toång 1 array coù 5 phaàn töûMOV BX, OFFSET LISTMOV AX, 0MOV 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, 5hSUM DW 0 Caùch thöïc hieän :Laáy ñòa chæ cuûa List vaøo BXDöï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.11/27/202022Chuong 7 Cac phep dinh vi dia chiEx : Tính toång 1 array coù 5 phaàn töûA 100MOV BX, 0120MOV AX, 0MOV AL, [BX]ADD AL , [BX+1]ADD AL , [BX+2]ADD AL , [BX+3]ADD AL , [BX+4]MOV [0125], AX -A 120DB 10, 20, 40, 2, 5DW 0CHAÏY CT naøy baèng DEBUG11/27/202023Chuong 7 Cac phep dinh vi dia chiTaäp leänhLeänh MOV : YÙ nghóa : copy giaù trò töø toaùn haïng nguoàn toaùn haïng ñíchCuù phaùp : MOV dest , sourceYeâu caàu : Dest vaø source cuøng kieåuDaï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, mem1611/27/202024Chuong 7 Cac phep dinh vi dia chiMinh hoaï leänh MOVMOV AX, CXMOV DL, BHMOV [SI+1000h], BP ; [SI+1000h, SI+1001h] BPMOV DX, [1000h] ; DX [1000h, 1001h]MOV DI, 12hMOV AL, 12hMOV BYTE PTR [1000h], 12hMOV WORD PTR [2000h] , 1200hMOV [BX] , DSMOV SS, [2000h] 11/27/202025Chuong 7 Cac phep dinh vi dia chiLeä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ïnChuù yù11/27/202026Chuong 7 Cac phep dinh vi dia chiMinh hoïa leänh MOVEx1 : 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,90Truy 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]11/27/202027Chuong 7 Cac phep dinh vi dia chiMinh hoïa leänh MOVEx2 : 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.11/27/202028Chuong 7 Cac phep dinh vi dia chiAÙ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æ 700hsang 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.11/27/202029Chuong 7 Cac phep dinh vi dia chiLeänh LEA (Load Effective Address)Cuù phaùp : LEA REG | MEMyù nghóa : naïp ñòa chæ Offset vaøo thanh ghi ñeå khôûi ñoäng Reg.Ex : MOV DX, OFFSET MESTöông ñöông vôùi LEA DX, MES Ex : LEA BX, [1000h] ; BX 1000h LEA SI, [DI][BX][2000h] ; SI DI + BX + 2000h11/27/202030Chuong 7 Cac phep dinh vi dia chiLeänh XCHG (XCHANGE)Cuù phaùp : XCHG DEST , SOURCEyù 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åu2 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, BLMOV VAR1, VAR2 ; khoâng hôïp leä, phaûi duøng Reg taïm11/27/202031Chuong 7 Cac phep dinh vi dia chiLeänh PUSHCuù phaùp : PUSH REG16PUSH MEM16PUSH SEGREGÑaåy toaùn haïng nguoàn 16 bit vaøo STACKEx : PUSH DI ; [SS :SP+1, SS :SP] DIEx : PUSH CS ; [SS :SP+1, SS :SP] CS11/27/202032Chuong 7 Cac phep dinh vi dia chiLeänh POPCuù phaùp : POP REG16POP MEM16POP SEGREGLaá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]11/27/202033Chuong 7 Cac phep dinh vi dia chiLeänh INCuù phaùp : IN ACCUM, IMMED8IN ACCUM, DXnhaäp döõ lieäu töø coång xuaát nhaäp vaøo thanh ghi tích luyõ ALhay AX. Tröôøng hôïp AX seõ nhaäp byte thaáp tröôùc, byte cao sau.Ex : IN AL ,61h IN AX, 40hDaïng leänh coù Reg DX duøng Ñeå cho coång coù ñòa chæ 16 bit Ex : MOV DX, 378H IN AL, DX11/27/202034Chuong 7 Cac phep dinh vi dia chiSUMMARYDuø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, ARRAY1INC AXADD AH, 1SUB AX, ARRAY1 ARRAY1 DW 10h, 20h 11/27/202035Chuong 7 Cac phep dinh vi dia chiSUMMARYGiả 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, @DATAMOV DS, AXMOV AX, 0MOV 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 PTR111/27/202036Chuong 7 Cac phep dinh vi dia chiCho 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 0HMOV AL, BYTE PTR FIRST+1 ; AL =MOV BX, WORD PTR SECOND+2 ; BX =MOV DX, OFFSET FIRST + 2 ; DX =MOV AX, 4C00HINT 21H.FIRST DW 1234hSECOND DW 16385THIRD DB 10,20,30,4011/27/202037Chuong 7 Cac phep dinh vi dia chiBaøi taäp Laäp trìnhBaø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öï : BKyù töï ñöùng tröôùc : AKyù töï ñöùng sau : CBaø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 :11/27/202038Chuong 7 Cac phep dinh vi dia chi
Các file đính kèm theo tài liệu này:
- xk_cau_truc_may_tinh_asm_chuong_7_toan_tu_6209_2021498.ppt