Vi Xử Lý và Cấu Trúc Máy Tính chương 03 - Pdf 15

VI XỬ LÝ &
CẤU TRÚC MÁY TÍNH
ĐH CNKT ĐIỆN TỬ TRUYỀN THÔNG K5
Giảng viên: Kiều Xuân Thực
Khoa Điện tử
Đại học công nghiệp Hà Nội
CHƯƠNG 3
LẬP TRÌNH ASSEMBLY CHO 8086
Nội dung:
1. Giới thiệu
2. Các chế độ địa chỉ của 80x86
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
3. Một số hàm của ngắt 21h
4. Tập lệnh của 8086
5. Ngăn xếp và thủ tục
1. Giới thiệu
 Hợp ngữ (Assembly): ngôn ngữ lập trình bậc thấp, sử
dụng chính các câu lệnh trong tập lệnh của VXLđể viết
nên một chương trình
 Ưu điểm của lập trình hợp ngữ: chương trình viết
bằng hợp ngữ chạy nhanh và chiếm ít bộ nhớ hơn so
với các chương trình viết bằng các ngôn ngữ bậc cao
do
:
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
do
:
 Trình dịch chỉ cần qua một bước là có thể biên dịch các chương trình
này ra mã máy

các trường phải xuất hiện theo đúng theo thứ tự.
 Ví dụ: NHAP: MOV AX,0; Chuyển 0 vào thanh ghi AX
5
 Trường tên: sử dụng làm nhãn lệnh, tên các thủ tục và
tên biến. Tên sẽ được chương trình dịch gán bằng các
địa chỉ cụ thể của ô nhớ.
 Trường tên cách với trường mã lệnh bởi dấu (:)
 Các quy định khi đặt tên:

Không được dài quá 31 ký tự.
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering

Không được dài quá 31 ký tự.
 Bao gồm các chữ cái, chữ số và một số ký tự đặc biệt (!@% _$).
 Không được bắt đầu bằng một chữ số.
 Không chứa khoảng trống hoặc dấu gạch ngang.
 Nếu có dấu (.) thì phải đặt ở vị trí đầu tiên của tên.
 Không phân biệt chữ thường, chữ hoa.
6
 Trường mã lệnh: các ký hiệu gợi nhớ biểu thị chức năng
thao tác như MOV, ADD, SHL
 Trường toán hạng: toán hạng xác định dữ liệu sẽ được các
lệnh tác động lên. Một lệnh có thể không có, có 1 hoặc có 2
toán hạng. Ví dụ:
NOP
DEC CX
MOV AX,1
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering

Faculty of Electronic Engineering
trước số đó để chương trình dịch không nhầm sang một tên
hay một nhãn.
 Riêng đối với một số thuộc hệ thập phân có thể kết thúc số đó
bằng chữ ‘D’ hay ‘d’ (hoặc không có). Ví dụ: 12 hay 12D là
như nhau.
 Các ký tự hoặc chuỗi ký tự phải được đặt trong dấu nháy đơn
hoặc nháy kép. Ví dụ: ‘a’, “Chao ban”.
Các ký tự sẽ được dịch ra mã ASCII của chúng, chương trình
dịch sẽ không phân biệt giữa “A” với 41H, 1000001B hoặc 65.
9
 Biến: một biến được định nghĩa như sau
Tên_biến Kiểu_biến G iá_trị_khởi_tạo
 Tên biến: đặt theo qui ước
 Kiểu biến:
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
 Giá trị khởi tạo: đặt giá trị ban đầu cho biến, nếu
không muốn đặt giá trị đầu cho biếnđể ?
 VD: Khoa DB 5;
Lop DB ‘DHDT1$’
10
 Hằng: Các hằng trong hợp ngữ có thể là kiểu số hay
kiểu ký tự và được gán tên bởi toán tử EQU (equate)
Tên_hằng_số EQU Giá_trị
 VD:
CR EQU 0DH
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
CR EQU 0DH

.model small
.stack 100H
.data
message DB "I am student!$“
.code
main proc
mov
AX,@data
Hiển thị dòng chữ
“I am student!"
lên màn hình bằng
hàm
số
9
của
ngắt
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
mov
AX,@data
mov DS,AX
mov AH,9
mov DX,message
int 21H
mov AH,4CH
int 21H
main endp
end main
14
hàm


