Professional Documents
Culture Documents
CuuDuongThanCong.com https://fb.com/tailieudientucntt
2/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
3/Chapter2
Sơ đồ khối 8088/8086
AX EU
bus địa chỉ BIU
Các thanh 20 bit
BX
ghi đa năng
CX
DX Bus trong của CPU
Các thanh ghi CS
SP 16 bit dữ liệu
Các thanh ghi BP đoạn và con trỏ DS
20 bit địa chỉ
SS
con trỏ SI lệnh
DI ES
và chỉ số IP
CX CH CL
DX DH DL
• Thanh ghi chứa AX (accumulator): chứa kết quả của các phép tính. Kết quả 8 bit được chứa
trong AL
• Thanh ghi cơ sở BX (base): chứa địa chỉ cơ sở, ví dụ của bảng dùng trong lệnh XLAT
(Translate)
• Thanh ghi đếm CX (count): dùng để chứa số lần lặp trong các lệnh lặp (Loop). CL được dùng
để chứa số lần dịch hoặc quay trong các lệnh dịch và quay thanh ghi
• Thanh ghi dữ liệu DX (data): cùng AX chứa dữ liệu trong các phép tính nhân chia số 16 bit.
DX còn được dùng để chứa địa chỉ cổng trong các lệnh vào ra dữ liệu trực tiếp (IN/OUT)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
8/Chapter2
10000H 1000
Địa chỉ vật lý=Segment*16 + offset
Thanh ghi đoạn
Chế độ thực (real mode) 00000H
CuuDuongThanCong.com https://fb.com/tailieudientucntt
10/Chapter2
1000 H 2345H
1200 H 0345H
1004 H ?
0300 H ?
• Ví dụ: Cho địa chỉ đầu của đoạn: 49000 H, xác định địa chỉ cuối
CuuDuongThanCong.com https://fb.com/tailieudientucntt
11/Chapter2
00000
CuuDuongThanCong.com https://fb.com/tailieudientucntt
12/Chapter2
s
t
a d
c a
k 0A480
t 0A47F
a c Stack
o 0A280
d 0A28 SS
0A27F
e Data
0A0F0 0A0F DS
0A0EF
Code
090F0 090F CS
00000
CuuDuongThanCong.com https://fb.com/tailieudientucntt
13/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
16/Chapter2
15 14 2 1 0
O D I T S Z A P C
CuuDuongThanCong.com https://fb.com/tailieudientucntt
18/Chapter2
15 14 2 1 0
O D I T S Z A P C
• 3 cờ điều khiển
T hoăc TF (trap flag)): cờ bẫy, TF=1 khi CPU làm việc ở chế độ chạy từng lệnh
I hoặc IF (Interrupt enable flag): cờ cho phép ngắt, IF=1 thì CPU sẽ cho phép
các yêu cầu ngắt (ngắt che được) được tác động (Các lệnh: STI, CLI)
D hoặc DF (direction flag): cờ hướng, DF=1 khi CPU làm việc với chuỗi ký tự
theo thứ tự từ phải sang trái (lệnh STD, CLD)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
19/Chapter2
100h
CuuDuongThanCong.com https://fb.com/tailieudientucntt
20/Chapter2
Không có
pipelining F1 D1 E1 F2 D2 E2 F3 D3 E3
F1 D1 E1
Có pipelining F2 D2 E2
F3 D3 E3
CuuDuongThanCong.com https://fb.com/tailieudientucntt
22/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
23/Chapter2
Intel 8088
• 16-bit processor
• introduced in 1979
• 3 mm, 5 to 8 MHz, 29 KTOR,
0.33 to 0.66 MIPS
CuuDuongThanCong.com https://fb.com/tailieudientucntt
24/Chapter2
Intel 8088
CuuDuongThanCong.com https://fb.com/tailieudientucntt
25/Chapter2
Intel 8086
CuuDuongThanCong.com https://fb.com/tailieudientucntt
26/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
27/Chapter2
Vùng nhớ
mở rộng
CuuDuongThanCong.com https://fb.com/tailieudientucntt
28/Chapter2
9FFFF
MSDOS
9FFF0
08E30
COMMAND.COM
08490
Device drivers (mouse.sys)
02530
MSDOS
01160
IO.SYS
00700
Vùng DOS
00500
Vùng BIOS
00400
00000 Các vector ngắt
CuuDuongThanCong.com https://fb.com/tailieudientucntt
29/Chapter2
FFFFF
ROM BIOS
F0000
ROM BASIC
E0000
Vùng để dành
C8000
Video BIOS ROM
C0000
Video RAM (text)
B0000
Video RAM (đồ hoạ)
A0000
CuuDuongThanCong.com https://fb.com/tailieudientucntt
30/Chapter2
Vùng mở rộng
COM1
03F8
Điều khiển đĩa mềm
03F0
CGA adapter
03D0
LPT1
0378
Điều khiển ổ cứng
0320
COM2
02F8
8255
0060
Định thời (8253)
0040
Điều khiển ngắt
0020
0000 Điều khiển DMA
CuuDuongThanCong.com https://fb.com/tailieudientucntt
31/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
32/Chapter2
FFFFF
Reset Bootstrap
FFFF0 program jump
003FF
Các vector ngắt
00000
CuuDuongThanCong.com https://fb.com/tailieudientucntt
33/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
34/Chapter2
• Ví dụ:
MOV BX, DX ; Copy nội dung DX vào BX
MOV AL, BL ; Copy nội dung BL vào AL
MOV AL, BX ; không hợp lệ vì các thanh ghi có kích thước khác nhau
MOV ES, DS ; không hợp lệ (segment to segment)
MOV CS, AX ; không hợp lệ vì CS không được dùng làm thanh ghi đích
CuuDuongThanCong.com https://fb.com/tailieudientucntt
35/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
36/Chapter2
• Ví dụ:
MOV AL, [1234H] ; Copy nội dung ô nhớ có địa chỉ DS:1234 vào AL
MOV [ 4320H ], CX ; Copy nội dung của CX vào 2 ô nhớ liên tiếp DS: 4320 và
DS: 4321
CuuDuongThanCong.com https://fb.com/tailieudientucntt
37/Chapter2
• Ví dụ:
MOV AL, [BX] ; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL
MOV [ SI ], CL ; Copy nội dung của CL vào ô nhớ có địa chỉ DS:SI
MOV [ DI ], AX ; copy nội dung của AX vào 2 ô nhớ liên tiếp DS: DI và DS:
(DI +1)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
38/Chapter2
• Ví dụ:
MOV CX, [BX]+10 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ DS:BX+10 và
DS:BX+11 vào CX
MOV CX, [BX+10] ; Cách viết khác của lệnh trên
MOV AL, [BP]+5 ; copy nội dung của ô nhớ SS:BP+5 vào thanh ghi AL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
39/Chapter2
• Ví dụ:
MOV AX, [SI]+10 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ DS:SI+10 và
DS:SI+11 vào AX
MOV AX, [SI+10] ; Cách viết khác của lệnh trên
MOV AL, [DI]+5 ; copy nội dung của ô nhớ DS:DI+5 vào thanh ghi AL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
40/Chapter2
• Ví dụ:
MOV AX, [BX] [SI]+8 ; Copy nội dung 2 ô nhớ liên tiếp có địa chỉ
DS:BX+SI+8 và DS:BX+SI+9 vào AX
MOV AX, [BX+SI+8] ; Cách viết khác của lệnh trên
MOV CL, [BP+DI+5] ; copy nội dung của ô nhớ SS:BP+DI+5 vào thanh ghi
CL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
41/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
42/Chapter2
• Ví dụ:
MOV AL, [BX]; Copy nội dung ô nhớ có địa chỉ DS:BX vào AL
MOV AL, ES:[BX] ; Copy nội dung ô nhớ có địa chỉ ES:BX vào AL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
43/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
44/Chapter2
D W
CuuDuongThanCong.com https://fb.com/tailieudientucntt
45/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
46/Chapter2
1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
48/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
49/Chapter2
• MOV
Dùng để chuyển giữa các thanh ghi, giữa 1 thanh ghi và 1 ô nhớ hoặc chuyển 1
số vào thanh ghi hoặc ô nhớ
Cú pháp: MOV Đích, nguồn
Lệnh này không tác động đến cờ
Ví dụ:
MOV AX, BX
MOV AH, ‘A’
MOV AL, [1234H]
CuuDuongThanCong.com https://fb.com/tailieudientucntt
50/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
51/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
52/Chapter2
• Lệnh PUSHF
Cất nội dung của thanh ghi cờ vào ngăn xếp
CuuDuongThanCong.com https://fb.com/tailieudientucntt
53/Chapter2
AX 1234 CuuDuongThanCong.com
AX 1234 BX
https://fb.com/tailieudientucntt 7856
54/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
55/Chapter2
1300A 1300A
13009 12 13009 12
13008 34 13008 34 SP
13007 78 13007 78
13006 SP 13006
56 56
13005 13005
13004 13004
13003 13003
13002 13002
13001 13001
13000 13000
SS 1300 SS 1300
SP 0006 SP 0008
DX 3254CuuDuongThanCong.com
DX
https://fb.com/tailieudientucntt 7856
56/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
57/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
58/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
59/Chapter2
• Lệnh ADD
Lệnh cộng hai toán hạng
Cú pháp: ADD Đích, nguồn
Thực hiện: Đích=Đích + nguồn
Giới hạn: toán hạng không được là 2 ô nhớ và thanh ghi đoạn
Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF
Ví dụ:
ADD AX, BX
ADD AX, 40H
CuuDuongThanCong.com https://fb.com/tailieudientucntt
60/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
61/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
62/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
63/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
64/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
65/Chapter2
CF MSB LSB
• Lệnh RCR
Lệnh quay phải thông qua cờ nhớ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
67/Chapter2
CF MSB LSB
• Lệnh ROR
Lệnh quay phải
CuuDuongThanCong.com https://fb.com/tailieudientucntt
68/Chapter2
Thực hiện: dịch trái đích CL bit tương đương với Đích=Đích*2CL
Lệnh này thay đổi cờ SF, ZF, PF
CF MSB LSB
• Lệnh SHL
Lệnh dịch trái logic tương tự như SAL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
69/Chapter2
MSB LSB CF
CuuDuongThanCong.com https://fb.com/tailieudientucntt
70/Chapter2
MSB LSB CF
Chú ý:
Trong các lệnh dịch và quay, toán hạng không được là thanh ghi đoạn
CuuDuongThanCong.com https://fb.com/tailieudientucntt
71/Chapter2
• Cách đánh địa chỉ ở chế độ bảo vệ ở các máy tính từ 80286
CuuDuongThanCong.com https://fb.com/tailieudientucntt
72/Chapter2
Phạm vi nhảy: -128 đến 127 bytes so với lệnh tiếp theo lệnh JMP
Thực hiện: IP=IP + độ lệch
Ví dụ:
XOR BX, BX
Nhan: MOV AX, 1
ADD AX, BX
JMP SHORT Nhan
CuuDuongThanCong.com https://fb.com/tailieudientucntt
73/Chapter2
E 9 Độ lệchLo Độ lệchHi
Nhảy gián tiếp
CuuDuongThanCong.com https://fb.com/tailieudientucntt
74/Chapter2
E A IP Lo IP Hi CS Lo CS Hi
Phạm vi nhảy: nhảy trong 1 đoạn mã hoặc nhảy sang đoạn mã khác
Ví dụ:
FFFFFH
Đoạn mã 2
Nhảy xa
+127 Đoạn mã 1
Nhảy ngắn
JMP Nhảy gần
-128
00000H
CuuDuongThanCong.com https://fb.com/tailieudientucntt
76/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
77/Chapter2
Lặp đến khí CX=0 Lặp đến khí CX=0 Lặp đến khí CX=0
hoặc AL<>10 hoặc AL=10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
78/Chapter2
Lệnh CALL
• Dùng để gọi chương trình con
• Có 2 loại: CALL gần và CALL xa
CALL gần (near call): tương tự như nhảy gần
Gọi chương trình con ở trong cùng một đoạn mã
Tong PROC NEAR Tong PROC NEAR CALL WORD PTR [BX]
ADD AX, BX
ADD AX, BX
ADD AX, CX
ADD AX, CX RET
Tong ENDP
RET
...
Tong ENDP MOV BX, OFFSET Tong
CALL BX
...
CALL Tong
Cất IP vào ngăn xếp Cất IP vào ngăn xếp Cất IP vào ngăn xếp
IP=IP + dịch chuyển IP= BX IP= [BX+1] [BX]
RET: lấy IP từ ngăn xếp
CuuDuongThanCong.com RET: lấy IP từ ngăn xếp RET: lấy IP từ ngăn xếp
https://fb.com/tailieudientucntt
79/Chapter2
Lệnh CALL
CALL xa (far call): tương tự như nhảy xa
Gọi chương trình con ở ngoài đoạn mã
CuuDuongThanCong.com https://fb.com/tailieudientucntt
81/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
82/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
83/Chapter2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
84/Chapter2
15 2 1 0
Index TI RPL
Limit
7 7
GDOA
00000000 00000000 6 Base(B31-B24)
V (L19-L16) 6
5 Access rights Base(B23-B16) 4 5 Access rights Base(B23-B16) 4
3 Base(B15-B0) 2 3 Base(B15-B0) 2
1 Limit(L15-L0) 0 1 Limit(L15-L0) 0
CuuDuongThanCong.com https://fb.com/tailieudientucntt