Tải bản đầy đủ (.pdf) (21 trang)

Chương II: Kiến trúc phần mềm bộ xử lý pptx

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 (532.73 KB, 21 trang )

Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 1
1
Nguyễn Thị Mỹ Dung – Khoa CNTT
Chương II
Chương II
: Ki
: Ki
ế
ế
n tr
n tr
ú
ú
c ph
c ph


n m
n m


m b
m b


x
x





Số tiết: 10
Nội dung:
I. Tổ chức chung của hệ thống MTĐT
II. Kiến trúc máy tính
III. Các kiểu định vị cơ bản
IV. Tập lệnh
V. Kiểu toán hạng và chiều dài của toán hạng
VI. Tác vụ mà lệnh thực hiện
VII. Khái niệm về kiến trúc RISC và CISC
VIII. Quan hệ ngôn ngữ cấp cao và ngôn ngữ máy.
2
Nguyễn Thị Mỹ Dung – Khoa CNTT
I. T
I. T


ch
ch


c chung c
c chung c


a m
a m


t h

t h


th
th


ng MT
ng MT
1/ Các thành phần cơ bản
- Bộ xử lý trung tâm (CPU).
- Bộ nhớ trong.
- Các bộ phận nhập/ xuất.
Các thành phần cơ bản được nối kết với nhau qua hệ
thống bus (bus điều khiển, bus dữ liệu, bus địa chỉ).
Cấu trúc của một hệ
máy tính đơn giản
3
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c th
c th
à
à
nh ph
nh ph



n cơ b
n cơ b


n (tt)
n (tt)
a/ Bộ xử lý trung tâm
Gồm các bộ phận:
- Đơn vị điều khiển
(CU):điều khiển hoạt động của máy
tính theo chương trình đã định sẵn.
- Đơn vị số học và logic
(ALU): thực hiện các phép tính số
học và logic trên các dữ liệu cụ thể.
- Tập thanh ghi (RF): lưu trữ
các thông tin tạm thời phục vụ cho
hoạt động của CPU.
- Đơn vị ghép nối (BIU): kết
nối và trao đổi thông tin giữa bus
bên trong và bus bên ngoài.
4
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c th
c th
à

à
nh ph
nh ph


n cơ b
n cơ b


n (tt)
n (tt)
b/ Bộ nhớ trong
- Chứa các thông tin mà CPU có thể trao đổi
trực tiếp.
- Tốc độ truy cập nhanh, dung lượng nhỏ.
- Sử dụng bộ nhớ bán dẫn: ROM, RAM
- Có 2 loại bộ nhớ trong: bộ nhớ chính, bộ nhớ
cache (bộ nhớ đệm nhanh).
- Bộ nhớ trong tổ chức thành các ô nhớ được
đánh địa chỉ. Mỗi ô nhớ thông thường là 1 byte. Nội
dung ô nhớ có thể thay đổi, còn địa chỉ thì cố định.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 2
5
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c th

c th
à
à
nh ph
nh ph


n cơ b
n cơ b


n (tt)
n (tt)
c/ Các bộ phận nhập/ xuất
- Trao đổi thông tin
giữa máy tính với người
sử dụng hoặc giữa các
máy tính trong cùng hệ
thống mạng.
- Các thành phần
chính: bàn phím, màn
hình, chuột, máy quét,
máy in, các ổ đĩa,
modem,…
6
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á

c th
c th
à
à
nh ph
nh ph


n cơ b
n cơ b


n (tt)
n (tt)
d/ Giao diện bus (BIU)
Các thiết bị ngoại vi trao đổi với CPU và bộ nhớ
qua các mạch ghép nối vào/ra (các giao diện). Các
mạch này cho phép nối các bộ phận độc lập nhằm
làm cho chúng có thể tương thích và truyền thông tin
được với nhau, cũng như dễ sửa chữa, dễ thay thế.
Các thiết bị phần cứng của hệ thống máy tính
kết nối với nhau thông qua hệ thống bus:
Hệ thống bus bao gồm:
7
Nguyễn Thị Mỹ Dung – Khoa CNTT
Qu
Qu
á
á
tr

tr
ì
ì
nh ho
nh ho


t đ
t đ


ng (tt)
ng (tt)
- Bus bộ xử lý (gồm: bus điều khiển, bus địa
chỉ, bus dữ liệu): thường được dùng để truyền dữ
liệu giữa bộ xử lý và bus hệ thống hoặc giữa bộ xử lý
với cache ngoại. Bus này có tốc độ nhanh nên không
bị nghẽn.
- Bus bộ nhớ: trao đổi thông tin giữa CPU với
bộ nhớ chính. Thông tin truyền trên bus này chậm
hơn nhiều so với thông tin trên bus bộ xử lý.
- Bus vào/ra (bus mở rộng): trao đổi thông tin
giữa bộ nhớ với các thiết bị ngoại vi.
8
Nguyễn Thị Mỹ Dung – Khoa CNTT
Sơ đ
Sơ đ


ch

ch


c năng
c năng
Sơ đồ khối chức năng của một hệ thống máy tính
GHÉP NỐI RA
BỘ NHỚ CHÍNH
RAM ROM
THIẾT BỊ VÀO
Bàn phím
Chuột
Máy quét
Ổ đĩa
CPU
GHÉP NỐI VÀO
Các thiết bị ngoại vi
THIẾT BỊ RA
Màn hình
Máy in
Máy vẽ
ổ đĩa
Bus hệ thống
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 3
9
Nguyễn Thị Mỹ Dung – Khoa CNTT
Sơ đ
Sơ đ



ho
ho


t đ
t đ


ng
ng
Sơ đồ khối của một máy tính với thiết bị ngoại vi
10
Nguyễn Thị Mỹ Dung – Khoa CNTT
T
T


ch
ch


c chung (tt)
c chung (tt)
2. Quá trình hoạt động của máy tính
Chương trình trong máy tính gồm một tập hợp
các lệnh được sắp xếp theo một trật tự nhất định. Khi
chạy chương trình CPU sẽ đọc lần lượt từng lệnh
một. Quá trình hoạt động theo kiểu tuần tự như thế
gọi là máy tính kiểu Von Neumann.

Trong thực tế, CPU thực hiện theo một chu kỳ:
lấy lệnh – giải mã – thực thi lệnh.
Quá trình đọc lệnh gồm một chuỗi thao tác:
Nhập dữ liệu
Xử lý dữ liệu
Xuất thông tin
11
Nguyễn Thị Mỹ Dung – Khoa CNTT
Qu
Qu
á
á
tr
tr
ì
ì
nh ho
nh ho


t đ
t đ


ng (tt)
ng (tt)
1. Lấy lệnh kế tiếp từ bộ nhớ vào thanh ghi lệnh IR.
2. Chuyển nội dung bộ đếm chương trình (PC) tới địa
chỉ lệnh kế tiếp.
3. Xác định loại lệnh vừa lấy.