sở
(Based Relative Addressing
Mode)
6. Chế độ địa chỉ tương đối chỉ số (Indexed Relative Addressing
Mode)
7. Chế độ địa chỉ tương đối chỉ số cơ sở (Based Indexed Relative
Addressing Mode)
15
Chế độ địa chỉ thanh ghi
MOV AX,BX ;Chuyển nội dung của BX vào AX
MOV DL,AL ;Chuyển nội dung của AL vào DL
MOV SI,DX ;Chuyển nội dung của DX vào SI
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
MOV SP,BP ;Chuyển nội dung của BP vào SP
ADD AL,BH ;Cộng nội dung của BH với AL,kết quả lưu trong AL
MOV CL,BX ;Lệnh này sẽ báo lỗi vì đích và nguồn không cùng kiểu
16
Printed with FinePrint trial version - purchase at www.fineprint.com
Chế độ địa chỉ tức thời
MOV AH,12; chuyển 12 vào thanh ghi AH
MOV DL,0AH; chuyển 10 (0AH) vào thanh ghi DL
MOV AH,01000010B; chuyển 66 vào thanh ghi AH
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
MOV CL,A ; chuyển 65 vào thanh ghi CL
MOV [BX],100; chuyển 100 vào ô nhớ có địa chỉ DS:BX
17
Chế độ địa chỉ trực tiếp

MOV [BP],AL; Chuyển nội dung của AL vào ô nhớ có địa chỉ SS:[BP]
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
19
Chế độ địa chỉ tương đối cơ sở
MOV [BP+2],AL; Chuyển nội dung của AL vào ô nhớ có địa
; chỉ SS:[BP+2]
MOV AX,[BX+4]; Chuyển nội dung của hai ô nhớ có địa chỉ
; DS:[BX+4]và DS:[BX+5]vào AL và AH
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
Lệnh này có thể viết như sau:
MOV AX,[BX]+4
20
Printed with FinePrint trial version - purchase at www.fineprint.com
Chế độ địa chỉ tương đối chỉ số
Ví dụ: MOV AX,[DI+4];
Ý nghĩa: chuyển nội dung của hai ô nhớ có địa chỉ
DS:[DI+4]và DS:[DI+5]vào AX
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
21
Chế độ địa chỉ tương đối chỉ số cơ sở
Ví dụ:
MOV AH,[BX+SI+disp]; disp là hằng số
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
22
3. Một số hàm của ngắt 21h
 Cách gọi một hàm của ngắt 21h của DOS:

trình
,
trở
về
DOS
24
Printed with FinePrint trial version - purchase at www.fineprint.com
Hàm 01
 Chức năng: nhập 1 ký tự từ bàn phím
 Cách gọi:
MOV AH,1
INT 21H
 Trả về: AL chứa mã ASCII của ký tự nhập vào; AL = 0
nếu
một
phím
điều
khiển
hay
một
phím
chức
năng
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
nếu
một
phím
điều
khiển

chứa

ASCII
của

tự
.
 Chú ý: Nếu DL chứa mã ASCII của ký tự điều khiển,
hàm 2 sẽ thi hành các chức năng điều khiển
 Ví dụ:
mov AH,2
mov DL,’A’
; mov DL,7
int 21H
26
Ví dụ minh họa
.model small
.stack 100H
.data
.code
main proc
mov AH,2
mov DL,0AH
int 21H
mov DL,0DH
int 21H
Nhập vào một ký
tự rồi hiển thị ký
tự đó ở đầu dòng
tiếp

của
chuỗi
vào
DX
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
LEA
DX,Tên_của_chuỗi_ký_tự
;
nhập
địa
chỉ
lệch
của
chuỗi
vào
DX
MOV AH,9
INT 21H
 Chú ý: @data trả về địa chỉ đoạn dữ liệu được định
nghĩa bởi .data ở đầu chương trình.
28
Printed with FinePrint trial version - purchase at www.fineprint.com
Ví dụ
.model small
.stack 100H
.data
tb1 DB “Moi ban nhap vao 1 ky tu thuong:$”
tb2 DB 10,13,“Doi thanh chu hoa la:$”
.code

