Xem mẫu

  1. KỸ THUẬT VI XỬ LÝ Microprocessors Dư Thanh Bình Bộ môn KTMT - Khoa CNTT Trường ĐH Bách Khoa Hà Nội
  2. Lưu ý của tác giả  Không được tự ý sao chép hay quảng bá bài giảng này nếu chưa được sự đồng ý của tác giả.  Địa chỉ liên hệ của tác giả: Dư Thanh Bình Bộ môn Kỹ thuật Máy tính Viện Công nghệ Thông tin và Truyền thông Trường Đại học Bách Khoa Hà Nội Tel: 8696125 – Mobile: 0979859568 Email: binhdt@it-hut.edu.vn Copyright (c) 1/2007 by DTB 2
  3. Nội dung của môn học  Chương 1: Máy tính và hệ vi xử lý  Chương 2: Biểu diễn thông tin trong máy tính  Chương 3: Bộ vi xử lý Intel 8088  Chương 4: Lập trình hợp ngữ với 8088  Chương 5: Nối ghép 8088 với bộ nhớ  Chương 6: Nối ghép 8088 với hệ thống vào-ra Copyright (c) 1/2007 by DTB 3
  4. Kỹ thuật Vi xử lý Chương 4 LẬP TRÌNH HỢP NGỮ VỚI 8088 Dư Thanh Bình Bộ môn Kỹ thuật Máy tính Viện Công nghệ Thông tin và Truyền thông Trường Đại học Bách Khoa Hà Nội Copyright (c) 1/2007 by DTB 4
  5. Nội dung chương 4 4.1. Mở đầu về lập trình hợp ngữ 4.2. Các cấu trúc lập trình với hợp ngữ 4.3. Các lệnh logic, lệnh dịch và lệnh quay 4.4. Ngăn xếp và thủ tục 4.5. Các lệnh nhân, chia 4.6. Các lệnh thao tác chuỗi 4.7. Một số ví dụ Copyright (c) 1/2007 by DTB 5
  6. 4.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 Copyright (c) 1/2007 by DTB 6
  7. 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. Copyright (c) 1/2007 by DTB 7
  8. 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ữ. Copyright (c) 1/2007 by DTB 8
  9. 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 ... Copyright (c) 1/2007 by DTB 9
  10. 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 Copyright (c) 1/2007 by DTB 10
  11. 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 Copyright (c) 1/2007 by DTB 11
  12. 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 Copyright (c) 1/2007 by DTB 12
  13. Ý 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). Copyright (c) 1/2007 by DTB 13
  14. Ý 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). Copyright (c) 1/2007 by DTB 14
  15. Ý 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. Copyright (c) 1/2007 by DTB 15
  16. 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 Copyright (c) 1/2007 by DTB 16
  17. 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) Copyright (c) 1/2007 by DTB 17
  18. 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] Copyright (c) 1/2007 by DTB 18
  19. 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] Copyright (c) 1/2007 by DTB 19
  20. 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 Copyright (c) 1/2007 by DTB 20
nguon tai.lieu . vn