Tải bản đầy đủ (.ppt) (61 trang)

Tài liệu Kỹ thuật lập trình nhúng - Phần 2: Lập trình hợp ngữ trên Vi xử lý 80x86 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.05 MB, 61 trang )

Advanced Topics in Software Engineering
Spring 2006
0361- Kỹ thuật lập trình nhúng
Lập trình hợp ngữ trên
Vi xử lý 80x86
Phạm Quốc Thịnh
Department of Electronics & Telecommunications
1
Nội dung

Cơ bản về hợp ngữ

Trạng thái của vi xử lý và các thanh ghi cờ

Các lệnh điều khiển(lập và rẽ nhánh)

Các lệnh logic, dịch và quay

Ngăn xếp và thủ tục

Các lệnh nhân và chia

Mảng và các chế độ định địa chỉ
2
Nội dung

Cơ bản về hợp ngữ

Trạng thái của vi xử lý và các thanh ghi cờ

Các lệnh điều khiển(lập và rẽ nhánh)



Các lệnh logic, dịch và quay

Ngăn xếp và thủ tục

Các lệnh nhân và chia

Mảng và các chế độ định địa chỉ
3
Cơ bản về hợp ngữ

Tổng quan

Cú pháp lệnh hợp ngữ

Các lệnh cơ bản

Cấu trúc của một chương trình hợp ngữ

Các lệnh vào ra

Chương trình đầu tiên
4
Tổng quan
5

Ngôn ngữ cấp thấp

Macro Assembler ( MASM) - CPU 8086.


Tập tin hợp ngữ nguồn (.ASM)

Các phát biểu lệnh hợp ngữ (assembly statement)

Assembly Language Instruction
»
Xác định hành động CPU thực hiện
»
Dịch sang một lệnh mã máy tương ứng

Assembler directive
»
Khai báo hướng dẫn biên dịch
Tổng quan (2)
6

Các thành phần

Bộ ký tự:

26 chữ cái thường và hoa a-z, A-Z

10 kí tự số 0-9

Các kí tự dấu:

? @ _ $ : . [ ] ( ) < > { } + - * / & % ! ‘ ~ “ | \ = # ^ ; ,

Kí tự ngăn cách


Khoảng trắng

Tab

Kí tự xuống dòng: kết thúc một lệnh

Không phân biệt hoa thường
7

Từ vựng:

Tên: A-Z a-z 0-9 . ? @ _ $

Duy nhất  Qui tắc đặt tên??

Từ khóa

Bắt buộc

Kiểu số liệu:

Số:

Thập phân 110d (mặc định)

Nhị phân 01111b

Hexa 0FF01h

Kí tự:


Giữa hai dấu ngoặc đơn hoặc kép

Mã ASCII  ‘A’ == 41h
Tổng quan (3)

Biến byte, biến từ: chỉ dẫn của asm định
nghĩa biến byte có dạng sau:
Name DB initial_value
Name DW initial_value
Ví dụ: ALPHA1 DB 4;
ALPHA2 DW -2;
8
Tổng quan (4)
Các toán hạng giả dùng để định nghĩa các loại số liệu

Mảng (Arrays): trong ASM mảng là một loạt
các byte nhớ hoặc từ nhớ liên tiếp nhau

Ví dụ:

Nếu asm gán địa chỉ offset 0200h cho mảng
B_ARRAY thì nội dung bộ nhớ sẽ như sau
9
Tổng quan (5)

Chuỗi các ký tự (character strings)

Bên trong một chuỗi asm phân biệt chữ hoa
chữ thường


Cũng có thể định nghĩa
10
Tổng quan (6)

Các hằng (constants): trong chương trình các
hằng số được đặt tên nhơ chỉ dẫn EQU

Cú pháp: Tên EQU constants

LF EQU 0AH
MOV DL,0AH
MOV DL,LF
11
Tổng quan (7)
Cú pháp lệnh hợp ngữ
12

Name: Operation Operand(s) ;Comment
[Nhãn] Tên gợi nhớ Toán hạng(s) ; Ghi chú
o
Trường tên(nhãn): dùng cho nhãn lệnh, tên thủ tục và tên biến.
Asm sẽ chuyển tên thành địa chỉ bộ nhớ. Tên có thể dài từ 1-
31 ký tự.
Cú pháp lệnh hợp ngữ (2)
13

Name: Operation Operand(s) ;Comment
[Nhãn] Toán tử Toán hạng(s) ; Ghi chú
o

Trường toán tử: Chứa ký hiệu của mã phép toán. Ví dụ: ADD,
INC, DEC, INT…
o
Trường toán hạng: chỉ ra số liệu tham gia trong lệnh đó
Trong các lệnh 2 toán hạng: toán hạng đầu là toán hạng
đích, toán hạng thứ hai là toán hạng nguồn(không thay đổi khi
thực hiện lệnh)
Cú pháp lệnh hợp ngữ (3)
14

Name: Operation Operand(s) ;Comment
[Nhãn] Toán tử Toán hạng(s) ; Ghi chú
o
Trường chú thích (ghi chú): lập trình viên thường chú thích để
thuyết minh về câu lệnh. Người ta dùng dấu ; để bắt đầu chú
thích
Các lệnh cơ bản

Lệnh MOV

Lệnh XCHG
15
16
Các lệnh cơ bản (2)
17
Các lệnh cơ bản (3)

Lệnh NEG: lấy bù 2 của một của một thanh
ghi hoặc vị trí nhớ


Cú pháp: NEG destination

Ví dụ: NEG AX
Giả sử AX=0002h sau khi thực hiện lệnh
AX=FFFEh
18
Các lệnh cơ bản (4)
Cấu trúc của một chương trình hợp ngữ

Mỗi chương trình ngôn ngữ máy bao gồm mã
(code), số liệu (data) và ngăn xếp (stack). Mỗi
một phần chiếm một đoạn bộ nhớ

Các kiểu bộ nhớ: được quy định bởi chỉ dẫn
với cú pháp:
.MODEL memory_model
19
Cấu trúc của một chương trình hợp ngữ (2)

Đoạn số liệu: chứa các khai báo biến, hằng…

Cú pháp:
.DATA
;Khai báo tên các biến, hằng và mảng

Ví dụ:
20
Cấu trúc của một chương trình hợp ngữ (3)

Đoạn ngăn xếp: Dành một vùng nhớ để lưu

giữ cho stack

Cú pháp:
.STACK size
;Nếu không khai báo size thì 1KB dành cho
stack

Ví dụ:
21
Cấu trúc của một chương trình hợp ngữ (4)

Đoạn mã: Chứa các lệnh của chương trình

Cú pháp:

Bên trong đoạn mã các lệnh được tổ chức
thành các thủ tục
.CODE
22
23
Cấu trúc của một chương trình hợp ngữ (5)
Các lệnh vào ra

Lệnh INT (Interrupt)

Để gọi các chương trình con của BIOS
và DOS ta dùng cú pháp sau:
INT interruppt_number

INT 21h: tùy theo giá trị đặt vào AH


24
Các lệnh vào ra (2) - INT 21h

function number routine
9 String input

Input : DX= địa chỉ chuỗi ký tự kết thúc bằng $

Output: chuỗi kí tự xuất hiện trên màn hình

function number routine
2 Single character output

Input :

AH=2

DL=ASCII code of the the display character or control
character

Output:

AL= ASCII code of the the display character or control
character

×