Tổng quan về Hợp ngữ

63 388 0
Tổng quan về Hợp ngữ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tổng quan về Hợp ngữ

Chương 1: TỔNG QUAN Một chương trình viết bằng hợp ngữ: + Bao gồm: Segment (vùng nhớ) / Stack (ngăn xếp) + Xử lý một nhóm byte (đơn vò dữ liệu) – gọi là trường, có kích thước: - Từ (Word): Trường 2 byte (16 bit) - Từ kép (Double Word): Trường 4 byte (32 bit) - Bốn từ (QuadWord): Trường 8 byte (64 bit) - Paragraph: Trường 16 byte - KiloByte (KB): Trường 2 10 byte (1024 byte) - MegaByte (MB): Trường 2 20 byte (1024 KB) - GigaByte (GB): Trường 2 30 byte (1024 MB) Segment và đònh đòa chỉ Segment là: - Vùng nhớ cụ thể trong một chương trình - Đòa chỉ bắt đầu có giá trò chia hết 16 (10H) - Có 3 loại chính: * Segment mã * Segment dữ liệu * Segment Stack - Để đònh đòa chỉ một segment: thay đổi đòa chỉ chứa trong các thanh ghi segment tương ứng SS DS CS Đòa chỉ Đòa chỉ Đòa chỉ Segment Stack Segment dữ liệu Segment mã Các thanh ghi segment Bộ nhớ 045F[0]H (045FH) Chương 1: TỔNG QUAN Segment và đònh đòa chỉ Đòa chỉ Offset của segment: - Khoảng cách tính bằng byte từ đòa chỉ bắt đầu của segment - Đòa chỉ Offset 2 byte có tầm khoảng cách 0000H  FFFFH (0  65535) - Để tham chiếu một đòa chỉ trong một segment: kết hợp đòa chỉ segment trong thanh ghi segment với đòa chỉ offset VD: Thanh ghi segment DS chứa đòa chỉ segment dữ liệu: 045F[0]H Một chỉ thò tham chiếu đến ô nhớ có đòa chỉ offset 0032H trong segment dữ liệu  Đòa chỉ được tham chiếu: 045F0H +0032H 04622H SS DS CS Đòa chỉ Đòa chỉ Đòa chỉ Segment Stack Segment dữ liệu Segment mã Các thanh ghi segment Bộ nhớ 045F[0]H (045FH) 04622H Chương 1: TỔNG QUAN Các thanh ghi Thanh ghi segment CS: - Lưu đòa chỉ bắt đầu của segment mã của chương trình - Tìm – nạp đòa chỉ chỉ thò: CS (đòa chỉ) + Con trỏ lệnh IP (offset) (CS:IP) Ví dụ: Thanh ghi segment CS chứa 25A4[0]H Con trỏ lệnh IP chứa 412H Đòa chỉ của chỉ thò kế tiếp là: 25A40H + 412H 25E52H Chương 1: TỔNG QUAN Các thanh ghi Thanh ghi segment DS: - Lưu đòa chỉ bắt đầu của segment dữ liệu của chương trình - Tìm vò trí byte cụ thể của chương trình: DS (đòa chỉ) + Đòa chỉ offset Thanh ghi segment SS: - Lưu đòa chỉ bắt đầu của segment Stack của chương trình - Chỉ ra từ hiện hành trong stack: SS (đòa chỉ) + Con trỏ Stack SP (offset) (SS:SP) Ví dụ: Thanh ghi segment SS chứa 27B4[0]H Con trỏ stack SP chứa 312H Từ hiện hành trong stack là: 27B40H + 312H 27E42H Chương 1: TỔNG QUAN Ngăn xếp (Stack) Khái niệm: - Vùng nhớ dự trữ trong chương trình gọi là ngăn xếp - Mục đích: lưu trữ tạm thời các đòa chỉ và dữ liệu - Mỗi dữ liệu trong ngăn xếp là một từ (2 byte) Khởi tạo ngăn xếp: - Thanh ghi segment stack SS được khởi tạo bởi DOS chứa đòa chỉ bắt đầu của stack - Con trỏ stack SP chứa kích thước vùng stack (trỏ tới byte cuối stack) Chương 1: TỔNG QUAN Hoạt động của ngăn xếp: - Dữ liệu lưu trữ bắt đầu ở đòa chỉ cao nhất - Lưu theo chiều giảm dần nội dung của con trỏ stack SP SS SP Ngăn xếp (Stack) PUSH: - Giảm nội dung SP xuống 2  Lưu giá trò ở Stack Chương 1: TỔNG QUAN POP: - Trả về giá trò tại Stack  Tăng nội dung SP lên 2 Khi hệ thống nhận dữ liệu ghi vào bộ nhớ sẽ đảo trình tự byte ngược lại: Byte thấp ở đòa chỉ thấp và Byte cao ở đòa chỉ cao của bộ nhớ: Ví dụ: Chuyển 0401H từ thanh ghi vào vò trí nhớ 5612 và 5613 Thanh ghi 04 01 (0401) Bộ nhớ 01 04 (0104) 5612 5613 Byte thấp Byte cao Ngăn xếp (Stack) Chương 1: TỔNG QUAN SS SP = 28 1. Vùng stack ban đầu: Ví dụ: Cất nội dung thanh ghi AX và BX lên stack, sau đó khôi phục lại. Giả sữ AX chứa 015AH và BX chứa 03D2H, con trỏ SP chứa 28H 5A01 SS SP = 26 2. PUSH AX D203 5A01 SS SP = 24 3. PUSH BX D203 5A01 SS SP = 26 4. POP BX D203 5A01 SS SP = 28 5. POP AX Chương 1: TỔNG QUAN Chương trình DEBUG của DOS: - Dùng để kiểm tra và gỡ rối chương trình - Đặc trưng: * Hiển thò mã và dữ liệu chương trình bằng mã hex * Cho phép thực thi chương trình chế độ từng bước - Quy luật: * Không phân biệt chữ HOA và chữ thường * Xác đònh segment và offset bởi dấu (:) ở dạng số hex segment:offset Ví dụ: Hiển thò một vùng nhớ, bắt đầu từ offset 200H trong segment dữ liệu DS: D DS:200 d DS:200 D ds:200 Chương 1: TỔNG QUAN Tập lệnh của DEBUG : Lệnh Chức năng A (Assembler) Hợp dòch các chỉ thò hợp ngữ thành mã máy D (Dump) Hiển thò nội dung một vùng nhớ của bộ nhớ E (Enter) Đưa dữ liệu vào bộ nhớ, bắt đầu ở một vò trí cụ thể G (Go) Chạy chương trình thực thi trong bộ nhớ N (Name) Đặt tên cho một chương trình P (Proceed) Tiếp tục hoặc thực thi một tập các chỉ thò có liên quan Q (Quit) Thoát khỏi debug R (Register) Hiển thò nội dung của một hoặc nhiều thanh ghi T (Trace) Chỉ đònh việc thực thi một chỉ thò U (Unassembler) Dòch ngược mã máy thành chỉ thò của hợp ngữ W (Write) Ghi một chương trình lên đóa [...]... dụ: so sánh cách khai báo biến trong C và hợp ngữ Khai báo trong C char ch; char ch = ‘a’; char ch = 5; char s[]=”\nhello world!” int i=100; long l; char a[] = {1,2,3}; Khai báo trong hợp ngữ ch DB ? ch DB ‘a’ ch DB 5 s DB 10,13,”hello world!$” i DW 100 l DD ? a DB 1,2,3 Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Hằng số + Để tạo ra các mã lệnh dễ hiểu, hợp ngữ sử dụng các tên tượng trưng để biểu... 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Tạo lập & chạy một chương trình hợp ngữ Có 4 bước cụ thể để tạo lập và chạy một chương trình hợp ngữ: 1 Dùng một chương trình soạn thảo văn bản tạo ra một File chương trình nguồn 2 Dùng một chương trình biên dịch tạo ra File đối tượng ngơn ngữ máy 3 Dùng chương trình Link liên kết các File đối tượng tạo ra File chương trình 4 Chạy File chương trình Chương 1: TỔNG... (KB) 512 640 Chương 1: TỔNG QUAN Sử dụng DEBUG – Đưa vào một chương trình hợp ngữ Lệnh A (Assembler) - Báo cho debug nhận chỉ thò hợp ngữ Ví dụ: - Khởi động đòa chỉ bắt đầu trong segment mã ở offset 100H: A 100  Debug hiển thò segment:offset dạng: xxxx:0100 - Gõ vào từng chỉ thò: MOV AL, 25 MOV BL,32 ADD AL,BL NOP Chương 1: TỔNG QUAN Sử dụng DEBUG – Đưa... tạo ra File chương trình 4 Chạy File chương trình Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Tạo lập & chạy một chương trình hợp ngữ Có 4 bước cụ thể để tạo lập và chạy một chương trình hợp ngữ: 1 Dùng một chương trình soạn thảo văn bản tạo ra một File chương trình nguồn 2 Dùng một chương trình biên dịch tạo ra File đối tượng ngơn ngữ máy 3 Dùng chương trình Link liên kết các File đối tượng tạo... từng chỉ thò: MOV AL, 25 MOV BL,32 ADD AL,BL NOP Chương 1: TỔNG QUAN Sử dụng DEBUG – Đưa vào một chương trình hợp ngữ Lệnh U (UnAssembler) - Hiển thò mã máy của các chỉ thò hợp ngữ Ví dụ: U 100,106 Chương 1: TỔNG QUAN Sử dụng DEBUG – Sử dụng chỉ thò ngắt Lấy ngày hiện hành - Chức năng 2AH của INT 21H cho biết ngày hiện hành Ví dụ: - Khởi động đòa chỉ bắt đầu... biệt chữ hoa và chữ thường Ví dụ các tên hợp lệ: COUNTER1 @character SUM_OF_DIGIT $1000 DONE? TEST Ví dụ các tên khơng hợp lệ: TWO WORD 2abc AB45.67 YOU&ME Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Trường tốn tử: Trong một lệnh, trường tốn tử chứa mã lệnh ở dạng tượng trưng, chương trình biên dịch chuyển mã lệnh dạng tượng trưng sang mã lệnh của ngơn ngữ máy Quy tắc: + Tượng trưng của mã lệnh... Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Chuỗi ký tự + Một chuỗi ký tự có thể được khởi tạo bằng mảng các mã ASCII Ví dụ:  Tương đương: LETTER LETTER DB DB „ABC‟ 41h,42h,43h + Trình biên dịch phân biệt một chuỗi ký tự chữ hoa và chữ thường Ví dụ:  Tương đương: LETTER LETTER DB DB „ABC‟ 41h,42h,43h Khác:  Tương đương: LETTER LETTER DB DB „abc‟ 61h,62h,63h Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly... ghi - Gõ T để thực thi chỉ thò MOV - Gõ P để thực thi chỉ thò INT Chương 1: TỔNG QUAN Sử dụng DEBUG – Sử dụng chỉ thò ngắt Lấy ngày hiện hành - Chức năng 2AH của INT 21H cho biết ngày hiện hành AL: Ngày của tuần (0=Sunday) CX: Năm 07DB=2011 DH: Tháng (Từ 01-12) DL: Ngày của tháng (Từ 01-31) Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly + Các chương trình bao gồm các dòng lệnh, mỗi dòng lệnh trên một... hoặc d hoặc khơng có (Ví dụ: 485d) + Một số thập lục phân bắt đầu bằng một chữ số thập phân và kết thúc bằng chữ H hoặc h (Ví dụ: 0ABCh) Ví dụ các số hợp lệ: 1100 1100b -1234d 0FFFFh Ví dụ các số khơng hợp lệ: 1,234 1B4 Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Dữ liệu dưới dạng ký tự: + Các ký tự và chuỗi ký tự được bao trong dấu nháy đơn hoặc nháy kép (Ví dụ: „hello‟)  Trình biên dịch dịch ra... Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly Ví dụ 1: Một lệnh: START: MOV CX,5 ;khởi tạo bộ đếm  Trong ví dụ này, trường tên là nhãn START, tốn tử là MOV, tốn hạng là CX và 5, lời bình là “khởi tạo bộ đếm” Ví dụ 2: Một hướng dẫn biên dịch: MAIN PROC  Trong ví dụ này, trường tên là MAIN, tốn hạng là PROC Dẫn hướng biên dịch này khai báo một chương trình con có tên PROC Chương 1: TỔNG QUAN Tiếp . Chương 1: TỔNG QUAN Sử dụng DEBUG – Đưa vào một chương trình hợp ngữ Lệnh U (UnAssembler) - Hiển thò mã máy của các chỉ thò hợp ngữ Ví dụ: U 100,106 <Enter> Chương 1: TỔNG QUAN Sử dụng. TỔNG QUAN Sử dụng DEBUG – Sử dụng chỉ thò ngắt Lấy ngày hiện hành - Chức năng 2AH của INT 21H cho biết ngày hiện hành AL: Ngày của tuần (0=Sunday) CX: Năm 07DB=2011 DH: Tháng (Từ 01-1 2). tuần (0=Sunday) CX: Năm 07DB=2011 DH: Tháng (Từ 01-1 2) DL: Ngày của tháng (Từ 01-3 1) Chương 1: TỔNG QUAN Tiếp cận cơ bản về Assembly + Các chương trình bao gồm các dòng lệnh, mỗi dòng

Ngày đăng: 02/05/2014, 21:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan