Xem mẫu
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Ý 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
- Ý 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
- Ý 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
- 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
- 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
- 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
- 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
- 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