4. Nếu lệnh sử dụng dữ liệu trong bộ nhớ, xác định
nơi chứa dữ liệu.
5. Tìm nạp dữ liệu vào thanh ghi trong CPU (nếu có).
6. Thực thi lệnh.
7. Lưu các kết quả vào nơi thích hợp.
8. Trở lại bước 1 để bắt đầu lệnh kế tiếp
12
Nguyễn Thị Mỹ Dung – Khoa CNTT
II. Ki
II. Ki
ế
ế
n tr
n tr
ú
ú
c m
c m
á
á
y t
y t
í
í
nh
nh
Kiến trúc máy tính bao gồm:
- Kiến trúc phần mềm bao gồm: tập lệnh, dạng
các lệnh và các kiểu định vị.
- Tổ chức của máy tính: liên quan đến cấu trúc

bên trong của bộ xử lý, cấu trúc bus, các cấp bộ
nhớ,…
- Lắp đặt phần cứng: lắp ráp một máy tính dùng
các linh kiện điện tử và các bộ phận phần cứng cần
thiết (không trình bày phần này trong môn học).
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 4
13
Nguyễn Thị Mỹ Dung – Khoa CNTT
III. C
III. C
á
á
c ki
c ki


u đ
u đ


nh v
nh v


cơ b
cơ b


n

n
1/ Các kiểu định vị
- Là cách thức thâm nhập các toán hạng nghĩa
là cách tính địa chỉ của toán hạng đối với toán hạng
bộ nhớ. Các toán hạng khác xác định các toán hạng
nằm trong các thanh ghi.
- Có hai kiểu sắp xếp địa chỉ trong bộ nhớ: biểu
diễn từ trái sang phải và từ trên xuống dưới (Big-
endian); biểu diễn từ phải sang trái và từ duới lên
trên (Little-endian).
14
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c ki
c ki


u đ
u đ


nh v
nh v


cơ b
cơ b



n (tt)
n (tt)
2/ Các kiểu thi hành một lệnh
- Một lệnh mã máy bao gồm một mã tác vụ và các
toán hạng.
- Vị trí của toán hạng có 3 kiểu cơ bản: ngăn xếp,
thanh ghi tích luỹ và thanh ghi đa dụng. Hay nói cách
khác là những kiến trúc phần mềm gồm: kiến trúc ngăn
xếp, kiến trúc thanh ghi tích luỹ và kiến trúc thanh ghi đa
dụng.
- Hiện tại các nhà sản xuất máy tính có khuynh
hướng dùng kiến trúc phần mềm thanh ghi đa dụng vì:
+ Việc thâm nhập các thanh ghi đa dụng nhanh
hơn thâm nhập bộ nhớ trong.
+ Các chương trình dịch dùng các thanh ghi đa
dụng có hiệu quả hơn.
15
Nguyễn Thị Mỹ Dung – Khoa CNTT
B
B


ng so s
ng so s
á
á
nh gi
nh gi



a c
a c
á
á
c ki
c ki


u đ
u đ


nh v
nh v


16
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c ki
c ki


u đ
u đ



nh v
nh v


cơ b
cơ b


n (tt)
n (tt)
3/ Kiểu kiến trúc thanh ghi đa dụng
 Ưu điểm:
- Việc tạo các mã máy đơn giản.
- Chiều dài mã máy cố định.
- Ít thâm nhập bộ nhớ.
 Nhược điểm:
- Số lượng thanh ghi bị giới hạn.
- Việc các thanh ghi có cùng độ dài dẫn đến không hiệu
quả trong xử lý chuỗi cũng như các lệnh có cấu trúc.
- Khó khăn trong việc lưu và phục hồi các trạng thái khi
có các lời gọi thủ tục hay chuyển đổi ngữ cảnh.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 5
17
Nguyễn Thị Mỹ Dung – Khoa CNTT
Ki
Ki
ế

ế
n tr
n tr
ú
ú
c thanh ghi đa d
c thanh ghi đa d


ng (tt)
ng (tt)
 Một số kiểu định vị cho kiến trúc thanh ghi đa
dụng:
- Thanh ghi
- Tức thì
- Trực tiếp
- Gián tiếp (thanh ghi hoặc bộ nhớ hoặc thanh
ghi + Độ dời hoặc thanh ghi + thanh ghi hoặc Reg
nền + Reg chỉ số + độ dời )
- Tự tăng
- Tự giảm
18
Nguyễn Thị Mỹ Dung – Khoa CNTT
IV. T
IV. T


p l
p l



nh
nh
1. Lệnh máy trong máy tính đa năng
2. Các định dạng lệnh
3. Phân loại các lệnh
4. Các thanh ghi và lệnh máy của VXL 80x86
5. Các chế độ địa chỉ của VXL họ 80x86
19
Nguyễn Thị Mỹ Dung – Khoa CNTT
1. L
1. L


nh m
nh m
á
á
y bên trong m
y bên trong m
á
á
y t
y t
í
í
nh đa năng
nh đa năng
Mỗi máy tính có đặc điểm lệnh riêng của nó.
- Mã lệnh: là một nhóm các bit, cho máy tính thực

hiện một thao tác nào đó (cộng, trừ, nhân, chia, dịch
bit,…)
- Toán hạng: mỗi toán hạng có địa chỉ nhất định, toán
hạng có thể là thanh ghi hay bộ nhớ (toán hạng tức
thì, toán hạng bộ nhớ, địa chỉ trực tiếp, địa chỉ gián
tiếp).
20
Nguyễn Thị Mỹ Dung – Khoa CNTT
2. C
2. C
á
á
c đ
c đ


nh d
nh d


ng l
ng l


nh
nh
- Dạng lệnh không có địa chỉ
Mã toán
- Dạng lệnh có 1 địa chỉ
Mã toán Địa chỉ (toán hạng)

- Dạng lệnh có 2 địa chỉ
Mã toán Địa chỉ 1 Địa chỉ 2
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 6
21
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c đ
c đ


nh d
nh d


ng l
ng l


nh (2)
nh (2)
Các lệnh thường được thiết kế theo tiêu chuẩn:
- Lệnh càng ngắn càng tốt: lệnh ngắn sẽ chiếm
ít không gian. Lệnh ngắn cho phép bộ xử lý truyền
được nhiều lệnh hơn trong một đơn vị thời gian.
- Cần đủ không gian trong lệnh để diễn tả tất cả
các thao tác mong muốn.

- Số bít trong trường địa chỉ cần được xem xét
lựa chọn.
Mô tả định dạng lệnh của 80x86
22
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c đ
c đ


nh d
nh d


ng l
ng l


