350 likes | 497 Views
Đại cương về hợp ngữ. GV: Phạm Viết Văn. Nội dung. Giới thiệu về CPU Nhắc lại về thanh ghi (Register) Ngôn ngữ máy và hợp ngữ Cách viết chương trình hợp ngữ Một số lệnh đơn giản. Nội dung. Giới thiệu về CPU Nhắc lại về thanh ghi (Register) Ngôn ngữ máy và hợp ngữ
E N D
Đạicươngvềhợpngữ GV: PhạmViếtVăn Hợp Ngữ
Nội dung • Giớithiệuvề CPU • Nhắclạivềthanhghi (Register) • Ngônngữmáyvàhợpngữ • Cáchviếtchươngtrìnhhợpngữ • Mộtsốlệnhđơngiản Hợp Ngữ
Nội dung • Giớithiệuvề CPU • Nhắclạivềthanhghi (Register) • Ngônngữmáyvàhợpngữ • Cáchviếtchươngtrìnhhợpngữ • Mộtsốlệnhđơngiản Hợp Ngữ
Giớithiệuvề CPU • CPU (Central Processing Unit) • Celeron: Pentium rútgọn • KiếntrúcNetBurst • Pentium II, III, IV, D,… • KiếntrúcCORE (2006) • Core Duo • Core 2 Duo (íttốnđiện, íttỏanhiệthơn) • KiếntrúcNehalem (2007) • Core i3, i5, i7: 4 nhân • Core i9: 6 nhân Hợp Ngữ
Nội dung • Giớithiệuvề CPU • Nhắclạivềthanhghi (Register) • Ngônngữmáyvàhợpngữ • Cáchviếtchươngtrìnhhợpngữ • Mộtsốlệnhđơngiản Hợp Ngữ
Register • Thanhghiđoạn (Segment Register) • Thanhghiđadụng (General Register) • Thanhghi con trỏvàchỉsố (Pointer & index register) • Thanhghicờ Hợp Ngữ
Register (tt) • Thanhghiđoạn (Segment Register) • CS (Code): địachỉđoạnmã • DS, ES (Data, Extra): địachỉđoạndữliệu • SS (Stack): địachỉđoạnngănxếp Hợp Ngữ
Register (tt) • Thanhghiđadụng (General Register) • AX (Accumulator): dùngchoviệc tínhtoánhoặc input/output • BX (Base): thanhghicơsở • CX (Counter):dùngcholệnhlặp • DX (Data): input/output hoặcnhân/chia AX BX CX DX Height H Low L Hợp Ngữ
Register (tt) • Thanhghi con trỏvàchỉsố (Pointer & Index Register) • IP (Instruction Pointer): địachỉ (ô) lệnhkếtiếp • SP (Stack Pointer) con trỏngănxếp • BP (Base Pointer): con trỏcơsở • SI: source index • DI: destination index Hợp Ngữ
Register (tt) • Thanhghicờ Hợp Ngữ
Nội dung • Giớithiệuvề CPU • Nhắclạivềthanhghi (Register) • Ngônngữmáyvàhợpngữ • Cáchviếtchươngtrìnhhợpngữ • Mộtsốlệnhđơngiản Hợp Ngữ
Ngônngữmáyvàhợpngữ • Chươngtrình: mộttậplệnhđượcđưavàobộnhớcho CPU thựchiện • Mỗiloại CPU cómộtngônngữmáyriêng. • Vídụ: máyngữtrên Intel 80x86 Hợp Ngữ
Ngônngữmáyvàhợpngữ • Lậptrìnhvớingônngữmáy • Khóviết • Khónhớ • Phảihiểurõtổchứcmáyđangsửdụng ==> Dùnghợpngữ Hợp Ngữ
Nội dung • Giớithiệuvề CPU • Nhắclạivềthanhghi (Register) • Ngônngữmáyvàhợpngữ • Cáchviếtchươngtrìnhhợpngữ • Mộtsốlệnhđơngiản Hợp Ngữ
Cáchviếtchươngtrìnhhợpngữ • Chươngtrìnhhợpngữđơngiản Hợp Ngữ
Cáchviếtchươngtrìnhhợpngữ (tt) Hợp Ngữ
Cáchviếtchươngtrìnhhợpngữ (tt) • Mộtsốloạibộnhớchươngtrình Hợp Ngữ
Cáchviếtchươngtrìnhhợpngữ (tt) • Qui tắcđặttên • Khôngđượcbắtđầubằngsố • Khôngphânbiệthoathường • Khôngđượcchứakítựtrống • Vídụvềđặttênsai Hợp Ngữ
Cáchviếtchươngtrìnhhợpngữ (tt) • Sốnguyênthậpphân 1, -1 307d • Sốnguyênnhịphân 1000b, 00000001b • Sốnguyênthậplụcphân (Hexadecimal) 20E0h, 1F00h FF00h 0FF00h Cóthểcóhoặckhôngcóchữ d Sốthậplụcbắtđầubằngchữphảithêmsố 0 vàophíatrước Hợp Ngữ
Cáchviếtchươngtrìnhhợpngữ (tt) • Cáchviếtkítự / chuỗi • ‘A’ hoặc“A”hoặc41h • “Hello”hoặc“He”, “llo” • ”Don’t forget me” • ‘Don”tforget me’ • Dùngdấuphẩy (,) đểnốichuỗi. • Kítựkếtthúcchuỗi$ Hợp Ngữ
Nội dung • Giớithiệuvề CPU • Nhắclạivềthanhghi (Register) • Ngônngữmáyvàhợpngữ • Cáchviếtchươngtrìnhhợpngữ • Mộtsốlệnhđơngiản Hợp Ngữ
Mộtsốlệnhcơbản (tt) Hợp Ngữ
Mộtsốlệnhcơbản • Khaibáobiếnkiểu byte • Ý nghĩa: khaibáobiếnkiểu byte vớiDB (Define Byte) • Cúpháp: Ten_bienDBGia_tri_khoi_tao • Vídụ: MSG DB10 • Khaibáobiếnkiểu WORD: • Ý nghĩa: khaibáobiếnkiểu word vớiDB (Define Word) • Cúpháp: Ten_bienDWGia_tri_khoi_tao • Vídụ: MSG DW456 Nếugiátrịkhôngxácđịnh dùngdấuchấmhỏi (?) Hợp Ngữ
Mộtsốlệnhcơbản (tt) • KhaibáohằngvớiEQU (equals) • Ý nghĩa: địnhnghĩahằngsố/ chuổi • Cúpháp: Ten_hangEQUgia_tri_hang • Vídụ: LF EQU0Fh Hợp Ngữ
Mộtsốlệnhcơbản (tt) • LệnhMOV (move) • Ý nghĩa: Sao chépdữliệutừnguồn sang đích • Cúpháp: MOVDich, Nguon • Dich, Nguon: vùngnhớ/thanhghi • Nguon: cóthểlàhằng • DichvàNguonkhôngthểlàvùngnhớcùnglúc • Khôngđưahằngvàothanhghiđoạn • Vídụ: MOVDS, BX Hợp Ngữ
Mộtsốlệnhcơbản (tt) • TráođổidữliệuvớiXCHG (exchange) • Ý nghĩa: tráođổidữliệunguồnvớiđích • Cúpháp: XCHGNguon, Dich • Dich, Nguon: vùngnhớ/thanhghicùngkíchcỡ • Dich, Nguon: khôngcùnglàvùngnhớ • Vídụ: XCHG AX, BX Hợp Ngữ
Mộtsốlệnhcơbản (tt) • LệnhcộngADD • Ý nghĩa: cộngthêmvàođíchmộttrịnguồn • Cúpháp: ADDDich, Nguon • Dich, Nguon: vùngnhớ/thanhghicùngkíchcỡ • Nguoncóthểlàhằng • Dich, Nguon: khôngcùnglàvùngnhớ • Vídụ: MOV AL, 9 ADD AL, 2; AL = 11 Hợp Ngữ
Mộtsốlệnhcơbản (tt) • LệnhtrừSUB (subtract) • Ý nghĩa: trừbớtcủađíchmộttrịnguồn • Cúpháp: SUBDich, Nguon • Dich, Nguon: vùngnhớ/thanhghicùngkíchcỡ • Nguoncóthểlàhằng • Dich, Nguon: khôngcùnglàvùngnhớ • Vídụ: MOV AL, 9 SUB AL, 2 ; AL = 7 Hợp Ngữ
Mộtsốlệnhcơbản (tt) • LệnhtăngINC (increase) • Ý nghĩa: tăngđíchlên 1 • Cúpháp: INCDich • Dich: vùngnhớ/thanhghi • Dich: sốnguyênkhôngdấu • Vídụ: MOV AL, 9 INC AL ; AL = 10 Hợp Ngữ
Mộtsốlệnhcơbản (tt) • LệnhgiảmDEC (decrease) • Ý nghĩa: giảmđíchbớt 1 • Cúpháp: DECDich • Dich: vùngnhớ/thanhghi • Dich: sốnguyênkhôngdấu • Vídụ: MOV AL, 9 DEC AL ; AL = 8 Hợp Ngữ
Mộtsốlệnhcơbản (tt) • NhậpvàokítựtừbànphímvàđưavàoAL MOV AH, 1 INT21h ;Mãcủakítựnhậpvàosẽđượctựđộnglưu ở thanhghi AL Hợp Ngữ
Mộtsốlệnhcơbản (tt) • HiểnthịmộtkítựtrongDL MOV AH, 2 MOV DL, ‘B‘ INT21h ; Lệnhnàylấykítựtrongthanhghi DL rađểhiểnthị Hợp Ngữ
Mộtsốlệnhcơbản (tt) • Hiểnthịmộtchuỗikítự MOV AH, 9 ;DS : DX => Chuỗi MOV BX, SEGChuoi MOV DS, BX MOV DX, OFFSETChuoi ;Xuấtchuỗi INT21h • MOV BX, @data • LEA DX, Chuoi • (Load Effective Address) Hợp Ngữ
Mộtsốlệnhcơbản (tt) • Lệnhkếtthúc MOV AH, 4Ch INT21h Hợp Ngữ
Chạychươngtrìnhhợpngữ • DùngchươngtrìnhEmu8086 Hợp Ngữ