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