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

pdf34 trang | Chuyên mục: Kiến Trúc Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 2123 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Assembler, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfAssembly.pdf
Tài liệu liên quan