Bài giảng Cấu trúc máy tính - Chương 5: Nhập môn Assembly

Giúp khám phá bí mật phần cứng cũng như phần mềm máy tính.

Nắm được cách phần cứng MT làm việc với hệ điều hành và hiểu được bằng cách nào 1 trình ứng dụng giao tiếp với hệ điều hành.

Một MT hay một họ MT sử dụng 1 tập lệnh mã máy riêng cũng như 1 ngôn ngữ Assembly riêng.

 

ppt38 trang | Chuyên mục: Kiến Trúc Máy Tính | Chia sẻ: yen2110 | Lượt xem: 432 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Cấu trúc máy tính - Chương 5: Nhập môn Assembly, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
át Object tạo tập tin thực hiện .EXE 
 Gỏ tên tập tin thực hiện .EXE từ dấu nhắc DOS để chạy 
11/9/2021 
7 
Chuong 5 Nhap mon ASM 
Dịch và nối kết chương trình 
TenCT .ASM 
TenCT .OBJ 
MASM.EXE 
TenCT .EXE 
TenCT .MAP 
TenCT .LIST 
TenCT .CRF 
LINK.EXE 
11/9/2021 
8 
Chuong 5 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 
MOV DX, OFFSET MES 
MOV AH, 9 
INT 21 
MOV AH,4CH 
INT 21 
MAIN ENDP 
END MAIN 
11/9/2021 
9 
Chuong 5 Nhap mon ASM 
Các file được tạo 
Sau khi dịch thành công file nguồn.ASM, ta có các file : 
File listing : file VB , các dòng có đánh số thứ tự mã. 
File Cross reference 
File Map 
File Obj 
File EXE 
11/9/2021 
10 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
11 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
12 
Chuong 5 Nhap mon ASM 
Giải thích 
.model small : dùng kiểu cấu trúc <= 64 K bộ nhớ cho mã , 64K cho dữ liệu. 
.Stack 100h : dành 256 bytes cho stack của chương trình . 
.Data : đánh dấu phân đoạn dữ liệu ở đó các biến được lưu trữ. 
 .Code : đánh dấu phân đoạn mã chứa các lệnh phải thi hành. 
Proc : khai báo đầu 1 thủ tục, trong Ex này ta chỉ có 1 thủ tục Main. 
11/9/2021 
13 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
14 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
15 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
16 
Chuong 5 Nhap mon ASM 
Dạng lệnh 
[name] [operator] [ operand] [comment] 
Nhãn, tên biến 
Tên thủ tục 
Mã lệnh dạng 
gợi nhớ 
Register, ô nhớ 
Trị, hằng 
Chú thích 
Ex : MOV CX , 0 
 LAP : MOV CX, 4 
 LIST DB 1,2,3,4 
Mỗi dòng chỉ chứa 1 lệnh và mỗi lệnh phải nằm trên 1 dòng 
11/9/2021 
17 
Chuong 5 Nhap mon ASM 
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 
 nhập 1 ký tự từ bàn phím 
 Xuất 1 ký tự ra mà hình. 
 9 Xuất 1 chuổi ký tự ra màn hình 
11/9/2021 
18 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
19 
Chuong 5 Nhap mon ASM 
Thí dụ minh họa 
DOSSEG 
.MODEL SMALL 
.STACK 100H 
.CODE 
 MAIN PROC 
 MOV AH , 2 
 MOV DL , ‘?’ 
 INT 21H 
 MOV AH ,1 
 INT 21H 
 MOV BL,AL 
 MOV AH,2 
 MOV DL, 0DH 
 INT 21H 
 MOV DL , 0AH 
 INT 21H 
 MOV DL , BL 
 INT 21H 
 MOV AX , 4C00H 
 INT 21H 
 MAIN ENDP 
END MAIN 
? N 
N 
KẾT QUẢ 
11/9/2021 
20 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
21 
Chuong 5 Nhap mon ASM 
Biến 
Cú pháp : [tên biến] DB | DW |.... [trị khởi tạo] 
Là một tên ký hiệu dành riêng cho 1 vị trí trong bộ nhớ nơi lưu trữ dữ liệu. 
Offset của biến là khoảng cách từ đầu phân đoạn đến biến đó. 
Ex : khai báo 1 danh sách aList ở địa chỉ 100 với nội dung sau : 
 .data 
 aList db “ABCD” 
11/9/2021 
22 
Chuong 5 Nhap mon ASM 
Biến (cont) 
Lúc đó : 
Offset	Biến 
0000	A 
0001	B 
0002	C 
0003	D 
11/9/2021 
23 
Chuong 5 Nhap mon ASM 
Khai báo biến 
Từ gợi nhớ 
Mô tả 
Số byte 
Thuộc tính 
DB 
Định nghĩa byte 
1 
Byte 
DW 
Từ 
2 
Word 
DD 
Từ kép 
4 
Doubleword 
DQ 
Từ tứ 
8 
Quardword 
DT 
10 bytes 
10 
tenbyte 
11/9/2021 
24 
Chuong 5 Nhap mon ASM 
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 
KIỂU BYTE 
11/9/2021 
25 
Chuong 5 Nhap mon ASM 
Minh họa khai báo biến 
 DW 3 DUP (?) 
 DW 1000h, ‘AB’, 1024 
 DW ? 
 DW 5 DUP (1000h) 
 DW 256*2 
KIỂU WORD 
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 
11/9/2021 
26 
Chuong 5 Nhap mon ASM 
Minh họa khai báo biến 
KIỂU WORD 
Ex : 1234h được lưu trữ trong bộ nhớ như sau : 
34 
12 
1000h 
1001h 
BỘ 
NHỚ 
ĐỊA CHỈ 
DỮ LIỆU 
 1234H 
11/9/2021 
27 
Chuong 5 Nhap mon ASM 
Toán tử DUP 
Lặp lại 1 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 4 dup (“ABC”) 
;12 bytes “ABCABCABCABC” 
 db 4096 dup (0) 
; Vùng đệm 4096 bytes tất cả bằng 0 
11/9/2021 
28 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
29 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
30 
Chuong 5 Nhap mon ASM 
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. 
11/9/2021 
31 
Chuong 5 Nhap mon ASM 
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ớ 
11/9/2021 
32 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
33 
Chuong 5 Nhap mon ASM 
SUMMARY 
chương trình Assembly gồm nhiều dòng lệnh. 
Mỗi lệnh phải viết trên 1 dòng 
Lệnh có thể gồm [tên] [toán tử] [toán hạng] 
Các ký tự phải đặt trong 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ó 2 cách xuất nhập dữ liệu : liên lạc trực tiếp qua cổng hay dùng các phục vụ ngắt của DOS và BIOS. 
11/9/2021 
34 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
35 
Chuong 5 Nhap mon ASM 
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 
11/9/2021 
36 
Chuong 5 Nhap mon ASM 
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 
.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 
END MAIN 
11/9/2021 
37 
Chuong 5 Nhap mon ASM 
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. 
11/9/2021 
38 
Chuong 5 Nhap mon ASM 

File đính kèm:

  • pptbai_giang_cau_truc_may_tinh_chuong_5_nhap_mon_assembly.ppt