nh (3)
nh (3)
0/8/16
Data
0/8/16
Disp
3
R/M
32116

RegModwdOpcode
- Opcode : số bit thay đổi tuỳ theo từng lệnh
D (0 hoặc 1):
+ d=1 toán hạng đến là toán hạng thanh ghi
còn toán hạng nguồn có thể là toán hạng thanh ghi
hay toán hạng bộ nhớ tuỳ theo vùng MOD, trường
hợp này vùng reg dùng cho toán hạng đến.
+ d=0 toán hạng đến là toán hạng bộ nhớ còn
toán hạng nguồn có thể là toán hạng thanh ghi hay
toán hạng bộ nhớ tuỳ theo vùng MOD, vùng reg
dùng cho toán hạng nguồn.
23
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c đ
c đ


nh d
nh d


ng l
ng l


nh (4)

nh (4)
- W (0 hoặc 1): w=1 là từ; w=0 là byte
- Reg: xác định thanh ghi nào được dùng trong câu lệnh.
- Mod: Xác định kiểu toán hạng còn lại.
+ Mod = 00 nếu R/M = 110 thì toán hạng bộ nhớ
trực tiếp được dùng trong câu lệnh; nếu R/M khác 110 thì
toán hạng bộ nhớ gián tiếp không có độ dời.
+ Mod = 01: toán hạng bộ nhớ gián tiếp có thêm độ
dời 8bit được dùng.
+ Mod = 10: toán hạng bộ nhớ gián tiếp có thêm độ
dời 16bit được dùng.
+ Mod = 11: cả 2 toán hạng nguồn và đích đều là
toán hạng thanh ghi.
24
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c đ
c đ


nh d
nh d


ng l
ng l



nh (5)
nh (5)
Bảng mã hoá vùng Reg, Mod, R/M
(Tham khảo tài liệu KTMT trang 214 – 215)
- Vùng Disp: những byte này biểu thị offset hoặc độ
dời (8bit hay 16 bit) trong toán hạng bộ nhớ
- Vùng Data: biểu thị giá trị trực hằng (8 bit hay 16 bit)
dùng trong câu lệnh.
Chú ý: để xác định mã máy tương ứng với
dạng lệnh gợi nhớ phải tham khảo tài liệu để định
Opcode của lệnh (tham khảo tài liệu Microsoft Macro
Assembler 5.0).
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 7
25
Nguyễn Thị Mỹ Dung – Khoa CNTT
Đ
Đ


nh d
nh d


ng đ
ng đ


i v

i v


i l
i l


nh MOV dest, source
nh MOV dest, source
- Toán hạng thanh ghi với toán hạng bộ nhớ
hay thanh ghi.
100010 d w mod reg r/m disp (0 hay 2 byte)
- Toán hạng trực hằng với thanh ghi
1011 w reg data (1 hay 2 byte)
- Toán hạng trực hằng với toán hạng bộ nhớ
1100011 w mod 000 r/m disp (0 hay 2 byte) data (1
hay 2 byte)
- Toán hạng thanh ghi tích lũy với toán hạng bộ
nhớ trực tiếp
101000 d w disp (2 byte)
26
Nguyễn Thị Mỹ Dung – Khoa CNTT
Đ
Đ


nh d
nh d



ng đ
ng đ


i v
i v


i l
i l


nh MOV (2)
nh MOV (2)
- Toán hạng thanh ghi đoạn với toán hạng bộ
nhớ
100011 d 0 mod sreg r/m disp (0 hay 2 byte)
Chú ý: Nếu một toán hạng bộ nhớ có ghi rõ
thanh ghi đoạn trong câu lệnh, thì ta phải thêm 1 byte
biểu thị thanh ghi đoạn ở trước mã máy.
27
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c đ
c đ



nh d
nh d


ng l
ng l


nh (6)
nh (6)
Ví dụ:
Mã hoá lệnh:
a) MOV CL, [BX]; b) MOV 0F3H[SI], CL
 Chuyển mã máy (nhị phân)
a) MOV CL, [BX]
1 0 0 0 1 0 1 0 00 001 111
__: mã lệnh; đỏ: chuyển tới thanh ghi;
Xanh: chuyển 1 bit; vàng: ô nhớ có địa chỉ DS:BX
Tím: các bít mã CL;
28
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c đ
c đ


nh d

nh d


ng l
ng l


nh (7)
nh (7)
b) MOV 0F3H[SI], CL
1 0 0 0 1 0 0 0 01 001 100 11110011
__: mã lệnh; đỏ: chuyển từ thanh ghi;
Xanh: chuyển 1 bit; vàng: ô nhớ có địa chỉ DS:SI
Tím: các bít mã CL; trắng: d8 = F3H
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 8
29
Nguyễn Thị Mỹ Dung – Khoa CNTT
3. Phân lo
3. Phân lo


i c
i c
á
á
c l
c l



nh
nh
a/ Các lệnh di chuyển dữ liệu
Sao chép dữ liệu từ nơi này đến nơi khác. Sao
chép dữ liệu có thể tạo ra một đối tượng mới có mẫu
bít giống mẫu ban đầu. Dữ liệu được lưu trữ nhiều
nơi khác nhau tuỳ vào cách các từ được truy xuất
thường là ở bộ nhớ hoặc ở thanh ghi hoặc ở ngăn
xếp. Việc di chuyển dữ liệu được thực hiện cho đến
khi có dấu hiệu kết thúc vùng dữ liệu được tìm thấy
trong chính dữ liệu.
30
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh di chuy
nh di chuy


n d
n d


li

li


u (2)
u (2)
 MOV Dest, Source ; di chuyển số liệu từ Source
 Dest
; Source có thể là Reg, Mem, Immed
; Dest có thể là Reg, Mem
Chức năng: chuyển nội dung toán hạng source
vào toán hạng dest. Chiều dài dữ liệu có thể là 8 bit
hay 16 bit.
TH1: chuyển dữ liệu giữa hai thanh ghi
MOV AL, AH
MOV BX, SI
31
Nguyễn Thị Mỹ Dung – Khoa CNTT
Nh
Nh
ó
ó
m l
m l


nh di chuy
nh di chuy


n s

n s


li
li


u (2)
u (2)
TH2: Chuyển dữ liệu giữa thanh ghi và bộ nhớ
VD:
MOV [BX], AL
MOV DS:[150h], AL
MOV ES:[SI], DL
MOV AL, [BX]
MOV AH, DS:[10h]
MOV [BX], AX
MOV Word PTR [SI], AX
MOV CS:[SI+BX], DX
32
Nguyễn Thị Mỹ Dung – Khoa CNTT
Nh
Nh
ó
ó
m l
m l


nh di chuy

nh di chuy


n s
n s


li
li


u (3)
u (3)
TH3: chuyển dữ liệu giữa trực hằng và thanh
ghi, bộ nhớ.
VD:
MOV AL, 0B5h
MOV BH, 10001000b
MOV [BX], 10
MOV AX, B800h
MOV [SI], 2000
MOV word ptr [BX],5AB7h
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 9
33
Nguyễn Thị Mỹ Dung – Khoa CNTT
Nh
Nh
ó
ó

m l
m l


nh di chuy
nh di chuy


n s
n s


li
li


u (4)
u (4)
TH4: chuyển dữ liệu giữa thanh ghi đoạn và
thanh ghi, bộ nhớ.
VD:
MOV DS, AX
MOV ES, [BX+SI]
MOV AX, CS
MOV [BX + DI], ES
34
Nguyễn Thị Mỹ Dung – Khoa CNTT
Nh
Nh
ó

ó
m l
m l


nh di chuy
nh di chuy


n s
n s


li
li


u (5)
u (5)
Chú ý:
- Lệnh Mov không ảnh hưởng đến thanh ghi
cờ hiệu.
- Không thể chuyển đổi dữ liệu trực tiếp giữa
2 toán hạng bộ nhớ với nhau, muốn chuyển ta phải
dùng 1 thanh ghi trung gian.
VD:
Chuyển dữ liệu 16bit từ mem1 vào
mem2
MOV AX, mem1
MOV mem2, AX

35
Nguyễn Thị Mỹ Dung – Khoa CNTT
Ch
Ch
ú
ú
ý (2)
ý (2)
- Không thể chuyển trực tiếp một trực hằng vào
một thanh ghi đoạn, muốn chuyển ta phải dùng một
thanh ghi trung gian.
VD:
Chuyển giá trị B800h vào thanh ghi DS, ta
phải dùng thanh ghi trung gian 16bit.
MOV AX, 0B800h
MOV DS, AX
- Không thể chuyển trực tiếp giữa hai thanh ghi
đoạn.
- Không thể dùng thanh ghi đoạn CS làm toán
hạng dest trong lệnh MOV.
36
Nguyễn Thị Mỹ Dung – Khoa CNTT
Nh
Nh
ó
ó
m l
m l



nh di chuy
nh di chuy


n s
n s


li
li


u (6)
u (6)
 PUSH source ;
Chức năng: dùng để cất một trực hằng hay nội
dung một thanh ghi 16bit hay nội dung toán hạng 16bit
vào Stack.
Lệnh PUSH làm giảm thanh ghi con trỏ ngăn xếp
(SP) xuống 2 đơn vị và chuyển nội dung 16bit của toán
hạng nguồn vào trên đỉnh Stack. Đỉnh Stack được xác
định bởi cặp thanh ghi SS:SP.
Ví dụ:
PUSH 31
PUSH CS
PUSH SP
PUSH [BX + SI]
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 10
37

Nguyễn Thị Mỹ Dung – Khoa CNTT
Nh
Nh
ó
ó
m l
m l


nh di chuy
nh di chuy


n s
n s


li
li


u (7)
u (7)
 POP dest
Chức năng: Ngược với lệnh PUSH, POP
dùng để lấy dữ liệu 16bit đang nằm trên đỉnh Stack.
Lệnh POP tăng thanh ghi SP 2 đơn vị để chỉ
đến đỉnh mới của Stack.
VD:
POP SI

POP CS
POP SP
POP [BX + SI]
38
Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân lo
Phân lo


i l
i l


nh (2)
nh (2)
b/ Các lệnh tính toán 2 ngôi
Là những thao tác kết hợp 2 toán hạng để sinh
ra một kết quả. Một số các phép toán thông dụng:
cộng, trừ, nhân, chia trên các số nguyên. Ngoài ra
còn có các phép toán logic như: AND, OR, XOR cho
kết quả là TRUE hoặc FALSE.
39
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l



nh t
nh t
í
í
nh to
nh to
á
á
n (2)
n (2)
 Nhóm lệnh xử lý phép cộng
- ADD dest, source
Toán hạng source có thể: Reg, Mem, Immed
Toán hạng dest có thể: Reg, Mem
+ TH1: cộng giữa thanh ghi, thanh ghi, bộ nhớ
- Cộng giữa 2 thanh ghi
VD: ADD AL, AH
ADD AX, BX
- Cộng thanh ghi và bộ nhớ
VD: ADD [BX], AX
40
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l



nh t
nh t
í
í
nh to
nh to
á
á
n (3)
n (3)
+ TH2: cộng giữa trực hằng và thanh ghi hay
bộ nhớ
VD: ADD AL, B5h
ADD BYTE PTR DS:[150h], 10h
ADD AX, B800h
ADD WORD PTR [BX], 5AB7h
Chú ý:
- Không thể cộng trực tiếp thanh ghi đoạn
- Lệnh ADD ảnh hưởng đến 6 cờ AF, CF, OF,
PF, SF, ZF (tham khảo chi tiết trong TLTK)
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 11
41
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l

c l


nh t
nh t
í
í
nh to
nh to
á
á
n (4)
n (4)
- ADC dest, source
Chức năng giống lệnh ADD, nhưng thực hiện
phép cộng có nhớ, lệnh ADD cộng nội dung của toán
hạng source và toán hạng dest rồi cộng thêm 1 nếu
cờ CF bật 1, kết quả lưu vào toán hạng dest. Lệnh
ADC thường dùng để cộng các số lớn hơn 16bit.
- INC dest (Reg, Mem)
Chức năng: tăng toán hạng dest lên 1
VD: INC AL
INC CX
42
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l

c l


nh t
nh t
í
í
nh to
nh to
á
á
n (5)
n (5)
 Nhóm lệnh xử lý phép trừ
- SUB dest, source
Toán hạng source có thể: Reg, Mem, Immed
Toán hạng dest có thể: Reg, Mem
+ TH1: trừ giữa 2 thanh ghi, thanh ghi bộ nhớ
- Trừ giữa 2 thanh ghi
VD: SUB AL, AH
SUB BL, CL
SUB AX, CX
- Trừ bộ nhớ và thanh ghi
43
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l

c l


nh t
nh t
í
í
nh to
nh to
á
á
n (6)
n (6)
VD: SUB [BX], AL
SUB DS:[0150h], AL
SUB ES:[SI], DL
SUB AL, [BX]
SUB [BX], AX
SUB Word PTR [DI], AX
SUB CS:[SI+BX], DX
SUB AX, [SI]
44
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l



nh t
nh t
í
í
nh to
nh to
á
á
n (7)
n (7)
+ TH2: Trừ giữa hằng và thanh ghi hay bộ nhớ
VD: SUB AL, B5h
SUB [BX], 15h
- DEC dest (Reg, Mem)
Chức năng: giảm toán hạng dest xuống 1
VD: DEC CX
- NEG dest (Reg, Mem)
Chức năng: Đảo dấu toán hạng dest.
Lệnh này có thể được ứng dụng để thực hiện phép
trừ một trực hằng với toán hạng (Reg, Mem).
VD: Lấy 100 trừ nội dung AH.
SUB AL, 100
NEG AL
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 12
45
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C

