Bài giảng Cấu trúc máy tính: Chương 5 - Hoàng Văn Hiệp
lượt xem 8
download
Bài giảng "Cấu trúc máy tính - Chương 5: Lập trình hợp ngữ với 8088" trình bày các nội dung: Mở đầu về lập trình hợp ngữ; các cấu trúc lập trình với hợp ngữ; các lệnh logic, lệnh dịch và lệnh quay; ngăn xếp và thủ tục; các lệnh nhân, chia; các lệnh thao tác chuỗi. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc máy tính: Chương 5 - Hoàng Văn Hiệp
- Cấu trúc máy tính Chƣơng 5 LẬP TRÌNH HỢP NGỮ VỚI 8088 516
- Nội dung chƣơng 5 5.1. Mở đầu về lập trình hợp ngữ 5.2. Các cấu trúc lập trình với hợp ngữ 5.3. Các lệnh logic, lệnh dịch và lệnh quay 5.4. Ngăn xếp và thủ tục 5.5. Các lệnh nhân, chia 5.6. Các lệnh thao tác chuỗi 5.7. Một số ví dụ 517
- 5.1. Mở đầu về lập trình hợp ngữ 1. Các loại ngôn ngữ lập trình 2. Cú pháp của hợp ngữ 3. Dữ liệu của chƣơng trình 4. Khai báo biến 5. Khai báo hằng 6. Một số lệnh cơ bản 7. Cấu trúc chƣơng trình 8. Chƣơng trình EXE và COM 9. Vào-ra đơn giản 10. Các ví dụ 11. Dịch và chạy chƣơng trình 518
- 1. Các loại ngôn ngữ lập trình Ngôn ngữ máy: Chỉ đƣợc biểu diễn bằng số nhị phân. Bộ vi xử lý chỉ hiểu đƣợc các chƣơng trình mã máy. Con ngƣời rất khó khăn để tạo lập hay đọc hiểu chƣơng trình ngôn ngữ máy. Hợp ngữ (Assembly Language): Là ngôn ngữ lập trình bậc thấp (gần ngôn ngữ máy nhất). Đƣợc xây dựng trên cơ sở ký hiệu tập lệnh của bộ vi xử lý tƣơng ứng. Phụ thuộc hoàn toàn vào bộ vi xử lý cụ thể. Ngôn ngữ lập trình bậc cao: Gần với ngôn ngữ tự nhiên hơn. Đƣợc xây dựng độc lập với cấu trúc của máy tính. 519
- Lập trình với hợp ngữ Ƣu điểm: Can thiệp sâu vào cấu trúc hệ thống. Hiểu sâu hơn về hệ thống. Chƣơng trình mã máy tƣơng ứng sẽ ngắn hơn, thƣờng nhanh hơn và tốn ít bộ nhớ hơn. Nhƣợc điểm: Khó học vì gần với mã máy. Chƣơng trình nguồn dài, không thích hợp để xây dựng những chƣơng trình lớn. Kết hợp ngôn ngữ lập trình bậc cao với hợp ngữ. 520
- Chƣơng trình dịch hợp ngữ Đƣợc gọi là ASSEMBLER Một số chƣơng trình dịch hợp ngữ cho IBM-PC: MASM – Microsoft Marco Assembler: Các tệp: MASM.EXE, LINK.EXE, EXE2BIN.EXE ... TASM – Turbo Assembler: Các tệp: TASM.EXE, TLINK.EXE ... 521
- Các bƣớc lập trình Bƣớc 1: Phát biểu bài toán Bƣớc 2: Xây dựng thuật giải Bƣớc 3: Viết mã chƣơng trình Bƣớc 4: Dịch và sửa lỗi cú pháp Bƣớc 5: Chạy thử và hiệu chỉnh chƣơng trình 522
- Các cấu trúc lập trình cơ bản Cấu trúc tuần tự Cấu trúc rẽ nhánh Cấu trúc lặp 523
- 2. Cú pháp của hợp ngữ Chƣơng trình hợp ngữ gồm các dòng lệnh, mỗi lệnh viết trên một dòng, mỗi dòng có thể là: Lệnh của bộ vi xử lý (instruction) Chỉ dẫn của chƣơng trình dịch ASSEMBLER Các lệnh hợp ngữ không phân biệt chữ hoa, chữ thƣờng. Khi dịch thành mã máy thì chỉ có các lệnh của bộ vi xử lý mới đƣợc dịch. Cấu trúc của một dòng lệnh : Tên Thao tác Toán hạng Chú thích ( Name Operation Operand Comment ) Giữa các trƣờng phải có ít nhất một dấu cách (hoặc TAB) Ví dụ: MAIN PROC BAT_DAU: MOV CX, 50 ; khoi tao bo dem 524
- Ý nghĩa các trƣờng trong lệnh Trƣờng tên: Sử dụng cho: nhãn lệnh, tên thủ tục, tên biến Quy ƣớc đặt tên: dài từ 1 đến 31 ký tự, cho phép sử dụng: Chữ cái (không phân biệt chữ hoa và chữ thƣờng) Chữ số (không đƣợc dùng làm ký tự đầu tiên) Các ký tự khác: ?, @, $, %, . (dấu . chỉ đƣợc dùng khi nó là ký tự đầu tiên). 525
- Ý nghĩa các trƣờng trong lệnh (tiếp) Trƣờng thao tác: Nếu là lệnh của vi xử lý thì đó chính là mã lệnh (MOV, CALL, ADD,...). Nếu là chỉ dẫn thì đó là lệnh giả của chƣơng trình dịch (Pseudo-op). 526
- Ý nghĩa các trƣờng trong lệnh (tiếp) Trƣờng toán hạng: Đối với lệnh thì toán hạng xác định dữ liệu bị tác động bởi mã lệnh. Một lệnh có thể có 0, 1, 2 toán hạng. Ví dụ: MOV CX,5 ; 2 toán hạng INC AX ; 1 toán hạng NOP ; 0 toán hạng Đối với lệnh giả thì toán hạng cho thêm thông tin cho lệnh giả đó. Trƣờng chú thích: Bắt đầu bằng dấu ";" theo sau đó là lời giải thích. 527
- 3. Dữ liệu của chƣơng trình Hợp ngữ cho phép biểu diễn dƣới dạng: Số nhị phân: 1011b, 1011B, ... Số thập phân: 35, 35d, 35D, ... Số Hexa: 4Ah, 0ABCDh, 0FFFFH, ... Kí tự: "A", 'HELLO', "Bach Khoa", ... Tất cả các kiểu dữ liệu trên sau đó đều đƣợc trình dịch Assembler dịch ra mã nhị phân. Mỗi kí tự đƣợc dịch thành mã ASCII tƣơng ứng Chƣơng trình không phân biệt 'A' với 41h hay 65 528
- Các chỉ thị giả định số liệu Chỉ thị giả Biểu diễn DB Định nghĩa byte DW Định nghĩa word (2 byte) DD Định nghĩa double word (4 byte) DQ Định nghĩa quadword (8 byte liên tiếp) DT Định nghĩa tenbyte (10 byte liên tiếp) 529
- 4. Khai báo biến Biến Byte: Khai báo: Ten_bien DB Gia_tri_khoi_dau Ten_bien DB ? Ví dụ: Age DB 25 ; Khởi tạo giá trị ban đầu Age = 25 Alpha DB ? ; Ban đầu Alpha không xác định Khoảng xác định của biến Byte: Số không dấu: [0, 255] Số có dấu: [-128, 127] 530
- Khai báo biến (tiếp) Biến Word: Khai báo: Ten_bien DW Gia_tri_khoi_dau Test 1111 1011 Ten_bien DW ? 1111 1111 Địa chỉ tăng dần Ví dụ: Beta 34h Test DW -5 ; -5 = 1111111111111011b 12h Beta DW 1234h ; 1234h = 0001001000110100b XYZ XYZ DW ? ? Khoảng xác định của biến Word: Số không dấu: [0, 65535] Số có dấu: [-32768, 32767] 531
- Khai báo biến (tiếp) Biến mảng: MangB 10h Mảng Byte: 20h MangB DB 10h, 20h, 30h, 40h 30h Buffer DB 100 dup (?) 40h Mảng Word: MangW DW -12, 127, 0A48Bh MangW 1111 0100 Mảng kí tự: 1111 1111 Thực chất là mảng Byte 0111 1111 Ví dụ: 2 cách viết sau là tƣơng đƣơng 0000 0000 M DB 'ABC' 1000 1011 M DB 41h, 42h, 43h 1010 0100 532
- 5. Khai báo hằng Cú pháp: Ten_hang EQU Gia_tri Ví dụ: TenTruong EQU 'BACH KHOA' CR EQU 13 LF EQU 10 ... ThongBao DB 'DAI HOC', CR, LF, TenTruong DoDaiChuoi EQU $ - offset ThongBao Hằng không đƣợc cấp phát ngăn nhớ 533
- 6. Một số lệnh cơ bản Lệnh MOV (Move): MOV đích, nguồn Copy dữ liệu từ toán hạng nguồn sang toán hạng đích Kích thƣớc của 2 toán hạng phải giống nhau Ví dụ: MOV AX, BX Đích Thanh ghi Thanh ghi Ngăn nhớ Nguồn chung đoạn MOV AL, 'A' Thanh ghi MOV BH, 120 Có Có Có chung Thanh ghi đoạn Có Có Có ; MOV DS, 0A000h ; SAI MOV AX, 0A000h Ngăn nhớ Có Có Không MOV DS, AX Hằng Có Không Có ; MOV Bien_2, Bien_1; SAI MOV AL, Bien_1 MOV Bien_2, AL 534
- Một số lệnh cơ bản (tiếp) Lệnh XCHG (Exchange): XCHG đích, nguồn Hoán đổi nội dung 2 toán hạng cho nhau Kích thƣớc của 2 toán hạng phải giống nhau Ví dụ: Đích Thanh ghi Nguồn Ngăn nhớ XCHG AX, BX chung XCHG AH, Byte_1 Thanh ghi Có Có XCHG Word_1, BX chung Ngăn nhớ Có Không ; XCHG Word_1, Word_2 ; SAI MOV AX, Word_1 MOV BX, Word_2 MOV Word_1, BX MOV Word_2, AX 535
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng: Cấu trúc máy tính và ghép nối
177 p | 777 | 191
-
Bài giảng cấu trúc máy tính - Chương 2 Các thành phần cơ bản của máy tính
62 p | 481 | 139
-
Bài giảng cấu trúc máy tính - Chương 1 Giới thiệu chung
42 p | 353 | 88
-
Bài giảng Cấu trúc máy tính - Đinh Đồng Lưỡng
245 p | 205 | 50
-
Bài giảng Cấu trúc máy tính - GV. Thanh An
35 p | 156 | 34
-
Bài giảng cấu trúc máy tính - GV.Đinh Đồng Lưỡng
245 p | 171 | 23
-
Bài giảng Cấu trúc máy tính - Chương 1: Cấu trúc tổng quát của hệ thống máy tính
28 p | 167 | 15
-
Bài giảng Cấu trúc máy tính: Chương 1
21 p | 166 | 14
-
Bài giảng Cấu trúc máy tính (Computer Structure) - Đinh Đồng Lưỡng
245 p | 70 | 13
-
Bài giảng Cấu trúc máy tính: Chương 1 - Đào Quốc Phương
82 p | 102 | 11
-
Bài giảng Cấu trúc máy tính - Chương 1: Bus và truyền thông tin trong máy tính (2016)
25 p | 96 | 11
-
Bài giảng Cấu trúc máy tính - Chương 1: Bus và truyền thông tin trong máy tính (tt - 2016)
40 p | 107 | 10
-
Bài giảng Cấu trúc máy tính: Chương 3 - Phạm Ngọc Hưng
256 p | 87 | 10
-
Bài giảng Cấu trúc máy tính - Chương 2 - ThS. Nguyễn Khắc Quốc
27 p | 127 | 10
-
Bài giảng Cấu trúc máy tính - Trường CĐ Kinh tế - Kỹ thuật Bạc Liêu
87 p | 29 | 9
-
Bài giảng Cấu trúc máy tính: Chương 1 - Ngô Phước Nguyên
27 p | 126 | 8
-
Bài giảng Cấu trúc máy tính: Chương 1 - ThS. Nguyễn Thị Phong Dung
46 p | 18 | 5
-
Bài giảng Cấu trúc máy tính: Chương 3 - ThS. Nguyễn Thị Phong Dung
33 p | 9 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn