Bài giảng Kiến trúc máy tính và hợp ngữ - Bài 1: Đại cương về Hợp ngữ
Mục tiêu
Bài 1
z Tìm hiểu cấu trúc tổng quát của PC
z Tổ chức bộ nhớ
Đại cương về Hợp ngữ
z Tổ chức các thanh ghi
z Tìm hiểu khái quát về Hợp ngữ
z Cấu trúc lệnh
z Cấu trúc chương trình hợp ngữ
z Một số lệnh cơ bản
1.1 Tổ chức PC
1.2 CPU
1.3 Tổ chức bộ nhớ
z Địa chỉ tuyệt đối:
z Xác định vị trí của từng byte trong bộ nhớ
Segment
Offset
1134h
1023h
z (8086) dài 20 bit, bộ nhớ 1MB
z Địa chỉ tương đối:
z Chế độ thực, truy cập bộ nhớ theo dạng
Segment:Offset
z Segment, Offset: địa chỉ 16 bit (lưu trong thanh ghi)
11340h
12363h
( Đoạn : Ô )
z Segment: địa chỉ tuyệt đối bắt đầu đoạn (chia cho 16)
Ví dụ: 11340h Æ 1134h
z Offset: vị trí của byte trong đoạn
z Các đoạn có thể chồng lên, nối tiếp, cách xa nhau
z Chỉ đề cập đến chế độ thực và bộ lệnh 8086
1
z Nhóm thanh ghi đa dụng:
z AX, BX, CX, DX
z Xem như 1 thanh ghi 16 bit (ví dụ: AX)
1.4 Tổ chức thanh ghi
hoặc 2 thanh ghi 8 bit (ví dụ: AH (high), AL (low))
z Thanh ghi là nơi lưu trữ dữ liệu trong CPU
z Gồm 16 thanh ghi, mỗi thanh dài 16 (hoặc 32 bit)
z Người dùng chỉ dùng địa chỉ tương đối
z Chứa dữ liệu, nhưng trong mỗi lệnh sẽ có ý nghĩa riêng
z Nhóm thanh ghi con trỏ và chỉ số (Pointer, Index Reg)
(chứa địa chỉ offset các vùng dữ liệu)
z CPU sẽ chuyển thành đ/chỉ tuyệt đối và truy xuất bộ nhớ
z SI (Source Index) và
z Nhóm thanh ghi đoạn (Segment Register)
(chứa địa chỉ đoạn các ô nhớ cần truy xuất)
DI (Destination Index) ứng với địa chỉ seg. trong DS, ES
z SP (Stack Pointer) và
BP (Base Point.) ứng với địa chỉ segment trong SS
z CS (Code Seg.) chứa địa chỉ đoạn vùng mã lệnh
z Nhóm thanh ghi cờ và con trỏ lệnh
z FLAGS: ghi nhận thông tin điều khiển và trạng thái CPU
(sẽ nói kỹ ở bài sau)
z IP (Instruction Pointer) địa chỉ offset của lệnh tiếp,
ứng với địa chỉ segment trong CS
z DS (Data Seg.)
dữ liệu
z SS (Stack Seg.)
ngăn xếp
z ES (Extra Seg.) kèm thêm với DS
1.5 Ngôn ngữ máy – Hợp ngữ
z (Các thanh ghi sắp xếp theo chức năng)
z Ngôn ngữ máy:
z Dạng nhị phân
z Thực hiện nhanh, chiếm ít chỗ trong bộ nhớ
z Khó viết, khó nhớ
z Hợp ngữ:
z Dùng một số ký hiệu dễ nhớ
z Cần có ch/trình chuyển hợp ngữ sang ng/ngữ máy
1.6 Cách viết lệnh hợp ngữ
z
Chương trình hợp ngữ gồm nhiều lệnh, mỗi lệnh viết trên 1 dòng
z
z
Cách viết số:
z
Gồm 2 loại: chỉ thị (lệnh) và chĩ dẫn (hướng dẫn hợp dịch)
z
mặc định thập phân (D/d), hexa (H/h), binary (B/b) 10h
z
Cú pháp: <Tên> <TácTử> <TácTố> <;GhiChú>
1011b
z
<Tên>: Là chuỗi gồm các ký tự, ký số, ? , . , @ , _ , $, %
Cách viết chuỗi:
Nhãn: vị trí trong chương trình (theo sau :), tên thủ tục, tên biến
z
giữa 2 dấu nháy đơn hoặc nháy kép
‘A’ “ABC”
Ký hiệu: đại diện cho hằng số hoặc chuỗi ký tự
z
(các ký tự sẽ được chuyển thành mã ASCII tương ứng)
z
z
<TácTử>: Tên gợi nhớ của lệnh
<TácTố>: Xác định dữ liệu sẽ được xử lý bởi lệnh
Nếu có nhiều tác tố, cách nhau dấu phẩy,
Nếu có 2 tác tố, có thứ tự: tác tố đích, tác tố nguồn
z
<;GhiChú>: Sau dấu ; để giải thích ý nghĩa lệnh
2
z
Cấu trúc chương trình hợp ngữ:
Khai báo kích thước chương trình
.MODEL Kiểu ; thường dùng SMALL ...
Khai báo kích thước vùng ngăn xếp
.STACK KíchThước ; thường 100h, mặc định 1024
Khai báo dữ liệu bắt đầu bằng chỉ dẫn
z Định nghĩa vùng nhớ dữ liệu (biến):
z Nhãn DB Trị1, Trị2, ...
z
z Nhãn DW Trị1, Trị2, ...
z
Nhãn là tên vùng nhớ (biến), được định nghĩa với kích thước
là byte (DB) hoặc word (DW), được gán Trị...
z
Không gán trị: ?
B DB ?
.DATA
...
Gán nhiều trị giống nhau: toán tử DUP
SCO DB 6 DUP (0)
z
Khai báo mã lệnh bắt đầu bằng chỉ dẫn
z Định nghĩa hằng:
z Tên EQU Hằng
.CODE
...
CR EQU 0Dh
LF EQU 0Ah
; (ascii code) Carriage Return, về đầu dòng
z
Kết thúc chương trình bằng chỉ dẫn
;
Line Feed, sang dòng mới
END
STR EQU ‘Du lieu nhap sai!!’
MESS DB STR,CR,LF,’$’
z
INT 21h
1.7 Một số lệnh đơn giản
Gọi trình con của hệ điều hành, chức năng tùy theo trị th/ghi AH
z
MOV
Đích, Nguồn
z
z
z
AH = 1
Nhận 1 ký tự từ bàn phím, mã ASCII chứa trong AL
z
z
Sao chép dữ liệu (Nguồn) vào thanh ghi / vùng nhớ (Đích)
Hai tác tố không đồng thời là vùng nhớ hoặc th/ghi đoạn
AH = 2
Xuất 1 ký tự ra màn hình, ký tự chứa trong DL
z
z
z
z
z
z
XCHG Đích, Nguồn
Hoán chuyển dữ liệu (không đồng thời là vùng nhớ)
ADD Đích, Nguồn
Cộng dồn Nguồn vào Đích. Hai tác tố khg đồng thời là vùng nhớ
SUB Đích, Nguồn
Trừ Đích cho Nguồn
INC Đích
Tăng Đích lên 1
DEC Đích
Giảm Đích đi 1
NEG Đích
Đổi dấu Đích
AH = 9
z
Xuất chuỗi ký tự có địa chỉ offset trong DX (seg. trong DS)
Chuỗi ký tự phải kết thúc bằng ‘$’
.DATA
z
MSG DB “Chuoi can hien thi$”
.CODE
MOV AX, @DATA
MOV DS, AX
MOV AH, 9
; lấy địa chỉ seg dữ liệu (MOV AX, SEG DATA)
; đưa vào DS
z
z
LEA DX, MSG
INT 21h
; đưa off MSG vào DX (MOV DX, OFFSET MSG)
z
AH = 4Ch
Kết thúc chương trình và trả điều khiển về cho hệ điều hành
z
z
3
Bạn đang xem tài liệu "Bài giảng Kiến trúc máy tính và hợp ngữ - Bài 1: Đại cương về Hợp ngữ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_kien_truc_may_tinh_va_hop_ngu_bai_1_dai_cuong_ve_h.pdf