2. Nhóm lệnh số học
3. Nhóm lệnh điều khiển rẽ nhánh
4.
Nhóm
lệnh
xử

bit
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
4.
Nhóm
lệnh
xử

bit
5. Nhóm lệnh xử lý điều khiển
6. Nhóm lệnh xử lý chuỗi
30
Nhóm lệnh dịch chuyển dữ liệu
 Lệnh MOV (MOVE):
MOV đích, nguồn
Toán hạng đích
Toán hạng nguồn
Thanh
ghi đa
năng
Thanh ghi
đoạn
Ô nhớ Hằng số

lệnh
:
IN
thanh_ghi_chứa
,
cổng
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
Dạng
lệnh
:
IN
thanh_ghi_chứa
,
cổng
Thao tác: Lệnh IN đọc dữ liệu từ cổng vào thanh
ghi (AL).
32
Printed with FinePrint trial version - purchase at www.fineprint.com
Nhóm lệnh số học
 Lệnh ADD, SUB
 Dạng lệnh: ADD đích, nguồn
SUB đích, nguồn
 Lệnh ADD/SUB thực hiện cộng/trừ nội dung của toán
hạng đích với toán hạng nguồn, kết quả lưu vào toán
hạng
đích
,
nguồn
không

)
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering

Lệnh
INC (
INCrement
)
 Dạng lệ nh: INC đích
 Thao tác: Tăng đích thêm 1.
 Tương đương với lệnh ADD đích,1.
34
 Lệnh MUL (MULtiply)
 Dạng lệnh: MUL nguồn
 Thao tác: Lệnh MUL nguồn thực hiện nhân nội dung của AL với
nguồn nếu nguồn là một byte, tích mặc định chứa trong AX;
hoặc nhân nội dung của AX với nguồn nếu toán hạng nguồn là
một word, tích mặc định chứa trong DX: AX.

Nguồn
không
được

hằng
số
.
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering

Nguồn

Nhóm lệnh điều khiển rẽ nhánh
 Lệnh nhảy không có điều kiện: JMP Nhãn_lệnh
 Nhảy ngay đến Nhãn_lệnh mà không cần điều kiện gì
 Nhóm lệnh nhảy có điều kiện
 Với các lệnh nhảy có điều kiện thì khi gặp lệnh nhảy, nếu như
điều kiện của lệnh nhảy được thoả mãn thì Nhãn_lệnh được thi
hành còn nếu ngược lại thì thực hiện lệnh nằm ngay sau lệnh
nhảy
.
Nhãn_lệnh

thể
đặt
trước
hoặc
sau
lệnh
nhảy
.
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
nhảy
.
Nhãn_lệnh

thể
đặt
trước
hoặc
sau

 Tính tổng: 1+3+…+101, lưu kết quả ở DX
 Tính 7!, lưu kết quả ở BX
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
42
Nhóm lệnh xử lý bit
 Các lệnh logic: AND, OR, XOR
 Ứng dụng: xóa bit, thiết lập bit, đảo giá trị bit
trong 1 byte/word bằng cách AND, OR, XOR với
mặt nạ
 Ví dụ:
and AL,0DFH;
xoá
bit 5
của
AL
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
and AL,0DFH;
xoá
bit 5
của
AL
OR AH,81H; thiết lập bit 0 và bit 3 của AH
XOR AH,81H; đảo bit 0 và bit 3 của AH
43
 Các lệnh dịch: SHL và SHR
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
44

 Cất vào ngăn xếp: PUSH
 Lấy ra: POP
 Ví dụ
Mov ax, 3
Mov
bx,5
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
Mov
bx,5
Mul bl
Push ax
Mov ax, 4
Mov bx,6
Mul bl
Pop bx
Add ax,bx
50
VD nhập 4 số có 1 chữ số, tính tổng
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
51
Thủ tục
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
52
Printed with FinePrint trial version - purchase at www.fineprint.com
HOMEWORK
 Làm các BT cuối chương 3 của Giáo trình.
 Đọc trước Chương 4 của Giáo trình.


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status