intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Võ đình Thiên | Ngày: | Loại File: PDF | Số trang:3

66
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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ữ

Chủ đề:
Lưu

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

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

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2