á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (8)
n (8)
 Nhóm lệnh xử lý phép nhân
- MUL source (Reg, Mem)
Chức năng: thực hiện phép nhân không dấu
+ TH1: source là toán hạng 8bit thì lệnh MUL
nhân nội dung của source với thanh ghi AL, kết quả
16bit được lưu trong AX.
+ TH2: source là toán hạng 16bit thì lệnh MUL
nhân nội dung của source với thanh ghi AX, kết quả
32bit được lưu trong cặp DX:AX, phần thấp được
chứa trong AX, phần cao chứa trong DX
Chú ý: lệnh này chỉ ảnh hưởng đến cờ CF, OF
46
Nguyễn Thị Mỹ Dung – Khoa CNTT
C

C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (9)
n (9)
VD1:
MUL BH ;AX  AL*BH
MUL BX ;DX:AX  AX*BX
VD2:
Nhân 2 số 212 và 45
MOV AL, D4h
MOV BL, 2Dh
MUL BL ; kết quả lưu trong AX
47
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á

á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (10)
n (10)
 Nhóm lệnh xử lý phép chia
- DIV source (Reg, Mem)
Chức năng: thực hiện phép chia không dấu, lấy
nội dung của thanh ghi AX hay cặp thanh ghi DX:AX chia
cho toán hạng source.
Nếu source là toán hạng dạng byte thì lệnh DIV lấy
nội dung của thanh ghi AX chia cho toán hạng source,
thương số và số dư của phép chia tương ứng được lưu
trong thanh ghi AL và AH
Nếu source là toán hạng dạng word thì lệnh DIV lấy
nội dung của thanh ghi DX:AX chia cho toán hạng source,
thương số và số dư của phép chia tương ứng được lưu
trong thanh ghi AX, DX
48
Nguyễn Thị Mỹ Dung – Khoa CNTT

C
C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (11)
n (11)
VD1: DIV BX ; AX  DX:AX DIV BX
;DX  DX:AX MOD BX
VD2: Chia số 230 cho 23
MOV AX, E6h
MOV BL, 17h
DIV BL ; thương số 10 lưu trong AL
; dư số 0 lưu trong AH
Chú ý: Lệnh DIV không ảnh hưởng đến các cờ hiệu
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 13
49
Nguyễn Thị Mỹ Dung – Khoa CNTT

C
C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (12)
n (12)
* Nhóm các lệnh thao tác trên bit
 AND dest, source
Toán hạng source có thể là Reg, Mem, Immed.
Toán hạng dest có thể là Reg, Mem.
Chức năng: Lấy nội dung của toán hạng source
thực hiện phép toán logic AND từng bit với nội dung
của toán hạng dest. Kết quả lưu vào dest.
VD: AL = 1001 1100, BL = 0111 0011
Thực hiện lệnh AND AL, BL
Kết quả AL = 0001 0000
50
Nguyễn Thị Mỹ Dung – Khoa CNTT

C
C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (13)
n (13)
 OR dest, source
Toán hạng source có thể là Reg, Mem, Immed.
Toán hạng dest có thể là Reg, Mem.
Chức năng: Lấy nội dung của toán hạng source
thực hiện phép toán logic OR từng bit với nội dung
của toán hạng dest. Kết quả lưu vào dest.
VD: AL = 1001 1100, BL = 1000 0011
Thực hiện lệnh OR AL, BL
Kết quả AL = 1001 1111
51
Nguyễn Thị Mỹ Dung – Khoa CNTT
C

C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n (14)
n (14)
 XOR dest, source
Toán hạng source có thể là Reg, Mem, Immed.
Toán hạng dest có thể là Reg, Mem.
Chức năng: Lấy nội dung của toán hạng source
thực hiện phép toán logic XOR từng bit với nội dung
của toán hạng dest. Kết quả lưu vào dest.
VD: AL = 1001 1100, BL = 1000 0011
Thực hiện lệnh XOR AL, BL
Kết quả AL = 0001 1111
52
Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân lo
Phân lo



i l
i l


nh (3)
nh (3)
c/ Các lệnh tính toán một ngôi
Các thao tác một ngôi có một toán hạng và tạo
ra một kết quả. Đó là có phép toán dịch và quay.
- Dịch là thao tác trong đó các bit được chuyển
sang trái hoặc chuyển sang phải, các bít được dịch ra
khỏi một đầu của từ sẽ bị mất.
- Quay là thao tác dịch trong đó bit được dịch ra
khỏi đầu này sẽ xuất hiện ở đầu bên kia.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 14
53
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh t
nh t

í
í
nh to
nh to
á
á
n m
n m


t ngôi (2)
t ngôi (2)
 SHL dest, 1
Chuyển mỗi bit của toán hạng dest sang trái
một bit, bit cao của toán hạng dest được đẩy vào cờ
CF, bit thấp thành 0.
Ví dụ: AL = 1001 0110
Khi sử dụng lệnh: SHL AL, 1
Khi đó: AL = 0010 1100 (CF: 1)
Hoặc: SHL dest, CL
Tương đương với lệnh SHL dest, 1 n lần với n
là nội dung của CL.
54
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l



nh t
nh t
í
í
nh to
nh to
á
á
n m
n m


t ngôi (3)
t ngôi (3)
Chú ý:
- Nếu toán hạng dest chứa một số nguyên
không dấu thì lệnh SHL sẽ nhân nội dung toán hạng
dest với 2.
- Ta không thể dịch chuyển nhiều hơn một bit
trực tiếp bằng lệnh:
SHL dest, n (n > 1)
Muốn thực hiện được, phải sử dụng thanh ghi.
VD: Cho AX = 1011 0010, thực hiện dịch trái 5
lần bằng lệnh SHL và cho biết kết quả của AX sau khi
sử dụng lệnh SHL.
55
Nguyễn Thị Mỹ Dung – Khoa CNTT
C

C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n m
n m


t ngôi (4)
t ngôi (4)
 SHR dest, 1
Chuyển mỗi bit của toán hạng dest sang phải
một bit, bit thấp của toán hạng dest được đẩy vào cờ
CF, bit cao thành 0.
Ví dụ: AL = 1001 0110
Khi sử dụng lệnh: SHR AL, 1
Khi đó: AL = 0100 1011 (CF: 0)
Hoặc: SHR dest, CL
Tương đương với lệnh SHR dest, 1 n lần với n

là nội dung của CL.
56
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n m
n m


t ngôi (5)
t ngôi (5)
Chú ý:
- Nếu toán hạng dest chứa một số nguyên
không dấu thì lệnh SHR sẽ chia nội dung toán hạng
dest cho 2.
- Ta không thể dịch chuyển nhiều hơn một bit

trực tiếp bằng lệnh:
SHR dest, n (n > 1)
Muốn thực hiện được, phải sử dụng thanh ghi.
VD: Cho AX = 1100 0011, thực hiện dịch phải 7
lần bằng lệnh SHR và cho biết kết quả của AX sau
khi sử dụng lệnh SHR.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 15
57
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to
á
á
n m
n m



t ngôi (6)
t ngôi (6)
 ROL dest, 1
Quay nội dung toán hạng dest sang trái 1 bit.
Giống như SHL tuy nhiên có sự khác biệt là bit cao
nhất được chuyển thành bit thấp nhất và các bit còn
lại đều dịch sang trái một bit. Bit cao nhất đồng thời
cũng được chuyển vào CF.
Ví dụ: AL = 1001 0110
Khi sử dụng lệnh:ROL AL, 1
Khi đó: AL = 0010 1101 (CF: 1)
Hoặc ROL dest, CL
Trường hợp này dùng cho quay nhiều hơn 1
bit.
58
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh t
nh t
í
í
nh to
nh to

á
á
n m
n m


t ngôi (7)
t ngôi (7)
 ROR dest, 1
Gần giống như SHR tuy nhiên có sự khác biệt
là bit thấp nhất được chuyển thành bit cao nhất và
các bit còn lại đều dịch sang phải một bit. Bit thấp
nhất đồng thời cũng được chuyển vào CF.
Ví dụ: AL = 1001 0110
Khi sử dụng lệnh: ROR AL, 1
Khi đó: AL = 0100 1011 (CF: 0)
Hoặc ROR dest, CL
Trường hợp này dành cho quay vòng nhiều
hơn 1 bit.
59
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh t

nh t
í
í
nh to
nh to
á
á
n m
n m


t ngôi (8)
t ngôi (8)
 NOT dest
Toán hạng dest có thể là Reg, Mem.
Chức năng: Đảo ngược từng bit nội dung của
toán hạng dest.
VD: AL = 1001 1100
Thực hiện lệnh NOT AL
Kết quả AL = 0110 0011
60
Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân lo
Phân lo


i l
i l



nh (4)
nh (4)
d/ Các lệnh so sánh và lệnh nhảy có điều kiện
Lệnh này kiểm tra điều kiện nào đó và nhảy tới
một địa chỉ nhớ cụ thể nếu điều kiện được thoả mãn.
Lệnh nhảy không điều kiện là trường hợp đặc
biệt của lệnh nhảy có điều kiện trong đó điều kiện
luôn được thoả mãn.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 16
61
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh so s
nh so s
á
á
nh v
nh v
à
à
nh
nh



y (2)
y (2)
 Lệnh so sánh
CMP Left, Right
- Left: Có thể là thanh ghi hay bộ nhớ.
- Right: Có thể là thanh ghi hay bộ nhớ hay trực
hằng.
- CMP so sánh nội dung toán hạng Left và Right.
 Các lệnh nhảy không điều kiện
JMP [SHORT/FAR] <nhãn>
 Các lệnh nhảy có điều kiện
J<điều kiện> <nhãn>
Ta có một số lệnh nhảy có đk như sau:
62
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l


nh nh
nh nh


y c

y c
ó
ó
đi
đi


u ki
u ki


n (2)
n (2)
JG: Nhảy nếu lớn hơn (áp dụng cho số không dấu)
JL: Nhảy nếu bé hơn (áp dụng cho số không dấu)
JE: Nhảy nếu bằng nhau
JA: Nhảy nếu lớn hơn (áp dụng cho số có dấu)
JB: Nhảy nếu bé hơn (áp dụng cho số có dấu)
….
Ví dụ:
So sánh 2 số có dấu dạng Word A, B:
- Nếu A > B thì AX := AX – BX
- Nếu A < B thì BX := BX – AX
- Nếu A = B thì AX := AX + 1 và BX := BX – 1
63
Nguyễn Thị Mỹ Dung – Khoa CNTT
Gi
Gi



i v
i v
í
í
d
d


MOV AX, A
MOV BX, B
CMP AX, BX
JG Lab1
JL Lab2
INC AX
DEC BX
JMP SHORT Lab3
Lab1:
SUB AX, BX
MOV A, AX
JMP SHORT Lab3
Lab2:
SUB BX, AX
MOV B, BX
Lab3:
MOV AH, 4Ch
INT 21h
64
Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân lo
Phân lo



i l
i l


nh (5)
nh (5)
e/ Các lệnh gọi thủ tục
Thủ tục là một nhóm lệnh thực hiện một công
việc nào đó và có thể được gọi từ nhiều nơi trong
chương trình. Khi thủ tục hoàn thành công việc, thủ
tục phải trở về câu lệnh ngay sau lệnh gọi. Địa chỉ trở
về phải được truyền tới thủ tục. Địa chỉ trở về đặt ở:
bộ nhớ, thanh ghi hoặc ngăn xếp.
Thủ tục có thể gọi thủ tục khác. Thủ tục gọi
chính nó được gọi là đệ quy. Thủ tục đệ quy cất địa
chỉ trở về vào ngăn xếp, khi hoàn tất thủ tục lấy địa
chỉ trở về ra khỏi ngăn xếp và chuyển địa chỉ này vào
thanh ghi bộ đếm chương trình.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 17
65
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c l
c l



nh g
nh g


i th
i th


t
t


c (2)
c (2)
 Các lệnh gọi thủ tục
CALL<nhãn Chương trình con>
CALL<Thanh ghi>/<Bộ nhớ>
 Các lệnh kết thúc chương trình con
RET hoặc RETN hoặc RETF
 Khai báo Chương trình con
<Nhãn> PROC [NEAR/FAR]
……
RET
<Nhãn> ENDP
66
Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân lo
Phân lo



i l
i l


nh (6)
nh (6)
f/ Các lệnh điều khiển vòng lặp
Phương pháp này khởi động bộ đếm ở ngoài
vòng lặp và sau đó bắt đầu thực hiện ngay mã vòng
lặp. Lệnh cuối cùng của vòng lặp sẽ cập nhật bộ đếm
và nếu điều kiện kết thúc chưa thoả mãn sẽ quay trở
lại lệnh đầu tiên của vòng lặp. Ngược lại, vòng lặp kết
thúc sẽ thực hiện lệnh đầu tiên ngoài vòng lặp.
VD: LOOP
67
Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân lo
Phân lo


i l
i l


nh (7)
nh (7)
g/ Các lệnh vào/ra (IN/OUT)
Có 4 phương pháp khác nhau được thực hiện

