
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 8 0 8 6
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 t rong 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
Lậ p trình hợ p ngữ cho phép đọ c hoặ c ghi trự c t iế p vào các ô nhớ ,
thanh ghi hay các cổ ng vào/ ra dễ dàng.
Như ợ c điể m :
Chư ơ ng trình dài nên khó kiể m soát lỗ i, khó bả o trì hơ n so vớ i chư ơ ng
trình tư ơ ng tự viế t bằ ng ngôn ngữ bậ c cao
Chư ơ ng trình viế t bằ ng hợ p ngữ chỉ chạ y đư ợ c trên hệ thố ng tư ơ ng
ứ ng, không thể thự c t hi t rên hệ thố ng có kiế n t rúc và tậ p lệ nh khác.
4
Printed with FinePrint trial version - purchase at www.fineprint.com

Cú pháp củ a hợ p ngữ
Mộ t chư ơ ng trình hợ p ngữ bao gồ m các dòng lệ nh,
mỗ i lệ nh đư ợ c viế t trên mộ t dòng.
Mộ t dòng lệ nh có thể là:
Lệ nh thậ t: đư ợ c hợ p ngữ dị ch ra m ã m áy
Hư ớ ng dẫ n biên dị ch: không đư ợ c dị ch ra m ã m áy
Mỗ i mộ t lệ nh bao gồ m có
4
trư ờ ng:
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
Mỗ i mộ t lệ nh bao gồ m có
4
trư ờ ng:
Tên: Mã_lệ nh Toán_hạ ng; Chú_giả i
Các trư ờ ng phả i đư ợ c cách nhau ít nhấ t m ộ t ký tự
trố ng hoặ c TAB.
Mộ t lệ nh không nhấ t thiế t phả i có đủ 4 trư ờ ng, VD
trư ờ ng tên hoặ c trư ờ ng chú giả i có thể bỏ qua như ng
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 t hanh ghi AX
5
Trư ờ n g 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ư ờ n g m ã lệ n h: các ký hiệ u gợ i nhớ biể u thị chứ c năng
thao tác như MOV, ADD, SHL...
Tr ư ờ n g t oá n h ạ n g: 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
MOV AX,1
Chú ý:
• Lệ nh có 2 toán hạ ng phả i cách nhau bở i dấ u phả y (,). Toán
hạ ng đầ u là toán hạ ng đích (nơ i chứ a kế t quả ) , toán hạ ng
thứ hai là toán hạ ng nguồ n, các lệ nh thư ờ ng không làm thay
đổ i toán hạ ng nguồ n.
• Các toán hạ ng củ a lệ nh phả i có cùng độ lớ n hay cùng kiể u thì
mớ i hợ p lệ
Ví dụ : MOV AX,BX MOV AX,BL
7
Tr ư ờ n g ch ú g iả i: sử dụ ng để giả i thích m ụ c đích sử
dụ ng lệ nh củ a chư ơ ng trình giúp ngư ờ i đọ c dễ hiể u.
Lờ i giả i thích cách vớ i trư ờ ng toán hạ ng dấ u chấ m
phả y (; ) Chư ơ ng trình dị ch bỏ qua khi dị ch đế n dấ u ;
VD:
; MOV CX,DX
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
MOV CX,5; Khở i tạ o đế m bằ ng 5
8
Printed with FinePrint trial version - purchase at www.fineprint.com

Dữ liệ u chư ơ ng trình
Qui ư ớ c:
1số thuộ c hệ nhị phân là 1 chuỗ i các bit kế t thúc bằ ng chữ ‘B’
hay ‘b’
1 số thuộ c hệ hexa là m ộ t chuỗ i các số bắ t đầ u là m ộ t số thậ p
phân và kế t thúc bằ ng chữ ‘H’ hay ‘h’. Ví dụ : 0AH hoặ c 12C5H.
Nế u mộ t số bắ t đầ u bằ ng m ộ t chữ cái thì phả i thêm 0 vào
trư ớ c số đó để chư ơ ng trình dị ch không nhầ m sang m ộ t tên
HANOI UNIVERSITY OF INDUSTRY
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 m uố n đặ t giá trị đầ u cho biế nđể ?
VD: Khoa DB 5;
Lop DB ‘DHDT1$’
1 0
H ằ n g: 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
PI EQU 3.14159
1 1
Khung củ a m ộ t chư ơ ng trình hợ p ngữ
title Tên_chư ơ ng_trình (có thể bỏ qua)
.m odel Kiể u_bộ _nhớ
.stack Dung_lư ợ ng_ngăn_xế p
.data
; khai báo các hằ ng, biế n
…
.code
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
.code
main proc
; các lệ nh chư ơ ng trình chính
…
main endp
; các hàm và thủ tụ c
…
end main
1 2
Printed with FinePrint trial version - purchase at www.fineprint.com

.model Kiể u_bộ _nhớ
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
.stack Dung_lư ợ ng_ngăn_xế p
VD: .stack 100h tạ o ngăn xế p kích thư ớ c 256byte
Nế u không khai báo thì chư ơ ng trình tự gán 1Kbyte cho ngăn
xế p
1 3
.m odel small
.stack 100H
.dat a
message DB "I am student!$“
.code
main proc
m ov
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
m ov
AX,@data
m ov DS,AX
m ov AH,9
m ov DX,m essage
int 21H
m ov AH,4CH
int 21H
main endp
end main
1 4
hàm
số
9
củ a
ngắ t
21h
2 . Các chế độ đị a chỉ củ a 8 0 x8 6
1. Chế độ đị a chỉ thanh ghi (Register Addressing Mode)
2. Chế độ đị a chỉ tứ c thờ i (Immediate Addressing Mode)
3. Chế độ đị a chỉ trự c tiế p (Direct Addressing Mode)
4. Chế độ đị a chỉ gián tiế p qua thanh ghi (Register Direct
Addressing Mode)
5.
Chế
độ
đị a
chỉ
tư ơ ng
đố i
cơ
sở
(Based Relative Addressing
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
5.
Chế
độ
đị a
chỉ
tư ơ ng
đố i
cơ
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)
1 5
Chế độ đị a chỉ t hanh 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
1 6
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
1 7
Chế độ đị a chỉ trự c tiế p
MOV AL, [ 012H] ; chuyể n nộ i dung ô nhớ DS: [ 012H] vào AL
MOV AL, ES: [ 22] ; chuyể n nộ i dung ô nhớ ES: [ 012H] vào AL
MOV [ 16H] , AX ; chuyể n nộ i dung củ a AX vào hai ô nhớ
;
liên
tiế p
có
đị a
chỉ
DS: [ 16H]
và
DS: [ 17H]
HANOI UNIVERSITY OF INDUSTRY
Faculty of Electronic Engineering
;
liên
tiế p
có
đị a
chỉ
DS: [ 16H]
và
DS: [ 17H]
MOV BX,[ 5678H] ; chuyể n nộ i dung củ a hai ô nhớ có đị a
; chỉ DS: [ 5678H] và DS: [ 5679h] vào BX
1 8
Chế độ đị a chỉ gián tiế p qua thanh ghi
MOV AX,[ BX] ; Chuyể n nộ i dung củ a hai ô nhớ có đị a chỉ ; DS: [ BX] và
DS: [ BX+ 1] vào AX
MOV AL,[ BX] ; Chuyể n nộ i dung củ a ô nhớ có đị a chỉ DS: [ BX] vào AL
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 1 9
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
2 0
Printed with FinePrint trial version - purchase at www.fineprint.com

