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