Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
221,5 KB
Nội dung
Chương : Nhập môn Assembly Mục tiêu Hiểu ngôn ngữ máy ngôn ngữ Assembly. Trình hợp dòch Assembler. Lý nghiên cứu Assembly. Hiểu thành phần Assembly Nắm cấu trúc CT Assembly. Biết viết chương trình Assembly. Biết cách dòch, liên kết thực thi chương trình Assembly. 09/10/15 Chuong Nhap mon ASM Giới thiệu ngôn ngữ Assembly Giúp khám phá bí mật phần cứng phần mềm máy tính. Nắm cách phần cứng MT làm việc với hệ điều hành hiểu cách trình ứng dụng giao tiếp với hệ điều hành. Một MT hay họ MT sử dụng tập lệnh mã máy riêng ngôn ngữ Assembly riêng. 09/10/15 Chuong Nhap mon ASM Assembler Một chương trình viết ngôn ngữ Assembly muốn MT thực ta phải chuyển thành ngôn ngữ máy. Chương trình dùng để dòch file viết Assembly ngôn ngữ máy , gọi Assembler. Có chương trình dòch: MASM TASM 09/10/15 Chuong Nhap mon ASM Lý nghiên cứu Assembly Đó cách tốt để học phần cứng MT hệ điều hành. Vì tiện ích . Có thể nhúng chương trình viết ASM vào cácchương trình viết ngôn ngữ cấp cao . 09/10/15 Chuong Nhap mon ASM Lệnh máy Là chuổi nhò phân có ý nghóa đặc biệt – lệnh cho CPU thực tác vụ. Tác vụ : di chuyển số từ vò trí nhớ sang vò trí nhớ khác. Cộng số hay so sánh số. 0 0 0 Add a number to the AL register 0 0 1 Add a number to a variable 1 0 1 Move the AX reg to another reg 09/10/15 Chuong Nhap mon ASM Lệnh máy (cont) Tập lệnh máy đònh nghóa trước, CPU sản xuất đặc trưng cho kiểu CPU . Ex : B5 05 lệnh máy viết dạng số hex, dài byte. Byte đầu B5 gọi Opcode Byte sau 05 gọi toán hạng Operand Ýù ùnghóa nghóacủ củaalệ lệnnhhB5 B5 05 05::ché chéppgiá giátrò trò55và vàooreg regAL AL Ý 09/10/15 Chuong Nhap mon ASM Cách viết chương trình Assembly Soạn CT TenCT.ASM Dòch CT Liên kết CT Chạy CT 09/10/15 Dùng phần mềm soạn thảo VB để soan CT Assembly : NotePad, NC, hình C, Pascal . CT có phần mở rộng .ASM dùng MASM để dòch chương trình nguồn .ASM File Object. dùng LINK để liên kết Object tạo tập tin thực .EXE Gỏ tên tập tin thực .EXE từ dấu nhắc DOS để chạy Chuong Nhap mon ASM Dòch nối kết chương trình MASM.EXE MASM.EXE TenCT .ASM TenCT .OBJ LINK.EXE LINK.EXE TenCT .MAP TenCT .LIST TenCT .CRF TenCT.EXE .EXE TenCT 09/10/15 Chuong Nhap mon ASM Một chương trình minh hoạ DOSSEG .MODEL SMALL .STACK 100h .DATA MES DB “HELLO WORD”,’$’ .CODE MAIN PROC MOV AX, @DATA MOV DS, AX 09/10/15 MOV DX, OFFSET MES MOV AH, INT 21 MOV AH,4CH INT 21 MAIN ENDP END MAIN Chuong Nhap mon ASM Các file tạo Sau dòch thành công file nguồn.ASM, ta có file : File listing : file VB , dòng có đánh số thứ tự mã. File Cross reference File Map File Obj File EXE 09/10/15 Chuong Nhap mon ASM 10 Biến (cont) Lúc : Offset Biến 0000 A 0001 B 0002 C 0003 D 09/10/15 Chuong Nhap mon ASM 23 Khai báo biến Từ gợi nhớ DB DW DD DQ DT 09/10/15 Mô tả Đònh nghóa byte Từ Từ kép Từ tứ 10 bytes Số byte Thuộc tính Byte Word 10 Doubleword Quardword tenbyte Chuong Nhap mon ASM 24 KIỂU BYTE Minh họa khai báo biến 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 09/10/15 Chuong Nhap mon ASM 25 Minh họa khai báo biến KIỂU WORD DW DUP (?) DW 1000h, ‘AB’, 1024 DW ? DW 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 byte giá trò kiểu WORD lưu trữ nhớ : Byte thấp lưu đòa thấp Byte cao lưu đòa cao 09/10/15 Chuong Nhap mon ASM 26 KIỂU WORD Minh họa khai báo biến Ex : 1234h lưu trữ nhớ sau : 1000h BỘ NHỚ 1001h 12 34 DỮ LIỆU 09/10/15 ĐỊA CHỈ 1234H Chuong Nhap mon ASM 27 Toán tử DUP Lặp lại hay nhiều giá trò khởi tạo. Ex : Bmem DB 50 Dup(?) ; khai báo vùng nhớ gồm 50 bytes. db dup (“ABC”) ;12 bytes “ABCABCABCABC” db 4096 dup (0) ; Vùng đệm 4096 bytes tất 09/10/15 Chuong Nhap mon ASM 28 Khởi tạo biến Lưu ý : Khi khởi tạo trò số hex giá trò số luôn bắt đầu ký số từ đến 9. Nếu ký số bắt đầu A F phải thêm số đầu. Ex : Db A6H ; sai Db 0A6h ; 09/10/15 Chuong Nhap mon ASM 29 Toán tử DUP (cont) Amtrix dw dup (4 dup (0) ) Tạo ma trận 3x4 Atable db dup (3 dup (0), dup (‘X’)) 000XX X X 0 X X 0XX 000 0 a ù h c ù h Tạo vùng n 09/10/15 Chuong Nhap mon ASM 30 Toán tử DUP Chỉ xuất sau thò DB hay DW Với DUP ta lặp lại hay nhiều trò cho vùng nhớ. Rất có ích làm việc với mảng hay chuổi. 09/10/15 Chuong Nhap mon ASM 31 Toán tử ? Muốn khai báo biến hay mảng mà không cần khởi tạo trò ta dùng toán tử ? Ex : MEM8 DB ? ; khai báo byte trống nhớ MEM16 DW ? ; khai báo byte trống nhớ BMEM DB 50 DUP(?) ; khai báo 50 byte trống nhớ 09/10/15 Chuong Nhap mon ASM 32 Chương trình dạng .COM CODE SEGMENT ASSUME CS:CODE , DS:CODE, SS:CODE ; toàn chương trình nằm segment Org 100h ;; thò nạp ghi lệnh IP=100h CT nạp Main proc mov ax,bx ……………. Main endp Count db 10 ……………………… Code ends End main 09/10/15 Chuong Nhap mon ASM 33 SUMMARY chương trình Assembly gồm nhiều dòng lệnh. Mỗi lệnh phải viết dòng Lệnh gồm [tên] [toán tử] [toán hạng] Các ký tự phải đặt dấu ‘ ‘ hay “ “ DB dùng để đònh nghóa biến kiểu BYTE DW dùng để đònh nghóa biến kiểu WORD. Có cách xuất nhập liệu : liên lạc trực tiếp qua cổng hay dùng phục vụ ngắt DOS BIOS. 09/10/15 Chuong Nhap mon ASM 34 Câu hỏi ôn tập Trong mã máy lấy từ tập tin liệt kê, nêu ý nghóa R 5B 0021 R ADD BX, VAL1 Nêu ý nghóa ký hiệu đòa biến tập tin liệt kê. 5B 0021 R ADD BX, VAL1 09/10/15 Chuong Nhap mon ASM 35 Câu hỏi ôn tập Chương trình sau có lỗi. Hãy tìm câu lệnh gây lỗi, giải thích sửa lại cho đúng. .MODEL SMALL .STACK 100H .DATA MOV AX, VALUE1 MOV BX, VALUE2 INC BX, INT 21H MOV 4C00H, AX MAIN ENDP VALUE1 0AH VALUE2 1000H END MAIN 09/10/15 Chuong Nhap mon ASM 36 Chương trình sau có lỗi. Hãy tìm câu lệnh gây lỗi, giải thích sửa lại cho đúng. .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AX, @DATA MOV DS , AX MOV AX, VALUE1 MOV AX, VALUE2 MOV AX, 4C00H INT 21H Câu hỏi ôn tập MAIN ENDP VALUE1 DB 0AH VALUE2 DB 1000H END MAIN09/10/15 Chuong Nhap mon ASM 37 Bài tập lập trình Bài : Viết chương trình nhập ký tự thường , in ký tự hoa tương ứng. Bài : Viết chương trình hoán vò biến kiểu byte gán sẵn trò. Bài : Viết chương trình tạo array có phần tử 31h,32h,33h,34h. Nạp phần tử vào ghi DL xuất hình. Giải thích kết xuất hình 1234. 09/10/15 Chuong Nhap mon ASM 38 [...]... Main endp : đánh dấu kết thúc thủ tục End main : chấm dứt chương trình 09/10/15 Chuong 5 Nhap mon ASM 14 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 09/10/15 Chuong 5 Nhap mon ASM 15... 09/10/15 Chuong 5 Nhap mon ASM 32 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 09/10/15 Chuong 5 Nhap mon ASM 33 SUMMARY chương trình Assembly gồm nhiều dòng lệnh Mỗi lệnh phải... Register, ô nhớ Trò, hằng Trò, hằng Mỗi dòng chỉ chứa 1 lệnh và mỗi lệnh phải nằm trên 1 dòng LIST DB 1,2,3,4 09/10/15 Chuong 5 Nhap mon ASM 17 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à... tạo Btable db 1,2,3,4,5 db 6,7,8,9,10 09/10/15 Chuong 5 Nhap mon ASM 25 Minh họa khai báo biến KIỂU WORD 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 09/10/15 Chuong 5 Nhap mon ASM 26 KIỂU WORD Minh họa khai... Program entry point at 0000:0010 09/10/15 Chuong 5 Nhap mon ASM 12 Giải thích model small : dùng kiểu cấu trúc