với các lệnh vào/ra:
- Vào ra theo chương trình theo cách hỏi vòng.
- Vào ra theo ngắt.
- Vào ra bằng truy cập bộ nhớ trực tiếp.
- Vào ra sử dụng các kênh dữ liệu (được sử
dụng trong các máy tính lớn).
68
Nguyễn Thị Mỹ Dung – Khoa CNTT
4. C
4. C
á
á
c thanh ghi v
c thanh ghi v
à
à
l
l


nh m
nh m
á
á
y c
y c


a VXL 8086
a VXL 8086

a. Một số loại địa chỉ
- Địa chỉ vật lý: là đại lượng chiều dài 20 bit xác
định vị trí của một ô nhớ trong 1MB bộ nhớ trong.
- Địa chỉ đoạn: là đại lượng 16bit dùng để xác
định địa chỉ bắt đầu của một đoạn trong bộ nhớ 1MB.
- Địa chỉ offset: là đại lượng 16bit dùng để xác
định khoảng cách từ ô nhớ đang xét trong đoạn đến
vị trí bắt đầu trong đoạn.
- Địa chỉ logic gồm 2 phần: địa chỉ đoạn và địa
chỉ offset của một ô nhớ.
Địa chỉ vật lý = Địa chỉ đoạn x 16 + Địa chỉ offset
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 18
69
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c thanh ghi c
c thanh ghi c


a BXL 8086 (2)
a BXL 8086 (2)
b/ Các thanh ghi dữ liệu
- Thanh ghi AX (accumulator register): thường
được dùng để chứa các kết quả phép tính số học.
- Thanh ghi cơ sở BX (base register): dùng để chỉ
địa chỉ cơ sở của đoạn nhớ trong bộ nhớ.

- Thanh ghi cơ sở CX (base register): thường dùng
để khai báo số lần một thao tác nào đó phải được thực
hiện trong vòng lặp, phép dịch, phép quay… giá trị của
CX giảm đi với một thao tác.
- Thanh ghi số liệu DX (Data register): dùng để lưu
trữ số liệu dùng làm thông số chuyển giao cho một
thường trình. DX là thanh ghi duy nhất dùng cho việc truy
nhập các giá trị vào/ra trên 255 (FFh) và trong các thao
tác nhân, chia.
70
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c thanh ghi c
c thanh ghi c


a BXL 8086 (3)
a BXL 8086 (3)
c/ Các thanh ghi đoạn
- Thanh ghi đoạn mã CS (Code Segment register):
dùng để chứa địa chỉ đoạn của đoạn mã lệnh hiện hành trong
bộ nhớ.
- Thanh ghi đoạn dữ liệu DS (Data segment Register):
dùng để chứa địa chỉ đoạn dữ liệu hiện hành trong bộ nhớ,
nghĩa là nơi chứa các biến, các hằng của chương trình.
- Thanh ghi ngăn xếp SS (Stack segment Register):
chứa địa chỉ đoạn của đoạn ngăn xếp trong bộ nhớ.

- Thanh ghi đoạn mở rộng ES (extra segment Register):
nếu một chương trình cần truy nhập đến đoạn dữ liệu thứ hai
thì phải sử dụng thanh ghi ES. Ngoài ra, ES thường dùng để
lưu trữ dữ liệu của chuỗi (string).
71
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c thanh ghi c
c thanh ghi c


a BXL 8086 (4)
a BXL 8086 (4)
d/ Các thanh ghi con trỏ và chỉ số
- Thanh ghi con trỏ lệnh IP (Instruction Pointer): dùng
để lưu trữ địa chỉ của lệnh kế tiếp sẽ được chạy trong đoạn
chương trình hiện tại.
- Thanh ghi con trỏ ngăn xếp SP (Stack Pointer
Register): chứa địa chỉ đỉnh ngăn xếp.
- Thanh ghi con trỏ cơ sở BP (Base Pointer Register):
tương tự như SP nhưng nó còn được sử dụng để truy nhập
dữ liệu bên trong ngăn xếp và các đoạn khác.
- Hai thanh ghi chỉ số (index register): được dùng để
lưu trữ địa chỉ tương đối trong đoạn dữ liệu. Bao gồm: thanh
ghi chỉ số nguồn SI (Source Index) và thanh ghi chỉ số đích DI
(Destination Index). SI dùng với thanh ghi đoạn DS, DI dùng
với ES.

72
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c thanh ghi c
c thanh ghi c


a BXL 8086 (5)
a BXL 8086 (5)
d/ Các thanh ghi cờ
i) 6 bit mô tả các trạng thái
- Cờ nhớ CF (Carry): được đặt 1 khi có nhớ.
- Cờ chẵn lẻ PF (Parity): được đặt 1 khi kết quả
phần byte thấp có chứa số chẳn.
- Cờ phụ AF (auxiliary carry): được dùng như cờ
CF nhưng dùng cho thao tác với mã BCD.
- Cờ ZF (Zero): được đặt nếu kết quả phép toán
bằng 0.
- Cờ dấu SF (Sign): được đặt khi làm việc với số có
dấu.
- Cờ tràn (overflow): được đặt nếu kết quả của
phép toán quá lớn.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 19
73
Nguyễn Thị Mỹ Dung – Khoa CNTT
C

C
á
á
c thanh ghi c
c thanh ghi c


a BXL 8086 (6)
a BXL 8086 (6)
ii) 3 bit cờ hiệu điều khiển
- Cờ báo hướng DF (direction): xác định hướng
của phép toán xử lý chuỗi. Nếu được đặt, chuỗi sẽ
được xử lý địa chỉ cao tới địa chỉ thấp và ngược lại.
- Cờ ngắt IF (interrup enable): nếu được đặt,
CPU sẽ chấp nhận yêu cầu ngắt cứng IRQs đồng
thời sẽ phục vụ ngắt và ngược lại.
- Cờ TF (Trap): nếu được đặt, CPU sẽ phát ra
ngắt số 1 sau mỗi bước chương trình dùng cho việc
gỡ rối.
74
Nguyễn Thị Mỹ Dung – Khoa CNTT
5. C
5. C
á
á
c ch
c ch
ế
ế
đ

đ


đ
đ


a ch
a ch


c
c


a VXL h
a VXL h


80x86
80x86
a/ Định địa chỉ tức thời
Giá trị này là giá trị thật của toán hạng trong câu
lệnh.
VD: Mov AL, 47h ;nạp số 47 vào thanh ghi AL.
b/ Định địa chỉ trực tiếp
Địa chỉ toán hạng được viết trực tiếp trong câu
lệnh. Địa chỉ trực tiếp được đặt trong cặp dấu ngoặc
vuông ([ ]).
VD: Mov AX, [47h] ; nạp nội dung ô nhớ có

