Bài giảng Kiến trúc máy tính - Bài 1: Đại cương về Hợp ngữ

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ớ 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 ( Đ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 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

pdf3 trang | Chia sẻ: thanhle95 | Lượt xem: 498 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng Kiến trúc máy tính - Bài 1: Đại cương về Hợp ngữ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Bà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 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ớ 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 ( Đ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 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 Segment 1134h 12363h 11340h Offset 1023h 21.4 Tổ chức thanh ghi 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 CPU sẽ chuyển thành đ/chỉ tuyệt đối và truy xuất bộ nhớ z Nhóm thanh ghi đoạn (Segment Register) (chứa địa chỉ đoạn các ô nhớ cần truy xuất) z CS (Code Seg.) chứa địa chỉ đoạn vùng mã lệnh 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 z Nhóm thanh ghi đa dụng: 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 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 SI (Source Index) và 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 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 (Các thanh ghi sắp xếp theo chức năng) 1.5 Ngôn ngữ máy – Hợp 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 Gồm 2 loại: chỉ thị (lệnh) và chĩ dẫn (hướng dẫn hợp dịch) z Cú pháp: z : Là chuỗi gồm các ký tự, ký số, ? , . , @ , _ , $, % ƒ Nhãn: vị trí trong chương trình (theo sau :), tên thủ tục, tên biến ƒ Ký hiệu: đại diện cho hằng số hoặc chuỗi ký tự 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 z Cách viết số: z mặc định thập phân (D/d), hexa (H/h), binary (B/b) 10h 1011b z Cách viết chuỗi: z giữa 2 dấu nháy đơn hoặc nháy kép ‘A’ “ABC” z (các ký tự sẽ được chuyển thành mã ASCII tương ứng) 3z Định nghĩa vùng nhớ dữ liệu (biến): z Nhãn DB Trị1, Trị2, ... z Nhãn DW Trị1, Trị2, ... 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ị... ƒ Không gán trị: ? B DB ? ƒ Gán nhiều trị giống nhau: toán tử DUP SCO DB 6 DUP (0) z Định nghĩa hằng: 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 STR EQU ‘Du lieu nhap sai!!’ ƒ MESS DB STR,CR,LF,’$’ z 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 dữ liệu bắt đầu bằng chỉ dẫn .DATA ... z Khai báo mã lệnh bắt đầu bằng chỉ dẫn .CODE ... z Kết thúc chương trình bằng chỉ dẫn END 1.7 Một số lệnh đơn giản z MOV Đích, Nguồn z Sao chép dữ liệu (Nguồn) vào thanh ghi / vùng nhớ (Đích) z Hai tác tố không đồng thời là vùng nhớ hoặc th/ghi đoạn z XCHG Đích, Nguồn z Hoán chuyển dữ liệu (không đồng thời là vùng nhớ) z ADD Đích, Nguồn z Cộng dồn Nguồn vào Đích. Hai tác tố khg đồng thời là vùng nhớ z SUB Đích, Nguồn z Trừ Đích cho Nguồn z INC Đích z Tăng Đích lên 1 z DEC Đích z Giảm Đích đi 1 z NEG Đích z Đổi dấu Đích z INT 21h Gọi trình con của hệ điều hành, chức năng tùy theo trị th/ghi AH z AH = 1 ƒ Nhận 1 ký tự từ bàn phím, mã ASCII chứa trong AL z AH = 2 ƒ Xuất 1 ký tự ra màn hình, ký tự chứa trong DL z AH = 9 ƒ 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 MSG DB “Chuoi can hien thi$” .CODE MOV AX, @DATA ; lấy địa chỉ seg dữ liệu (MOV AX, SEG DATA) MOV DS, AX ; đưa vào DS MOV AH, 9 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 và trả điều khiển về cho hệ điều hành
Tài liệu liên quan