Bài giảng Lập trình hợp ngữ: Intel 8086 - Nguyễn Duy Phúc
Số trang: 61
Loại file: pdf
Dung lượng: 796.13 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 7 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Nội dung Bài giảng Lập trình hợp ngữ Intel 8086 - Nguyễn Duy Phúc nhằm giúp bạn nắm bắt khái niệm, tương đương logic giữa các ngôn ngữ, viết và chạy chương trình hợp ngữ, biểu diễn dữ liệu trong bộ nhớ, giới thiệu CPU Intel 8086/8088,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hợp ngữ: Intel 8086 - Nguyễn Duy Phúc LẬP TRÌNH HỢP NGỮ Intel 8086Nguyễn Duy Phúcduyphucit@live.comVĩnh Long, 08/2013Khái niệm Ngôn ngữ máy (ML - Machine Language) • CPU trực tiếp “hiểu” và thực thi được • Dạng nhị phân Hợp ngữ (Assembly Language) • Thay thế lệnh hợp ngữ dạng nhị phân bằng từ tiếng Anh Ngôn ngữ cấp cao (High Level Language) • Gần gũi với con người ASM và HLL phải dịch về ML để thực hiệnTương đương logic giữa các ngôn ngữ ASM ML HLL ASM ML ASM MLTại sao phải lập trình hợp ngữ? Chương trình nhanh, nhỏ gọn Khai thác trực tiếp thiết bị Làm việc ở cấp độ thấp • Thiết kế máy tính • Viết trình dịch (compiler), trình điều khiển thiết bị (driver) • Reverse Engineering Lập trình hệ thống nhúng (embedded system) • Tài nguyên hạn chế • Tối ưu phần mềmViết và chạy chương trình hợp ngữ Chương trình Hợp dịch Chương trình ngôn nguồn hợp ngữ ngữ máy (plain text, .asm) (nhị phân) Turbo Assembler, Microsoft Assembler, Netwide Assembler,… Text editor, IDE .EXE, .COM, …Biểu diễn dữ liệu trong bộ nhớ Byte (8 bit) • Giá trị: 0..255 hoặc -128..127 Word (16 bit) • Giá trị: 0..65535 hoặc -32768..32767 • Lưu trữ trong bộ nhớ: byte cao lưu địa chỉ cao, byte thấp lưu địa chỉ thấp • Ví dụ: (20400)10 = (4FB0)16 Địa chỉ Giá trị ô nhớ i B0 i+1 4FBiểu diễn dữ liệu trong bộ nhớ (2) Ký tự • Cách viết: ‘a’, “a” • Lưu trong bộ nhớ dạng mã ASCII 8 bit • Ví dụ: ‘a’ 97 Chuỗi • Cách viết: ‘abc’, “abc” • Lưu trong bộ nhớ dạng dãy ký tự • Ví dụ: “abc” 97 98 99Biểu diễn dữ liệu trong bộ nhớ (3) Số BCD • Dùng 8 bit hoặc 4 bit biểu diễn cho 1 ký số hệ 10 • Ví dụ: (15)10 (0001 0101)BCD-4bit hoặc (00000001 00000101)BCD-8bit Số nguyên có dấu biểu diễn theo dạng bù 2 Qui ước Hệ Cách viết 10 255, 255d, 255D 2 10011b, 10011B 16 3Fh, 3FH, 0C8hGiới thiệu CPU Intel 8086/8088 Được Intel sản xuất năm 1978 Sử dụng trong máy IBM-PC năm 1981 Phổ biến, phát triển thành họ kiến trúc x86 Bus địa chỉ 20 bit CPU 8086 Bộ nhớ 16 bit Bus dữ liệu 16 bitTổ chức bộ nhớ Địa chỉ 20 bit Bộ nhớ tối đa 1MB Tổ chức bộ nhớ thành từng đoạn (segment), mỗi đoạn 64KB (216) Lập trình truy xuất ô nhớ theo địa chỉ logic • Dạng: segment:offset • Segment, offset có kích thước 16 bit, viết dạng hex Chuyển từ địa chỉ logic địa chỉ vật lý (20bit) • Segment * 16 + offsetTổ chức bộ nhớ (2) Ví dụ: địa chỉ A4FB:4872 • A4FB * 16 (10h) A4FB0 • A4FB0 + 4872 = A9822h (20 bit) Các đoạn có thể chồng lên nhau, cách nhau theo bội số 16 (0000:0000, 0001:0000,…) Một địa chỉ vật lý có thể có nhiều địa chỉ logic (thuộc nhiều đoạn) Ví dụ: 1256:000A, 1240:016A có cùng địa chỉ vật lý là 1256AhTổ chức thanh ghi Có 14 thanh ghi 16 bit Nhóm thanh ghi đoạn: CS, DS, SS, ES • CS (Code Segment): chứa địa chỉ segment của đoạn mã chương trình đang thực hiện • DS (Data Segment): chứa địa chỉ segment đoạn dữ liệu chính của chương trình • SS (Stack Segment): chứa địa chỉ segment đoạn stack của chương trình đang thực hiện • ES (Extra Segment): đoạn dữ liệu bổ sungTổ chức thanh ghi (2) Nhóm thanh ghi đa dụng: AX, BX, CX, DX • AX (Accumulator) - Thanh ghi tích lũy: thường lưu kết quả của các lệnh tính toán • BX (Base) – Thanh ghi cơ sở: thường đùng định vị địa chỉ offset khi truy xuất bộ nhớ • CX (Count) – Thanh ghi đếm: thường dùng xác định số lần lặp trong các lệnh lặp • DX (Data) – Thanh ghi dữ liệu: thường dùng lưu dữ liệu trong các lệnh tính toánTổ chức thanh ghi (3) Mỗi thanh ghi đa dụng có thể tách thành 2 thanh ghi con 8 bit AX CX AH AL CH CL BX DX BH BL DH DLTổ chức thanh ghi (4) Nhóm thanh ghi con trỏ và chỉ mục: SP, BP, SI, DI • SP (Stack Pointer): địa chỉ offset của phần tử trên đỉnh stack • BP (Base Pointer): dùng định vị offset khi truy xuất stack • SI (Source Index): dùng định vị offset chuỗi nguồn trong các lệnh ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hợp ngữ: Intel 8086 - Nguyễn Duy Phúc LẬP TRÌNH HỢP NGỮ Intel 8086Nguyễn Duy Phúcduyphucit@live.comVĩnh Long, 08/2013Khái niệm Ngôn ngữ máy (ML - Machine Language) • CPU trực tiếp “hiểu” và thực thi được • Dạng nhị phân Hợp ngữ (Assembly Language) • Thay thế lệnh hợp ngữ dạng nhị phân bằng từ tiếng Anh Ngôn ngữ cấp cao (High Level Language) • Gần gũi với con người ASM và HLL phải dịch về ML để thực hiệnTương đương logic giữa các ngôn ngữ ASM ML HLL ASM ML ASM MLTại sao phải lập trình hợp ngữ? Chương trình nhanh, nhỏ gọn Khai thác trực tiếp thiết bị Làm việc ở cấp độ thấp • Thiết kế máy tính • Viết trình dịch (compiler), trình điều khiển thiết bị (driver) • Reverse Engineering Lập trình hệ thống nhúng (embedded system) • Tài nguyên hạn chế • Tối ưu phần mềmViết và chạy chương trình hợp ngữ Chương trình Hợp dịch Chương trình ngôn nguồn hợp ngữ ngữ máy (plain text, .asm) (nhị phân) Turbo Assembler, Microsoft Assembler, Netwide Assembler,… Text editor, IDE .EXE, .COM, …Biểu diễn dữ liệu trong bộ nhớ Byte (8 bit) • Giá trị: 0..255 hoặc -128..127 Word (16 bit) • Giá trị: 0..65535 hoặc -32768..32767 • Lưu trữ trong bộ nhớ: byte cao lưu địa chỉ cao, byte thấp lưu địa chỉ thấp • Ví dụ: (20400)10 = (4FB0)16 Địa chỉ Giá trị ô nhớ i B0 i+1 4FBiểu diễn dữ liệu trong bộ nhớ (2) Ký tự • Cách viết: ‘a’, “a” • Lưu trong bộ nhớ dạng mã ASCII 8 bit • Ví dụ: ‘a’ 97 Chuỗi • Cách viết: ‘abc’, “abc” • Lưu trong bộ nhớ dạng dãy ký tự • Ví dụ: “abc” 97 98 99Biểu diễn dữ liệu trong bộ nhớ (3) Số BCD • Dùng 8 bit hoặc 4 bit biểu diễn cho 1 ký số hệ 10 • Ví dụ: (15)10 (0001 0101)BCD-4bit hoặc (00000001 00000101)BCD-8bit Số nguyên có dấu biểu diễn theo dạng bù 2 Qui ước Hệ Cách viết 10 255, 255d, 255D 2 10011b, 10011B 16 3Fh, 3FH, 0C8hGiới thiệu CPU Intel 8086/8088 Được Intel sản xuất năm 1978 Sử dụng trong máy IBM-PC năm 1981 Phổ biến, phát triển thành họ kiến trúc x86 Bus địa chỉ 20 bit CPU 8086 Bộ nhớ 16 bit Bus dữ liệu 16 bitTổ chức bộ nhớ Địa chỉ 20 bit Bộ nhớ tối đa 1MB Tổ chức bộ nhớ thành từng đoạn (segment), mỗi đoạn 64KB (216) Lập trình truy xuất ô nhớ theo địa chỉ logic • Dạng: segment:offset • Segment, offset có kích thước 16 bit, viết dạng hex Chuyển từ địa chỉ logic địa chỉ vật lý (20bit) • Segment * 16 + offsetTổ chức bộ nhớ (2) Ví dụ: địa chỉ A4FB:4872 • A4FB * 16 (10h) A4FB0 • A4FB0 + 4872 = A9822h (20 bit) Các đoạn có thể chồng lên nhau, cách nhau theo bội số 16 (0000:0000, 0001:0000,…) Một địa chỉ vật lý có thể có nhiều địa chỉ logic (thuộc nhiều đoạn) Ví dụ: 1256:000A, 1240:016A có cùng địa chỉ vật lý là 1256AhTổ chức thanh ghi Có 14 thanh ghi 16 bit Nhóm thanh ghi đoạn: CS, DS, SS, ES • CS (Code Segment): chứa địa chỉ segment của đoạn mã chương trình đang thực hiện • DS (Data Segment): chứa địa chỉ segment đoạn dữ liệu chính của chương trình • SS (Stack Segment): chứa địa chỉ segment đoạn stack của chương trình đang thực hiện • ES (Extra Segment): đoạn dữ liệu bổ sungTổ chức thanh ghi (2) Nhóm thanh ghi đa dụng: AX, BX, CX, DX • AX (Accumulator) - Thanh ghi tích lũy: thường lưu kết quả của các lệnh tính toán • BX (Base) – Thanh ghi cơ sở: thường đùng định vị địa chỉ offset khi truy xuất bộ nhớ • CX (Count) – Thanh ghi đếm: thường dùng xác định số lần lặp trong các lệnh lặp • DX (Data) – Thanh ghi dữ liệu: thường dùng lưu dữ liệu trong các lệnh tính toánTổ chức thanh ghi (3) Mỗi thanh ghi đa dụng có thể tách thành 2 thanh ghi con 8 bit AX CX AH AL CH CL BX DX BH BL DH DLTổ chức thanh ghi (4) Nhóm thanh ghi con trỏ và chỉ mục: SP, BP, SI, DI • SP (Stack Pointer): địa chỉ offset của phần tử trên đỉnh stack • BP (Base Pointer): dùng định vị offset khi truy xuất stack • SI (Source Index): dùng định vị offset chuỗi nguồn trong các lệnh ...
Tìm kiếm theo từ khóa liên quan:
Lập trình hợp ngữ Bài giảng Lập trình hợp ngữ Ngôn ngữ máy Viết chương trình hợp ngữ Chạy chương trình hợp ngữ Kiến trúc máy tínhGợi ý tài liệu liên quan:
-
67 trang 300 1 0
-
Giáo trình Kiến trúc máy tính và quản lý hệ thống máy tính: Phần 1 - Trường ĐH Thái Bình
119 trang 233 0 0 -
105 trang 203 0 0
-
84 trang 200 2 0
-
Giải thuật và cấu trúc dữ liệu
305 trang 159 0 0 -
142 trang 146 0 0
-
Thuyết trình môn kiến trúc máy tính: CPU
20 trang 145 0 0 -
Bài giảng Lắp ráp cài đặt máy tính 1: Bài 2 - Kiến trúc máy tính
56 trang 104 0 0 -
4 trang 96 0 0
-
Giáo trình kiến trúc máy tính - ĐH Cần Thơ
95 trang 87 1 0