Giáo trình Assembler
Mục lục
Chương 1 TỔ CHỨC BỘ XỬ LÝ INTEL 8086 . . 1
I. BỘ XỬ LÝ (CPU) INTEL 8086 . . . 1
1. Tổ chức tổng quát . . . 1
2. Các thanh ghi của 8086 . . . 2
3. Tổ chức bộ nhớ trong . . . 3
4. Sự phân đoạn trong bộ nhớ trong . . . 3
5. Địa chỉ các ngoại vi . . . 4
6. Các chân của vi mạch 8086 . . . 4
II. CÁC LỆNH THƯỜNG DÙNG CỦA CPU 8086 . . 6
1. Giới thiệu . . . . 6
2. Nhóm di chuyển số liệu . . . 6
3. Nhóm lệnh chuyển địa chỉ . . . 7
4. Nhóm lệnh chuyển cờ hiệu (thanh ghi trạng thái) . . 7
5. Nhóm lệnh vào ra ngoại vi . . . 8
6. Nhóm lệnh điều khiển . . . 8
7. Nhóm lệnh so sánh . . . 8
8. Nhóm lệnh vòng lặp . . . 9
9. Nhóm lệnh gọi chương trình con . . . 9
10. Nhóm lệnh tính toán số học . . . 10
11. Nhóm lệnh dịch chuyển và quay . . 11
12. Nhóm lệnh logic . . . 13
13. Nhóm lệnh xử lý chuỗi . . . 13
14. Các lệnh khác . . . 15
III. CÁC KIỂU ĐỊNH VỊ CỦA CPU 8086 . . 15
1. Định vị tức thì . . . 15
2. Định vị trực tiếp . . . 15
3. Định vị thanh ghi . . . 15
4. Định vị nền . . . . 16
5. Định vị chỉ số . . . . 16
6. Định vị chỉ số và nền . . . 16
7. Định vị chuỗi . . . . 16
8. Định vị cửa vào ra . . . 16
Chương 2 HỢP NGỮ . . . . 17
I. ĐẶC TÍNH TỔNG QUÁT CỦA HỢP NGỮ . . 17
1. Cấu trúc tổng quát của một lệnh hợp ngữ . . 17
2. Cấu trúc tổng quát của Macro . . . 18
3. Cấu trúc tổng quát của chương trình con . . 18
4. Cấu trúc tổng quát của biến toàn cục (global), biến địa phương (local) . 18
5. Cấu trúc tổng quát của các bảng, thông báo mà hợp ngữ cung cấp cho người
sử dụng . . . . 18
6. Cấu trúc tổng quát của hợp ngữ chéo (cross assembler) . 19
II. HỢP NGỮ MASM - DÙNG CHO CPU 8086 . . 19
1. Giới thiệu hợp ngữ MASM . . . 19
2. Cấu trúc của một hàng lệnh hợp ngữ MASM . . 19
3. Tên trong hợp ngữ MASM . . . 19
Giáo trình Assembler
Chủ biên Võ Thanh Ân Trang 34
4. Từ gợi nhớ mã lệnh . . . 20
III. LẬP TRÌNH DÙNG HỢP NGỮ MASM . . 27
1. Giới thiệu . . . . 27
2. Một số ngắt thường dùng trong HĐH MS-DOS . . 27
3. Cấu trúc một chương trình hợp ngữ MASM . . 29
4. Tập tin đuôi COM và tập tin đuôi EXE . . 30
i vi vì DOS cũng gán thẻ cho ngoại vi. - Hàm 40H: Ghi lên tập tin hoặc thiết bị, trước hết phải mở tập tin. DS:DX trỏ đến vùng chứa dữ liệu trong bộ nhớ. BX chứa thẻ tập tin. CX chứa số byte cần ghi lên đĩa. Có thể dùng hàm này để gỏi dữ liệu ra ngoại vi. - Hàm 41H: Xoá tập tin trên đĩa. DS:DX chứa đến tên tập tin muốn xoá, ta không thể xoá tập tin đang mở hoặc tập tin có thuộc tính chỉ đọc. - Hàm 43H: Đọc hoặc thay đổi thuộc tính tập tin. Đọc thuộc tính: Đặt AL = 0 DS:DX trỏ đến tên tập tin. Sau khi thực hiện hàm, thuộc tính nằm trong CX. Đổi thuộc tính: Đặt AL = 1 CX chứa thuộc tính mới. DS:DX trỏ đến tên tập tin. - Hàm 4CH: Kết thúc chương trình và trở về DOS (cả 2 loại tập tin có đuôi .COM và .EXE). - Hàm 56H: Đổi tên tập tin. DS:DX trỏ tới tên cũ. ES:DI trỏ tới tên mới. 3. Cấu trúc một chương trình hợp ngữ MASM Một chương trình hợp ngữ có thể gồm nhiều modul. Các modul có thể viết riêng lẽ bằng một chương trình xử lý văn bản và dịch riêng lẽ bằng MASM để cho ra các chương trình đích. Các chương trình đích sẽ được trình liên kết nối lại thành một chương trình chạy được có đuôi chấm EXE. Mỗi modul có thể viết như sau: Giáo trình Assembler Chủ biên Võ Thanh Ân Trang 30 PAGE 60, 132 TITLE (Tiêu đề vị trí này) (Các phát biểu EXTRN hay PUBLIC nếu có) MCR MACRO (viết macro) ENDM STACK SEGMENT PARA STACK ‘STACK’ DB 64 DUP(?) STACK ENDS DSEG SEGMENT PARA PUBLIC DATA (dành ô nhớ cho dữ liệu ở đây) DSEG ENDS CSEG SEMENT PARA PUBLIC ‘CODE’ ASSUME CS: CSEG, DS: DSEG BATDAU: MOV AX, DSEG MOV DS, AX (chương trình chính) … … CTC PROC NEAR (viết chương trình con) CTC ENDP CSEG ENDS END BATDAU ;Chấm dứt chương trình và chọn địa chỉ bắt đầu của ;chương trình là BATDAU 4. Tập tin đuôi COM và tập tin đuôi EXE a. Giới thiệu Hợp ngữ MASM cho phép tạo tập tin đuôi COM dùng cho các chương trình nhỏ và tập tin đuôi EXE để xây dựng các chương trình lớn. b. Đặc điểm của tập tin đuôi COM - Chỉ có một đoạn duy nhất, các thanh ghi CS, DS, SS đều có chung một trị số. - Kích thước tối đa là 64KB. - Tập tin COM được nạp vào bộ nhớ trong và thực hiện nhanh hơn tập tin EXE. Khi DOS thực hiện tập tin COM, nó tạo vùng ô nhớ từ độ dời từ 0 đến 0FFH để chứa thông tin cần thiết cho DOS. Vùng này gọi là vùng PSP Trang 31 (program segment prefix). Vì thế địa chỉ bắt đầu của tập tin COM là từ độ dời 100H. Tất cảc các thanh ghi đoạn đều phải chỉ dến PSP. - Dạng điển hình của tập tin COM như sau: Ví dụ chương trình gốc HELLO.ASM CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG, ES: CSEG, SS: CSEG ORG 100H BATDAU: MOV AX, DSEG MOV DS, AX MOV AH, 09H MOV DS, offset Mess INT 21H INT 20H Mess BD ‘Hello!$’ CSEG ENDS END BATDAU c. Đặc điểm của tập tin đuôi EXE - Chương trình lớn và nằm ở nhiều đoạn khác nhau. - Có thể gọi các chương trình con dạng Far. - Kích thước tập tin tuỳ ý. - Có Header ở đầu tập tin để chứa các thông tin cần thiết cho tập tin EXE. Tập tin EXE không dùng lệnh ORG 100H ở đầu chương trình. - Dạng điển hình của tập tin EXE như sau: Ví dụ chương trình gốc HELLO.ASM DULIEU SEGMENT THONGBAO DB 'HELLO!$' DULIEU ENDS MALENH SEGMENT ASSUME CS: MALENH, DS: DULIEU BATDAU: MOV AX, DULIEU MOV DS, AX MOV DX, Offset THONGBAO MOV AH, 09H INT 21H MOV AH, 4CH INT 21H MALENH ENDS Giáo trình Assembler Chủ biên Võ Thanh Ân Trang 32 END BATDAU d. Các bước biên dịch chương trình trong hợp ngữ MASM - Dùng một chương trình soạn thảo (Notepad chẳn hạn) để soạn thảo mã nguồn và lưu lại tên tập tin có phần mở rộng là ASM. Ví dụ Hello.asm. - Dùng hợp ngữ MASM để dịch Hello.asm thành chương trình đích Hello.obj. Như trên, ta đánh lệnh: Masm Hello; (lưu ý có dấu ; sau lệnh biên dịch). - Dùng chương trình LINK để biến Hello.obj thành chương trình thi hành được: Hello.exe. Như trên, ta đánh tiếp lệnh: Link Hello; (lưu ý có dấu ; sau lệnh biên dịch). Lúc này trên đĩa đã có chương trình Hello.exe ta có thể thực thi chương trình này từ DOS bằng cách đánh vào tên chương trìh vào ấn phím Enter. Như trên ta đánh: Hello - Cho tập tin có đuôi COM thì ngoài 2 lệnh trên ta phải dùng lệnh ngoại trú của DOS là EXE2BIN để biến đổi EXE thành COM. Như trên ta đánh: Exe2Bin Hello.exe Hello.com Trang 33 Mục lục Chương 1 TỔ CHỨC BỘ XỬ LÝ INTEL 8086 ............................................................. 1 I. BỘ XỬ LÝ (CPU) INTEL 8086 ......................................................................... 1 1. Tổ chức tổng quát ............................................................................................ 1 2. Các thanh ghi của 8086 ................................................................................... 2 3. Tổ chức bộ nhớ trong ...................................................................................... 3 4. Sự phân đoạn trong bộ nhớ trong .................................................................... 3 5. Địa chỉ các ngoại vi ......................................................................................... 4 6. Các chân của vi mạch 8086 ............................................................................. 4 II. CÁC LỆNH THƯỜNG DÙNG CỦA CPU 8086 ............................................... 6 1. Giới thiệu ......................................................................................................... 6 2. Nhóm di chuyển số liệu ................................................................................... 6 3. Nhóm lệnh chuyển địa chỉ ............................................................................... 7 4. Nhóm lệnh chuyển cờ hiệu (thanh ghi trạng thái) ........................................... 7 5. Nhóm lệnh vào ra ngoại vi .............................................................................. 8 6. Nhóm lệnh điều khiển ..................................................................................... 8 7. Nhóm lệnh so sánh .......................................................................................... 8 8. Nhóm lệnh vòng lặp ........................................................................................ 9 9. Nhóm lệnh gọi chương trình con ..................................................................... 9 10. Nhóm lệnh tính toán số học ....................................................................... 10 11. Nhóm lệnh dịch chuyển và quay ............................................................... 11 12. Nhóm lệnh logic ........................................................................................ 13 13. Nhóm lệnh xử lý chuỗi .............................................................................. 13 14. Các lệnh khác ............................................................................................ 15 III. CÁC KIỂU ĐỊNH VỊ CỦA CPU 8086 ......................................................... 15 1. Định vị tức thì ................................................................................................ 15 2. Định vị trực tiếp ............................................................................................. 15 3. Định vị thanh ghi ........................................................................................... 15 4. Định vị nền .................................................................................................... 16 5. Định vị chỉ số ................................................................................................. 16 6. Định vị chỉ số và nền ..................................................................................... 16 7. Định vị chuỗi ................................................................................................. 16 8. Định vị cửa vào ra ......................................................................................... 16 Chương 2 HỢP NGỮ .................................................................................................... 17 I. ĐẶC TÍNH TỔNG QUÁT CỦA HỢP NGỮ ................................................... 17 1. Cấu trúc tổng quát của một lệnh hợp ngữ ..................................................... 17 2. Cấu trúc tổng quát của Macro ....................................................................... 18 3. Cấu trúc tổng quát của chương trình con ...................................................... 18 4. Cấu trúc tổng quát của biến toàn cục (global), biến địa phương (local) ....... 18 5. Cấu trúc tổng quát của các bảng, thông báo mà hợp ngữ cung cấp cho người sử dụng .................................................................................................................. 18 6. Cấu trúc tổng quát của hợp ngữ chéo (cross assembler) ............................... 19 II. HỢP NGỮ MASM - DÙNG CHO CPU 8086 .................................................. 19 1. Giới thiệu hợp ngữ MASM ........................................................................... 19 2. Cấu trúc của một hàng lệnh hợp ngữ MASM ............................................... 19 3. Tên trong hợp ngữ MASM ............................................................................ 19 Giáo trình Assembler Chủ biên Võ Thanh Ân Trang 34 4. Từ gợi nhớ mã lệnh ....................................................................................... 20 III. LẬP TRÌNH DÙNG HỢP NGỮ MASM ..................................................... 27 1. Giới thiệu ....................................................................................................... 27 2. Một số ngắt thường dùng trong HĐH MS-DOS ........................................... 27 3. Cấu trúc một chương trình hợp ngữ MASM ................................................. 29 4. Tập tin đuôi COM và tập tin đuôi EXE ........................................................ 30
File đính kèm:
- Assembly.pdf