Bài giảng Công nghệ thông tin - Chương 5: Nhập môn Assembly

ppt 38 trang huongle 2950
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ thông tin - Chương 5: Nhập môn Assembly", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_cong_nghe_thong_tin_chuong_5_nhap_mon_assembly.ppt

Nội dung text: Bài giảng Công nghệ thông tin - Chương 5: Nhập môn Assembly

  1. Chương 5 : Nhập môn Assembly HiểuHiểu ngônngôn ngữngữ máymáy vàvà ngônngôn ngữngữ Assembly.Assembly. TrìnhTrình hợphợp dịchdịch Assembler.Assembler. LýLý dodo nghiênnghiên cứucứu Assembly.Assembly. HiểuHiểu cáccác thànhthành phầnphần cơcơ bảnbản củacủa AssemblyAssembly NắmNắm đượcđược cấucấu trúctrúc củacủa 11 CTCT Assembly.Assembly. BiếtBiết viếtviết 11 chươngchương trìnhtrình Assembly.Assembly. BiếtBiết cáchcách dịch,dịch, liênliên kếtkết vàvà thựcthực thithi 11 chươngchương trìnhtrình Assembly.Assembly. 5/23/2021 Chuong 5 Nhap mon ASM 1
  2. Giới thiệu ngôn ngữ Assembly § GiúpGiúp khámkhám pháphá bíbí mậtmật phầnphần cứngcứng cũngcũng nhưnhư phầnphần mềmmềm máymáy tính.tính. § NắmNắm đượcđược cáchcách phầnphần cứngcứng MTMT làmlàm việcviệc vớivới hệhệ điềuđiều hànhhành vàvà hiểuhiểu đượcđược bằngbằng cáchcách nàonào 11 trìnhtrình ứngứng dụngdụng giaogiao tiếptiếp vớivới hệhệ điềuđiều hành.hành. § MộtMột MTMT hayhay mộtmột họhọ MTMT sửsử dụngdụng 11 tậptập lệnhlệnh mãmã máymáy riêngriêng cũngcũng nhưnhư 11 ngônngôn ngữngữ AssemblyAssembly riêng.riêng. 5/23/2021 Chuong 5 Nhap mon ASM 2
  3. Assembler § MộtMột chươngchương trìnhtrình viếtviết bằngbằng ngônngôn ngữngữ AssemblyAssembly muốnmuốn MTMT thựcthực hiệnhiện đượcđược tata phảiphải chuyểnchuyển thànhthành ngônngôn ngữngữ máy.máy. § ChươngChương trìnhtrình dùngdùng đểđể dịchdịch 11 filefile viếtviết bằngbằng AssemblyAssembly ngônngôn ngữngữ máymáy ,, gọigọi làlà AssemblerAssembler Có 2 chương trình dịch: MASM và TASM 5/23/2021 Chuong 5 Nhap mon ASM 3
  4. Lý do nghiên cứu Assembly § Đó là cách tốt nhất để học phần cứng MT và hệ điều hành. § Vì các tiện ích của nó . § Có thể nhúng các chương trình con viết bằng ASM vào trong cácchương trình viết bằng ngôn ngữ cấp cao . 5/23/2021 Chuong 5 Nhap mon ASM 4
  5. Lệnh máy § Là 1 chuổi nhị phân có ý nghĩa đặc biệt – nó ra lệnh cho CPU thực hiện tác vụ. § TácTác vụvụ đóđó cócó thểthể làlà :: didi chuyểnchuyển 11 sốsố từtừ vịvị trítrí nhớnhớ nàynày sangsang vịvị trítrí nhớnhớ khác.khác. CộngCộng 22 sốsố hayhay soso sánhsánh 22 số.số. 0 0 0 0 0 1 0 0 Add a number to the AL register 1 0 0 0 0 1 0 1 Add a number to a variable 1 0 1 0 0 0 1 1 Move the AX reg to another reg 5/23/2021 Chuong 5 Nhap mon ASM 5
  6. Lệnh máy (cont) § TậpTập lệnhlệnh máymáy đượcđược địnhđịnh nghĩanghĩa trước,trước, khikhi CPUCPU đượcđược sảnsản xuấtxuất vàvà nónó đặcđặc trưngtrưng chocho kiểukiểu CPUCPU § ExEx :: B5B5 0505 làlà 11 lệnhlệnh máymáy viếtviết dạngdạng sốsố hex,hex, dàidài 22 byte.byte. § ByteByte đầuđầu B5B5 gọigọi làlà OpcodeOpcode § ByteByte sausau 0505 gọigọi làlà toántoán hạnghạng OperandOperand Ýù nghĩa của lệnh B5 05 : chép giá trị 5 vào reg AL 5/23/2021 Chuong 5 Nhap mon ASM 6
  7. Cách viết 1 chương trình Assembly Soạn CT Dùng 1 phần mềm soạn thảo VB bất kỳ để soan TenCT.ASM CT Assembly như : NotePad, NC, màn hình C, Pascal CT có phần mở rộng là .ASM Dịch CT dùng MASM để dịch chương trình nguồn .ASM File Object. Liên kết CT dùng LINK để liên kết Object tạo tập tin thực hiện .EXE Chạy CT Gỏ tên tập tin thực hiện .EXE từ dấu nhắc DOS để chạy 5/23/2021 Chuong 5 Nhap mon ASM 7
  8. Dịch và nối kết chương trình MASM.EXE TenCT .ASM TenCT .OBJ LINK.EXE TenCT .MAP TenCT .LIST TenCT .CRF TenCT .EXE 5/23/2021 Chuong 5 Nhap mon ASM 8
  9. Một chương trình minh hoạ DOSSEG MOV DX, OFFSET MES .MODEL SMALL MOV AH, 9 .STACK 100h .DATA INT 21 MES DB “HELLO WORD”,’$’ MOV AH,4CH .CODE INT 21 MAIN PROC MOV AX, @DATA MAIN ENDP MOV DS, AX END MAIN 5/23/2021 Chuong 5 Nhap mon ASM 9
  10. Các file được tạo § SauSau khikhi dịchdịch thànhthành côngcông filefile nguồn.ASM,nguồn.ASM, tata cócó cáccác filefile :: § FileFile listinglisting :: filefile VBVB ,, cáccác dòngdòng cócó đánhđánh sốsố thứthứ tựtự mã.mã. § FileFile CrossCross referencereference § FileFile MapMap § FileFile ObjObj § FileFile EXEEXE 5/23/2021 Chuong 5 Nhap mon ASM 10
  11. File Listing § Microsoft (R) Macro Assembler Version 5.10 10/11/4 § Page 1-1 § 1 DOSSEG § 2 .MODEL SMALL § 3 .STACK 100H § 4 .DATA § 5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$" § 6 57 4F 52 44 24 § 7 .CODE § 8 0000 MAIN PROC § 9 0000 B8 R MOV AX,@DATA § 10 0003 8E D8 MOV DS, AX § 11 0005 B4 09 MOV AH,9 § 12 0007 BA 0000 R MOV DX, OFFSET MES § 13 000A CD 21 INT 21H § 14 000C B4 4C MOV AH,4CH § 15 000E CD 21 INT 21H § 16 0010 MAIN ENDP § 17 END MAIN § ♀◘Microsoft (R) Macro Assembler Version 5.10 10/11/4 5/23/2021 Chuong 5 Nhap mon ASM 11
  12. Map File § Start Stop Length Name Class § 00000H 0001FH 00020H _TEXT CODE § 00020H 0002AH 0000BH _DATA DATA § 00030H 0012FH 00100H STACK STACK § Origin Group § 0002:0 DGROUP § Program entry point at 0000:0010 5/23/2021 Chuong 5 Nhap mon ASM 12
  13. Giải thích § .model.model smallsmall :: dùngdùng kiểukiểu cấucấu trúctrúc <=<= 6464 KK bộbộ nhớnhớ chocho mãmã ,, 64K64K chocho dữdữ liệu.liệu. § .Stack.Stack 100h100h :: dànhdành 256256 bytesbytes chocho stackstack củacủa chươngchương trìnhtrình § .Data.Data :: đánhđánh dấudấu phânphân đoạnđoạn dữdữ liệuliệu ởở đóđó cáccác biếnbiến đượcđược lưulưu trữ.trữ. § .Code.Code :: đánhđánh dấudấu phânphân đoạnđoạn mãmã chứachứa cáccác lệnhlệnh phảiphải thithi hành.hành. § ProcProc :: khaikhai báobáo đầuđầu 11 thủthủ tục,tục, trongtrong ExEx nàynày tata chỉchỉ cócó 11 thủthủ tụctục Main.Main. 5/23/2021 Chuong 5 Nhap mon ASM 13
  14. Giải thích (cont) § Chép địa chỉ đoạn dữ liệu vào thanh ghi AX. § Sau đó chép vào thanh ghi DS § Gọi hàm số 9 của Int 21h của Dos để xuất chuổi ký tự ra màn hình. § Thoát khỏi CT . § Main endp : đánh dấu kết thúc thủ tục § End main : chấm dứt chương trình 5/23/2021 Chuong 5 Nhap mon ASM 14
  15. Cấu trúc của 1 CT ASM DOSSEG .MODEL kiểu bộ nhớ .STACK kích thước .DATA khai báo biến, hằng .CODE MAIN PROC MOV AX, @DATA MOV DS,AX các lệnh của chương trình chính MOV AH,4CH ; Thoát khỏi chương trình INT 21H MAIN ENDP các chương trình con khác nếu có END MAIN 5/23/2021 Chuong 5 Nhap mon ASM 15
  16. Các chế độ bộ nhớ Kiểu Mô tả SMALL Mã lệnh trong 1 đoạn.Dữ liệu trong 1 đoạn MEDIUM Mã lệnh nhiều hơn 1 đoạn.Dữ liệu trong 1 đoạn COMPACT Mã lệnh trong 1 đoạn. Dữ liệu nhiều hơn 1 đoạn LARGE Mã lệnh nhiều hơn 1 đoạn Dữ liệu nhiều hơn 1 đoạn,không có mảng nào > 64K HUGE Mã lệnh nhiều hơn 1 đoạn Dữ liệu nhiều hơn 1 đoạn, mảng có thể > 64K 5/23/2021 Chuong 5 Nhap mon ASM 16
  17. Dạng lệnh Chú thích § [name] [operator] [ operand] [comment] Mã lệnh dạng Nhãn, tên biến Register, ô nhớ gợi nhớ Tên thủ tục Trị, hằng Ex : MOV CX , 0 Mỗi dòng chỉ chứa 1 lệnh và mỗi lệnh LAP : MOV CX, 4 phải nằm trên 1 dòng LIST DB 1,2,3,4 5/23/2021 Chuong 5 Nhap mon ASM 17
  18. INT 21H § Lệnh INT số hiệu ngắt được dùng để gọi chương trình ngắt của DOS và BIOS. Ngắt 21h Muốn sử dụng hàm nào của INT 21h ta đặt function_number vào thanh ghi AH, sau đó gọi INT 21h Function_number chức năng 1 nhập 1 ký tự từ bàn phím 2 Xuất 1 ký tự ra mà hình. 3 9 Xuất 1 chuổi ký tự ra màn hình 5/23/2021 Chuong 5 Nhap mon ASM 18
  19. INT 21h (cont) Hàm 1 : Nhập 1 ký tự Input : AH =1 Output : AL = mã ASCCI của phím ấn = 0 nếu 1 phím điều khiểân được ấn Hàm 2 : Hiển thị 1 ký tự ra màn hình Input : AH =2 DL = Mã ASCII của ký tự hiển thị hay ký tự điều khiển 5/23/2021 Chuong 5 Nhap mon ASM 19
  20. Thí dụ minh họa DOSSEG MOV AH,2 .MODEL SMALL MOV DL, 0DH .STACK 100H INT 21H .CODE MOV DL , 0AH MAIN PROC INT 21H MOV AH , 2 MOV DL , BL MOV DL , ‘?’ INT 21H INT 21H MOV AX , 4C00H MOV AH ,1 INT 21H INT 21H MAIN ENDP MOV BL,AL END MAIN ? N KẾT QUẢ N 5/23/2021 Chuong 5 Nhap mon ASM 20
  21. Thí dụ minh họa các hàm của INT 21 § In dấu ? ra màn hình : MOV AH, 2 MOV DL, ‘?’ INT 21H § Nhập 1 ký tự từ bàn phím : MOV AH, 1 INT 21H 5/23/2021 Chuong 5 Nhap mon ASM 21
  22. Biến § CúCú pháppháp :: [tên[tên biến]biến] DBDB || DWDW | | [trị[trị khởikhởi tạo]tạo] § LàLà mộtmột têntên kýký hiệuhiệu dànhdành riêngriêng chocho 11 vịvị trítrí trongtrong bộbộ nhớnhớ nơinơi lưulưu trữtrữ dữdữ liệu.liệu. § OffsetOffset củacủa biếnbiến làlà khoảngkhoảng cáchcách từtừ đầuđầu phânphân đoạnđoạn đếnđến biếnbiến đó.đó. § ExEx :: khaikhai báobáo 11 danhdanh sáchsách aListaList ởở địađịa chỉchỉ 100100 vớivới nộinội dungdung sausau :: .data.data aListaList dbdb “ABCD”“ABCD” 5/23/2021 Chuong 5 Nhap mon ASM 22
  23. Biến (cont) Lúc đó : Offset Biến 0000 A 0001 B 0002 C 0003 D 5/23/2021 Chuong 5 Nhap mon ASM 23
  24. Khai báo biến TừTừ gợigợi nhớnhớ MôMô tảtả SốSố bytebyte ThuộcThuộc tínhtính DBDB ĐịnhĐịnh nghĩanghĩa 11 ByteByte bytebyte DWDW TừTừ 22 WordWord DDDD TừTừ képkép 44 DoublewordDoubleword DQDQ TừTừ tứtứ 88 QuardwordQuardword DTDT 1010 bytesbytes 1010 tenbytetenbyte 5/23/2021 Chuong 5 Nhap mon ASM 24
  25. Minh họa khai báo biến KIỂU BYTE § Char db ‘A’ § Num db 41h § Mes db “Hello Word”,’$’ § Array_1 db 10, 32, 41h, 00100101b § Array_2 db 2,3,4,6,9 § Myvar db ? ; biến không khởi tạo § Btable db 1,2,3,4,5 db 6,7,8,9,10 5/23/2021 Chuong 5 Nhap mon ASM 25
  26. Minh họa khai báo biến DW 3 DUP (?) DW 1000h, ‘AB’, 1024 DW ? DW 5 DUP (1000h) DW 256*2 DẠNG LƯU TRỮ DỮ LIỆU KIỂU WORD : Trình hợp dịch đảo ngược các byte trong 1 giá trị kiểu WORD khi lưu trữ trong bộ nhớ : Byte thấp lưu ở địa chỉ thấp Byte cao lưu ở địa chỉ cao 5/23/2021 Chuong 5 Nhap mon ASM 26
  27. Minh họa khai báo biến Ex : 1234h được lưu trữ trong bộ nhớ như sau : ĐỊA CHỈ 1000h 1001h BỘ NHỚ DỮ LIỆU 1234H 5/23/2021 Chuong 5 Nhap mon ASM 27
  28. Toán tử DUP § LặpLặp lạilại 11 hayhay nhiềunhiều giágiá trịtrị khởikhởi tạo.tạo. § ExEx :: BmemBmem DBDB 5050 Dup(?)Dup(?) ;; khaikhai báobáo vùngvùng nhớnhớ gồmgồm 5050 bytes.bytes. dbdb 44 dupdup (“ABC”)(“ABC”) ;12;12 bytesbytes “ABCABCABCABC”“ABCABCABCABC” dbdb 40964096 dupdup (0)(0) ;; VùngVùng đệmđệm 40964096 bytesbytes tấttất cảcả bằngbằng 00 5/23/2021 Chuong 5 Nhap mon ASM 28
  29. Khởi tạo biến § Lưu ý : Khi khởi tạo trị là 1 số hex thì giá trị số luôn luôn bắt đầu bằng 1 ký số từ 0 đến 9. Nếu ký số bắt đầu là A F thì phải thêm số 0 ở đầu. § Ex : Db A6H ; sai Db 0A6h ; đúng 5/23/2021 Chuong 5 Nhap mon ASM 29
  30. Toán tử DUP (cont) Amtrix dw 3 dup (4 dup (0) ) Tạo 1 ma trận 3x4 Atable db 4 dup (3 dup (0), 2 dup (‘X’)) Tạo 1 vùng nhớ chứa 000XX 000XX 000XX 000XX 5/23/2021 Chuong 5 Nhap mon ASM 30
  31. Toán tử DUP § Chỉ xuất hiện sau 1 chỉ thị DB hay DW § Với DUP ta có thể lặp lại 1 hay nhiều trị cho vùng nhớ. § Rất có ích khi làm việc với mảng hay chuổi. 5/23/2021 Chuong 5 Nhap mon ASM 31
  32. Toán tử ? § Muốn khai báo 1 biến hay 1 mảng mà không cần khởi tạo trị ta dùng toán tử ? Ex : MEM8 DB ? ; khai báo 1 byte trống trong bộ nhớ MEM16 DW ? ; khai báo 2 byte trống trong bộ nhớ BMEM DB 50 DUP(?) ; khai báo 50 byte trống trong bộ nhớ 5/23/2021 Chuong 5 Nhap mon ASM 32
  33. Chương trình dạng .COM CODE SEGMENT ASSUME CS:CODE , DS:CODE, SS:CODE ; toàn bộ chương trình chỉ nằm trong 1 segment Org 100h ;; chỉ thị nạp thanh ghi lệnh IP=100h khi CT được nạp Main proc mov ax,bx . Main endp Count db 10 Code ends End main 5/23/2021 Chuong 5 Nhap mon ASM 33
  34. SUMMARY § chươngchương trìnhtrình AssemblyAssembly gồmgồm nhiềunhiều dòngdòng lệnh.lệnh. § MỗiMỗi lệnhlệnh phảiphải viếtviết trêntrên 11 dòngdòng § LệnhLệnh cócó thểthể gồmgồm [tên][tên] [toán[toán tử]tử] [toán[toán hạng]hạng] § CácCác kýký tựtự phảiphải đặtđặt trongtrong dấudấu ‘‘ ‘‘ hayhay ““ ““ § DBDB dùngdùng đểđể địnhđịnh nghĩanghĩa biếnbiến kiểukiểu BYTEBYTE § DWDW dùngdùng đểđể địnhđịnh nghĩanghĩa biếnbiến kiểukiểu WORD.WORD. § CóCó 22 cáchcách xuấtxuất nhậpnhập dữdữ liệuliệu :: liênliên lạclạc trựctrực tiếptiếp quaqua cổngcổng hayhay dùngdùng cáccác phụcphục vụvụ ngắtngắt củacủa DOSDOS vàvà BIOS.BIOS. 5/23/2021 Chuong 5 Nhap mon ASM 34
  35. Câu hỏi ôn tập § Trong mã máy dưới đây được lấy từ tập tin liệt kê, hãy nêu ý nghĩa của R 5B 0021 R ADD BX, VAL1 § Nêu ý nghĩa của ký hiệu địa chỉ của biến dưới đây trong 1 tập tin liệt kê. 5B 0021 R ADD BX, VAL1 5/23/2021 Chuong 5 Nhap mon ASM 35
  36. Câu hỏi ôn tập § Chương trình sau có lỗi. Hãy tìm câu lệnh nào gây ra lỗi, giải thích và sửa lại cho đúng. .MODEL SMALL .STACK 100H .DATA MOV AX, VALUE1 MOV BX, VALUE2 INC BX, 1 INT 21H MOV 4C00H, AX MAIN ENDP VALUE1 0AH VALUE2 1000H END MAIN 5/23/2021 Chuong 5 Nhap mon ASM 36
  37. § Chương trình sau có lỗi. Hãy tìm câu lệnh nào gây ra lỗi, giải thích và sửa lại cho đúng. .MODEL SMALL Câu hỏi ôn tập .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 5/23/2021END MAIN Chuong 5 Nhap mon ASM 37
  38. Bài tập lập trình Bài 1 : Viết chương trình nhập 1 ký tự thường , in ra ký tự hoa tương ứng. Bài 2 : Viết chương trình hoán vị 2 biến kiểu byte được gán sẵn trị. Bài 3 : Viết chương trình tạo 1 array có các phần tử 31h,32h,33h,34h. Nạp từng phần tử vào thanh ghi DL và xuất nó ra màn hình. Giải thích tại sao kết xuất trên màn hình là 1234. 5/23/2021 Chuong 5 Nhap mon ASM 38