Thông tin tài liệu:
Hầu hết các trình hợp dịch đều hỗ trợ macro nhằm giúp cho việc thay thế một nhóm lệnh bằng một định danh ngắn gọn. Trong quá trình dịch, nhóm lệnh tương ứng sẽ được chèn trực tiếp vào vị trí macro thay vì một lời gọi hàm (subroutine).
Nội dung trích xuất từ tài liệu:
[Ngôn Ngữ Máy] Đề Cương Bài Giảng Hợp Ngữ (assembly language) phần 9Chöông 7 : Maûng vaø caùc cheá ñoä ñòa chæ 80 Chöông 7: MAÛNG VAØ CAÙC CHEÁ ÑOÄ ÑÒA CHÆ Trong chöông naøy chuùng ta seõ ñeà caäp ñeán maûng moät chieàu vaø caùc kyõ thuaät xöûlyù maûng trong Assembly . Phaàn coøn laïi cuûachöông naøy seõ trình baøy caùc cheá ñoä ñòachæ. 7.1 Maûng moät chieàu Maûng moät chieàu laø moät danh saùch caùc phaàn töû cuøng loaïi vaø coù traät töï . Coùtraät töï coù nghóa laø coù phaàn töû thöù nhaát , phaàn töû thöù hai , phaàn töû thöù ba ... Trongtoaùn hoïc , neáu A laø moät maûng thì caùc phaàn töû cuûa maûng ñöôïc ñònh nghóa laøA[1},A[2] , A[3} ... Hình veõ laø döôùi ñaây laø maûng A coù 6 phaàn töû . Index 1 A[1] 2 A[2] 3 A[3] 4 A[4] 5 A[5] 6 A[6] Trong chöông 1 chuùng ta ñaõ duøng toaùn töû giaû DB vaø DW ñeå khai baùo maûngbyte vaø maûng töø . Ví duï , moät chuoåi 5 kyù töï coù teân laø MSG MSG DB ‘abcde’hoaëc moät maûng töø W goàm 6 soá nguyeân maø giaù trò ban ñaâuø cuûa chuùng laø10,20,30,40.50 vaø 60 W DW 10,20,30,40,50,60 Ñòa chæ cuûa bieán maûng goïi laø ñòa chæ cô sôû cuûa maûng ( base address of thearray) . Trong maûng W thì ñòa chæ cô sôû laø 10 .Neáu ñòa chæ offset cuûa W laø 0200h thìtrong boä nhôù maûng 6 phaàn töû noùi treân seõ nhö sau : Offset address Symbolic address Decimal content 0200h W 10 0202h W+2h 20 0204h W+4h 30 0206h W+6h 40 0208h W+8h 50 020Ah W+Ah 60Chöông 7 : Maûng vaø caùc cheá ñoä ñòa chæ 81 Toaùn töû DUP ( Duplicate) Coù theå ñònh nghóa moät maûng maø caùc phaàn töû cuûa noù coù cuøng moät giaù trò banñaàu baèng pheùp DUP nhö sau : repeat_count DUP ( value) laëp laïi moät soá ( VALUE) n laàn ( n = repeat_count) Ví duï : GAMMA DW 100 DUP (0) ; taïo moät maûng 100 töø maø giaù trò ban ñaâuø laø 0 . DELTA DB 212 DUP (?) ; taïo moät maûng 212 byte giaù trò chöa xaùc ñònh DUP coù theå loàng nhau , ví duï : LINE DB 5,4,3 DUP (2, 3 DUP (0) ,1) töông ñöông vôùi : LINE DB 5,4,2,0,0,0,1,2,0,0,0,1,2,0,0,0,1 Vò trí caùc phaàn töû cuûa moät maûng Ñòa chæ cuûa moät phaàn töû cuûa maûng coù theå ñöôïc xaùc ñònh baèng caùch coängmoät haèng soá vôùi ñòa chæ cô sôû . Giaû söû A laø moät maûng vaø S chæ ra soá byte cuûa moätphaàn töû cuûa maûng ( S=1 ñoái vôùi maûng byte vaø S=2 ñoái vôùi maûng töø ) . Vò trí cuûa caùcphaàn töû cuûa maûng A coù theå tính nhö sau : Position Location 1 A 2 A+1xS 3 A+2xS . . . . . . N A+(N-1)xS Ví duï : Trao ñoåi phaàn töû thöù 10 vaø thöù 25 cuûa maûng töø W . Phaàn töû thöù 10 laø W[10] coù ñòa chæ laø W+9x2=W+18 Phaàn töû thöù 25 laø W[25] coù ñòa chæ laø W+24x2=W+48 Vì vaäy coù theå trao ñoåi chuùng nhö sau : MOV AX,W+18 ; AX = W[10] XCHG W+48,AX ; AX= W[25] MOV W+18, AX ; complete exchange 7.2 Caùc cheá ñoä ñòa chæ ( addressing modes)Chöông 7 : Maûng vaø caùc cheá ñoä ñòa chæ 82 Caùch thöùc chæ ra toaùn haïng trong leänh goïi laø cheá ñoä ñòa chæ . Caùc cheáñoä ñòa chæ thöôøng duøng laø :• Cheá ñoä ñòa chæ baèng thanh ghi ( register mode) : toaùn haïng laø thanh ghi• Cheá ñoä ñòa chæ töùc thôøi ( immediate mode) : toaùn haïng laø haèng soá• Cheá ñoä ñòa chæ tröïc tieáp ( direct mode) : toaùn haïng laø bieán Ví duï : MOV AX,0 ; AX laø register mode coøn 0 laø immediate mode ADD ALPHA,AX ; ALPHA laø direct mode Ngoaøi ra coøn coù 4 cheá ñoä ñòa chæ khaùc laø :• Ch ...