Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
855 KB
Nội dung
Chương Nhập mơn Assembly 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 03/28/21 Chuong 5Assembly Nhap mon ASM thi chương trình 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 03/28/21 Chuong Nhap mon ASM Assembler Moä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 03/28/21 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ữ caáp cao 03/28/21 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 03/28/21 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 của lệnh lệnh B5 B5 05 05 :: chép chép giá giá trị trị 55 vào vào reg reg ùù nghóa 03/28/21 Chuong Nhap mon ASM Cách viết chương trình Assembly Soạn CT TenCT.ASM Dịch CT 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 Liên kết CT dùng LINK để liên kết Object tạo tập tin thực EXE Chạy CT Gỏ tên tập tin thực EXE từ dấu nhắc DOS để chạy 03/28/21 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 03/28/21 Chuong Nhap mon ASM Một chương trình minh hoaï DOSSEG MODEL SMALL STACK 100h DATA MES DB “HELLO WORD”,’$’ CODE MAIN PROC MOV AX, @DATA MOV DS, AX 03/28/21 MOV DX, OFFSET MES MOV AH, INT 21 MOV AH,4CH INT 21 MAIN ENDP END MAIN Chuong Nhap mon ASM 10 Khai báo biến Từ gợi nhớ DB 03/28/21 Mô tả DW DD Định nghóa byte Từ Từ kép DQ DT Từ tứ 10 bytes Số byte 10 Chuong Nhap mon ASM Thuộc tính Byte Word Doublewor d Quardword tenbyte 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 03/28/21 Chuong Nhap mon ASM 26 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 03/28/21 thấp lưu địa Chuong 5chỉ Nhap mon ASM Byte cao lưu 27 Minh họa khai báo biến KIỂU WORD Ex : 1234h lưu trữ nhớ sau : 1000h BỘ NHƠ Ù DỮ LIỆU 03/28/21 1001h ĐỊA CHỈ 12 34 1234H Chuong Nhap mon ASM 28 Toán tử DUP Lặp lại hay nhiều giá trị khởi taï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 03/28/21 Chuong Nhap mon ASM 29 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 Nếu ký số bắt đầu A F phải thêm số đầu Ex : Db A6H ; sai Db 0A6h ; 03/28/21 Chuong Nhap mon ASM 30 Toán tử DUP (cont) Amtrix dw dup (4 dup (0) ) Taïo ma traän 3x4 Atable db dup (3 dup (0), dup (‘X’)) 00XX X X 0 00XX X X 0 ch ö ù a ù h n g n Tạo vù 03/28/21 Chuong Nhap mon ASM 31 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 03/28/21 Chuong Nhap mon ASM 32 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ớ 03/28/21 Chuong Nhap mon ASM 33 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 03/28/21 Chuong Nhap mon ASM 34 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 03/28/21 Chuong Nhap mon ASM 35 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 03/28/21 Chuong Nhap mon ASM 36 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 .MODEL SMALL STACK 100H DATA MOV AX, VALUE1 MOV BX, VALUE2 INC BX, INT 21H MOV ENDP 4C00H, AX MAIN VALUE1 VALUE2 0AH 1000H END MAIN 03/28/21 Chuong Nhap mon ASM 37 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 .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 MAIN ENDP INT 21H VALUE1 DB 0AH VALUE2 DB 1000H END 03/28/21MAIN Chuong Nhap mon ASM 38 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 03/28/21 Chuong Nhap mon ASM 39 ...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. .. lệnh mã máy riêng ngôn ngữ Assembly riêng 03/28/21 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 để... Chuong Nhap mon ASM 17 Dạng lệnh Chúthích thích Chú [name] [operator] [ operand] [comment] Mã lệnh lệnh dạng dạng Register, ô nhớ Mã Nhãn, tên biến Register, ô nhớ Nhãn, tên biến gợi nhớ gợi nhớ