Các trình hợp dịch nói chung dễ tạo hơn so với các chương trình dịch cho ngôn ngữ cấp cao. Những trình hợp ngữ đầu tiên xuất hiện từ những thập niên 1950, trong buổi đầu sơ khai của máy tính đã tạo ra một bước ngoặt lớn đối với những lập trình viên vốn rất mệt mỏi vì việc lập trình bằng ngôn ngữ máy.
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 10Chöông 7 : Maûng vaø caùc cheá ñoä ñòa chæ 91 MOV AL,[DI] ; AL chöùa phaàn töû thöù nhaát ; tìm phaàn töû lôùn nhaát FIND_BIG: INC SI ; SI troû tôùi phaàn töû tieáp theo CMP [SI],AL ; phaàn töû tieáp theo > phaàn töû thöù nhaát ING NEXT ; khoâng , tieáp tuïc MOV DI,SI ; DI chöùa ñòa chæ cuûa phaàn töû lôùn nhaát MOV AL,[DI] ; AL chöùa phaàn töû lôùn nhaát NEXT: LOOP FIND_BIG ; swap phaàn töû lôùn nhaát vôùi phaàn töû cuoái cuøng CALL SWAP DEC BX ; N= N-1 JNE SORT_LOOP ; laëp neáu N0 END_SORT: POP SI POP DX POP CX POP BX RET SELECT ENDP SWAP PROC ; ñoåi choã 2 phaàn töû cuûa maûng ; input : SI= phaàn töû thöù nhaát ; DI = phaàn töû thöù hai ; output : caùc phaàn töû ñaõ trao ñoåi PUSH AX ; caát AX MOV AL,[SI] ; laáy phaàn töû A[i] XCHG AL,[DI] ; ñaët noù treân A[k] MOV [SI],AL ; ñaët A[k] treân A[i] POP AX ; laáy laïi AX RET SWAP ENDP Sau khi dòch chöông trình , coù theå duøng DEBUG ñeå chaïy thöû vaø test keát quûa . 7.4 Maûng 2 chieàu Maûng 2 chieàu laø moät maûng cuûa moät maûng , nghóa laø moät maûng 1 chieàu maøcaùc phaàn töû cuûa noù laø moät maûng 1 chieàu khaùc . Coù theå hình dung maûng 2 chieàu nhömoät ma traän chöõ nhaät . Ví duï maûng B goàm coù 3 haøng vaø 4 coät ( maûng 3x4) nhö sau :Chöông 7 : Maûng vaø caùc cheá ñoä ñòa chæ 92 ROW COLUMN 1 2 3 4 1 B[1,1] B[1,2] B[1,3] B[1,4] 2 B[2,1] B[2,2] B[2,3] B[2,4] 3 B[3,1] B[3,2] B[3,3] B[3,4] Bôûi vì boä nhôù laø 1 chieàu vì vaäy caùc phaàn töû cuûa maûng 2 chieàu phaûi ñöôïc löu tröõ treânboä nhôù theo kieåu laàn löôït . Coù 2 caùch ñöôïc duøng :• Caùch 1 laø löu tröõ theo thöù töï doøng : treân maûng löu tröõ caùc phaàn töû cuûa doøng 1 roài ñeán caùc phaàn töû cuûa doøng 2 ...• Caùch 2 laø löu tröõ theo thöù töï coät : treân maûng löu tröõ caùc phaàn töû cuûa coät 1 roài ñeán caùc phaàn töû cuûa coät 2... Giaû söû maûng B chöùa 10,20,30,40 treân doøng 1 chöùa 50,60,70,80 treân doøng 2 chöaù 90,100,110,120 treân doøng 3 Theo traät töï haøng chuùng ñöôïc löu tröõ nhö sau : B DW 10,20,30,40 DW 50,60,70,80 DW 90,100,110,120 Theo traät töï coät chuùng ñöôïc löu tröõ nhö sau : B DW 10,50,90 DW 20,60,100 DW 30,70,110 DW 40,80,120 Haàu heát caùc ngoân ngöõ caáp cao bieân dòch maûng 2chieàu theo traät töï doøng .Trong ASM , chuùng ta coù theå duøng moät trong 2 caùch : Neáu caùc thaønh phaàn cuûa moät haøng ñöôïc xöû lyù laàn löôït thì caùch löu tröõ theotraät töï haøng ñöôïc duøng . Ngöôïc laïi thì duøng caùch löu tröõ theo traät töï coät . Xaùc ñònh moät phaàn töû treân maûng 2 chieàu : Giaû söû raèng maûng A goàm MxN phaàn töû löu tröõ theo traät töï doøng . Goò S laøñoä lôùn cuûa moät phaàn töû : S=1 neáu phaàn töû laø byte , S=2 neáu phaàn töû laø töø . Ñeå tìmphaàn töû thöù A[i,j] thì caàn tìm : haøng i vaø tìm phaàn töû thöù j treân haøng naøy . Nhö vaäyphaûi tieán haønh qua 2 böôùc : Böôùc 1: Haøng 1 baét ñaàu taïi vò trí A . Vì moãi haøng coù N phaàn töû , do ñoù Haøng 2 baét ñaàu taïi A+ NxS . Haøng 3 baét ñaàu taïi A+2xNxS . Haøng thöù i baét ñaàu taïi A+(i-1)xSxN . Böôùc 2: Phaàn töû thöù j treân moät haøng caùch vò trí ñaàu haøng (j-1)xS byte Töø 2 böôùc treân suy ra raèng trong maûng 2 chieàu NxM phaàn töû maø chuùng ñöôïclöu tröõ theo traät töï haøng thì phaàn töû A[i,j] coù ñòa chæ ñöôïc xaùc ñònh nhö sau : A+((i-1)xN + (j-1))x S (1)Chöông 7 : ...