địa chỉ là 47 vào thanh ghi AX.
Mov AL, DS:[100] ; chuyển nội dung ô nhớ
có địa chỉ 100 trong đoạn chỉ bởi DS vào thanh ghi AL.
75
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c ch
c ch
ế
ế
đ
đ


đ
đ


a ch
a ch


c
c


a VXL h

a VXL h


80x86 (2)
80x86 (2)
c/ Định địa chỉ thanh ghi
Trong cách định địa chỉ này, thanh ghi được sử
dụng sẽ được chỉ rõ trong câu lệnh.
Các thanh ghi được dùng trong phép định địa
chỉ là: AH, BH, CH, DH, AL, BL, CL, DL, AX, BX, CX,
DX, SP, BP, SI, DI, CS, DS, ES, SS.
VD:
ADD AX, BX ;cộng thanh ghi BX vào AX và
lưu kết quả ở thanh ghi AX.
Mov CL, AL ;copy nội dung thanh ghi AL
vào thanh ghi CL.
76
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c ch
c ch
ế
ế
đ
đ



đ
đ


a ch
a ch


c
c


a VXL h
a VXL h


80x86 (3)
80x86 (3)
d/ Định địa chỉ gián tiếp
 Định vị gián tiếp thanh ghi
Lúc này địa chỉ hiệu dụng (EA) là một trong các
thanh ghi: BX, BP, SI, DI.
VD: ADD AX, DS:[BX] ; Cộng nội dung
thanh ghi AX với nội dung ô nhớ có địa chỉ là thanh ghi
BX trong đoạn chỉ bởi DS, kết quả lưu vào thanh ghi AX.
 Định vị cơ sở
EA là tổng của độ dịch chuyển và nội dung của
thanh ghi BX hoặc BP.
VD: Mov AL, SS:[BP+20] ; chuyển nội dung
của ô nhớ có địa chỉ là nội dung thanh ghi BP cộng thêm

độ dời 20 trong đoạn được chỉ bởi SS vào thanh ghi AL.
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 20
77
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c ch
c ch
ế
ế
đ
đ


đ
đ


a ch
a ch


c
c


a VXL h

a VXL h


80x86 (4)
80x86 (4)
e/ Định địa chỉ chỉ số
EA là tổng của độ dịch chuyển và nội dung của
thanh ghi SI hoặc DI. Phép định vị này thường được
dùng trong việc truy xuất dữ liệu kiểu mảng và trong
việc xử lý chuỗi.
VD: Mov DS:[DI+300], AL ; chuyển nội dung
thanh ghi AL vào ô nhớ có địa chỉ là nội dung thanh
ghi DI cộng thêm 300 trong đoạn được chỉ bởi DS.
78
Nguyễn Thị Mỹ Dung – Khoa CNTT
C
C
á
á
c ch
c ch
ế
ế
đ
đ


đ
đ



a ch
a ch


c
c


a VXL h
a VXL h


80x86 (5)
80x86 (5)
f/ Định địa chỉ ngăn xếp
Ngăn xếp gồm các phần tử dữ liệu được lưu
trữ theo trật tự liên tiếp nhau. Phần tử đầu tiên sẽ cất
vào đáy ngăn xếp, phần tử sau sẽ sắp ở đỉnh ngăn
xếp. Mỗi ngăn xếp là một thanh ghi hoặc từ nhớ chứa
địa chỉ của đỉnh ngăn xếp được gọi là con trỏ ngăn
xếp.
VD:
PUSH AX ;cất nội dung thanh ghi AX
vào ngăn xếp.
POP AX ;lấy giá trị thanh ghi AX từ nội
dung đỉnh ngăn xếp.
79
Nguyễn Thị Mỹ Dung – Khoa CNTT
VI. Ki

VI. Ki


u to
u to
á
á
n h
n h


ng v
ng v
à
à
chi
chi


u d
u d
à
à
i to
i to
á
á
n h
n h



ng
ng
1/ Kiểu toán hạng
Có bốn kiểu được dùng trong các hệ thống:
- Kiểu địa chỉ.
- Kiểu dạng số: số nguyên, dấu chấm động,
- Kiểu dạng chuỗi ký tự: ASCII, EBIDEC,
- Kiểu dữ liệu logic: các bit, cờ,
2/ Chiều dài toán hạng
- Thông thường loại của toán hạng xác định luôn
chiều dài của nó.
- Toán hạng thường có chiều dài là byte (8 bit),
nữa từ máy tính (16 bit), từ máy tính (32 bit), từ đôi máy
tính (64 bit).
80
Nguyễn Thị Mỹ Dung – Khoa CNTT
VI. Mã t
VI. Mã t
á
á
c v
c v


Trên tất cả các máy tính ta đều thấy 3 loại: tính
toán số học và luận lý, di chuyển số liệu, chuyển đều
khiển.
Nén, giải nén, hình ảnh, âm thanh
Đồ hoạ và đa phương tiện

Chuyển, so sánh, tìm kiếmTính toán trên chuỗi ký tự
Cộng, nhân, đổi số sang ký tựTính số thập phân
Cộng, nhân (dấu chấm động)Tính toán dấu chấm động
Gọi HĐH, quản lý bộ nhớ ảoHệ thống
Nhảy, trở về, vòng lặp, CTC, Chuyển điều khiển
Nạp hoặc lưu số liệuDi chuyển số liệu
Cộng, trừ, AND, ORTính toán số học và luận lý
Các phép toán sử dụngLoại tác vụ
Kiến trúc máy tính & Hợp ngữ
Chương 2: Kiến trúc phần mềm bộ xử lý 21
81
Nguyễn Thị Mỹ Dung – Khoa CNTT
VIII. Ngôn ng
VIII. Ngôn ng


c
c


p cao v
p cao v
à
à
ngôn ng
ngôn ng


m
m

á
á
y
y
- Một chương trình ngôn ngữ máy được thực
hiện một cách hữu hiệu thì chương trình dịch phải
dịch hữu hiệu các lệnh của ngôn ngữ cấp cao thành
lệnh mã máy.
- Quá trình chuyển đổi từ ngôn ngữ cấp cao
sang ngôn ngữ máy: một bộ biên dịch (Compiler)
chuyển đổi ngôn ngữ cấp cao (độc lập với kiến trúc
phần mềm) sang dạng hợp ngữ (phụ thuộc kiến trúc
phần mềm).
Mô tả quá trình chuyển đổi từ ngôn ngữ cấp
cao sang ngôn ngữ máy
82
Nguyễn Thị Mỹ Dung – Khoa CNTT
Ngôn ng
Ngôn ng


c
c


p cao v
p cao v
à
à
ngôn ng

ngôn ng


m
m
á
á
y (tt)
y (tt)
83
Nguyễn Thị Mỹ Dung – Khoa CNTT

×