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

Giáo Trình Kiến Trúc Máy Tính - Nguyễn Hữu Lộ phần 8 doc

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 (219.29 KB, 13 trang )

Cấn Trúc Máy Tính
-92-
Hình 4.1 (a) mô tả một thanh ghi 8 bit được nối với một bus nhập và một bus
xuất. Thanh ghi bao gồm 8 flip flop loại D, mỗi flip flop lưu trữ 1 bit và được nối với
bus xuất qua một cổng đệm không đảo. Thanh ghi có hai tín hiệu điều khiển, CK và
ối đến tất cả các flip flop. Bình thường 2 tín hiệu
này g thỉnh thoảng chúng được xác lập, gây nên tác động tương
ứng. Khi CK không xác lập, nội dung của tha
xác l
cho phép xuất OE (output enable), n
ở trạng thái tónh nhưn
nh ghi bởi các tín hiệu trên Bus. Khi CK
ập, thanh ghi được nạp từ bus nhập. Khi OE không xác lập, thanh ghi không được
kết nối với bus xuất. Ngược lại khi OE được xác lập, nội dung của thanh ghi được nạp
nên bus xuất ( thanh ghi xuất thông tin lên bus )

Hình 4.1 (a) chi tiết một thanh ghi 8-bit nối với một bus nhập và một bus xuất b)
ký hiệu của một thanh ghi 16 – bit với một bus nhập và 2 bus xuất
Nếu có một thanh ghi khác, R chẳng hạn, có các ngõ vào nối với Bus xuất của
thanh ghi vừa mô tả ở trên, thanh gi này có thể truyền thông tin đến R. Để thực hiện
điều

này, OE phải được xác lập và giữ ở trạng thái này đủ lâu để đưa thông tin lên bus
ổn đònh. Kế đến đường CK của R được xác lập để nạp cho R thông tin này. Thao tác
mở cổng đưa thông tin của một thanh ghi lên bus để nột thanh ghi khác nạp vào thường
xảy ra ở lớp vi chương trình.
Hình 4.1 b) trình bày một thanh ghi 16 bit với 2 bus xuất , mỗi bus được điều
khiển bơiû một tín hiệu OE khác nhau
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-93-


II. MỘT VÍ DỤ VỀ VI CHƯƠNG TRÌNH:


Hình 4.2: Sơ đồ khối của 1 CPU đơn giản của một máy tính điện tử thiết kế theo
phương pháp vi chương trình hoá.
Để thực hiện một lệnh cộng (ADD) cần một hệ tối thiểu các phép vi toán:
Ký tự gợi nhớ Ghi chú
MAR-M Nối MAR với BUS M
MBR-M Nối MBR với BUS M
PC-D Nối PC với BUS D
IA-D Nối IA (của IR) với BUS D
AC-D Nối Accumulator với BUS D
MTS Nối BUS M với BUS S qua ALU
DTS Nối BUS D với BUS S qua ALU
S-MAR Nối BUS S với MAR
S-MBR Nối BUS S với MBR
S-PC Nối BUS S với PC
S-IR Nối BUS S với IR
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-94-
S-AC Nối BUS S với AC
R Đọc nội dung trong Mem ra MBR
W Viết nội dung từ MBR vào Mem
PLUS Cộng nội dung có trên BUS D và BUSM tại ALU và
đưa ra BUS S
ONE Nối BUS D với BUS S qua ALU cộng 1
JMP Nhảy đến đòa chỉ trong lệnh sau nếu A=0
JOPC Nhảy đến đòa chỉ của mã lệnh (giải mã lệnh)
Hình 4.3: hệ tối thiểu các phép vi toán


VI LỆNH MEM Nhảy ALU BUSM BUSD BUSS Đòa chỉ
PC-MAR DTS PCD SMAR
|ADDR|MBR R
(MBR)IR MTS MBRM SIR
DECODE JOPC
(IA)MAR DTS IAD SMAR
|DATA|MBR R
MBR+A PLUS MBRM ACD SAC
PC+1 ONE PCD SPC
Hình 4.4: Vi chương trình thực hiện lệnh ADD
Sử dụng các phương pháp viết chương trình:
- Móc nối chương trình con
- Đánh đòa chỉ chỉ số hoá
- Đánh đòa chỉ thông số hoá
Ưu điểm:
mô phỏng nhiều thiết bò có chức năng khác nhau
Xây dựng kết cấu của hệ thống có thể quyết đònh trong giai đoạn
ối của quá tr
Giảm sai lầm logic
- Có khả năng
bằng 1 máy
-
cu ình thiết kế

Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-95-
CHƯƠNG 5:
g này giới t

cấu t a lớp này. T iển trước bất kỳ
một n gữ máy nào khác ổ biến. Do bởi
trên n áy, vi chương tr ụng (không
phải nữa, ngay
trên n trình, sự phức tạp rất lớn của cấu trúc lớp
1 cũng đủ làm hầu hết những người lập trình
n ài h ù m ùy s ệ ư
kh o phe một ng ời sư (debu các v ơng trình mới trong khi một
ng dụng áy. Đa tính na
chương trình.
I. CÁC THÍ DỤ VỀ LỚP MÁY QUI ƯỚC:
LỚP MÁY QUY ƯỚC

Chươn hiệu lớp máy qui ước (lớp 2) và thảo luận nhiều khía cạnh về
heo lrúc củ òch sử, ngôn ngữ máy lớp 2 được phát tr
gôn n và vẫn được xem là một ngôn ngữ máy ph
hiều m ình được đặt trong bộ nhớ chỉ đọc, người sử d
ương trình cho máy lớp 1. Hơnngười chế tạo máy) không thể viết ch
ững máy người sử dụng có thể vi lập h
e ngại, trừ những người lập trình chuyên
nào có ghiệp. Ngo ra, do k ông co ột ma ự bảo v phần c ùng ở lớp 1, nên
ông thể ch ùp ư ûa sai g) i chư
người khác đa sử m ëc øy hơn nữa còn lớp người sử dụng lập vi

cố g đònh nghóa một cách hính xác lớp máy qui ước là gì (có lẽ
kh nh ngh a được) chún g lơ nà cách khảo sát các
ví dụ, trước tiên là Intel. Mục đích của việc n hiên c ï C
trình bày những ý tưởn thế nào với thế
giới t hiếu theo nhiều cách khác nhau để
trình bày những chọn lựa khác nhau của các nhà thiết kế khác nhau.

Các CPU này tưởng thiết kế một máy tính như là một
chuỗi các lớp máy. à cấu trúc của chúng sẽ được khảo sát
về lập trình trên chúng cũng được giới thiệu tại những điểm cần thiết. Tuy
nhiên, ở đây không cung cấp một mô tả hoàn toàn đầy đủ. Để hiểu thông suốt về tất
cả chi tiết của các C g
xuất bản.
Cuối cùng, chương này chủ yếu xử lý những l
trình của người sử dụng dùng đến (nghóa là chương trình ứng dụng). Các khía cạnh về
cấu trúc và những lệnh liên quan đến người viết hệ điều hành sẽ bò bỏ qua hoặc được
gác lại cho tới khi vấn đề được bàn đến trong chương 6.
1. Họ 8088 của Intel :
Bắt đầu thảo luận về lớp máy qui ước với chip 8088 của Intel là thích hợp vì đây
là bộ óc của các máy IPM PC và những máy mô phỏng theo, và do vậy CPU này được
sử dụng rộng rãi hầu như trên khắp thế giới.
Thay vì gắn c
ông thể đò ó , g ta sẽ iới thiệu ùp máy y bằng
g ứu ho PU hiện có này là nhằm
g được thảo luận ở đây có thể được áp dụng như
hực. Các máy này sẽ được so sánh và đối c
được dùng để minh họa ý
Những đặc tính khác nhau ve
và thông tin
PU, hãy tham khảo những tài liệu được các nhà chế tạo ra chún
ệnh và cấu trúc mà các chương
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-96-

Hình 5.1:Cấu trúc bộ nhớ của 8088


Ở lớp máy qui ước, 8088 và 8086 giống hệt nhau nên mọi điều chúng ta nói về
8088 cũng áp dụng được cho 8086. Chip 8088 có thể đòa chỉ hóa 2
20
byte, đánh số liên
tục bắt đầu từ 0 như trình bày trong hình 5.1.
oặc trên các từ 16 bit. Từ không
PU phải cần đến
giải p
20
xuất. Để truy xuất một lệnh ở ngoài tầm này, ta phải thay đổi nội dung thanh ghi phân
đoạn
truy xuất các phân đoạn dữ liệu và phân đoạn ngăn xếp. Cuối cùng, thanh ghi phân
đoạn phụ (cũng dùng để truy xuất phân đoạn dữ liệu) là một thanh ghi dự phòng khi
cần.

Các lệnh có thể hoạt động trên các byte 8 bit h
nhất thiết bắt đầu ở byte chẵn mặc dù với các từ bắt đầu ở byte chẵn, 8086 làm việc
có hiệu quả hơn.

Với bộ nhớ 2
20
byte, 8088 thực sự cần các đòa chỉ 20 bit để đòa chỉ hóa bộ nhớ. Vì
các thanh ghi và mọi thứ khác của máy đều dùng các từ 16 bit, nên các số 20 bit rõ
ràng không thuận tiện. Để giải quyết vấn đề này, các nhà thiết kế C
háp gọi là "què quặt" (kludge=một biệt ngữ của máy tính chỉ một phương pháp
không lòch sự và vụng về được dùng để làm một điều gì đó). Giải pháp này đưa ra 4
thanh ghi phân đoạn (segment): mã, dữ liệu, ngăn xếp và phụ (code, data, stack và
extra), mỗi thanh ghi phân đoạn chứa một đòa chỉ bộ nhớ trỏ tới nền (base) của một
phân đoạn 64K.


Mỗi thanh ghi phân đoạn trỏ tới một nơi nào đó trong không gian đòa chỉ 2
byte,
như trình bày trong hình 5.2. tất cả việc tìm nạp lệnh đều có liên quan đến thanh ghi
phân đoạn mã. Thí dụ, nếu thanh ghi này trỏ đến đòa chỉ 96000 và bộ đếm chương trình
có giá trò 1024, lệnh kế tiếp sẽ được tìm nạp từ đòa chỉ 97024. Với giá trò này của thanh
ghi phân đoạn mã, các lệnh đặt trong tầm đòa chỉ từ 96000 tới 161535 đều được truy
mã.

Tương tự, thanh ghi phân đoạn dữ liệu và thanh ghi phân đoạn ngăn xếp dùng để
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-97-

Sơ đồ này có nghóa là bất cứ lúc nào, 256K bộ nhớ đều có thể truy xuất được mà
không phải thay đổi một thanh ghi phân đoạn nào cả.

Hình 5.2: Sử dụng các thanh ghi phân đoạn trên 8088

Một số trình biên dòch giới hạn chương trình với chiều dài 64K cho văn bản
chương trình (nghóa là các lệnh) và 64K khác cho cả dữ liệu và ngăn xếp nhằm tránh
tổn p
ết, các thanh ghi phân đoạn nên có độ rộng 20 bit để trỏ tới bất kỳ
đòa chỉ nào trong không gian đòa chỉ 2
20
byte. Tuy nhiên, như đã nói trên, 8088 không
được
lệnh tương ứng để thực hiện phép toán sẽ dài hơn và chậm hơn so với
những lệnh dùng thanh ghi AX.
hí (overhead) thời gian kết hợp với việc nạp và cất liên tục các thanh ghi phân
đoạn hoặc dùng thanh ghi phân đoạn phụ.

Theo lý thuy
trang bò để xử lí các số thanh ghi phân đoạn chỉ trỏ tới những đòa chỉ là bội số của
16 để 4 bit thấp nhất của đòa chỉ là zero và 4 bit này không cần cất vào thanh ghi phân
đoạn. Như vậy, các thanh ghi phân đoạn chỉ chứa 16 bit cao của đòa chỉ 20 bit. 8088 có
14 thanh ghi 16 bit ( hình 5.3 ).
Thanh ghi AX chủ yếu được dùng cho các phép toán số học. Thí dụ để tính tổng
2 số nguyên, chương trình có thể nạp 1 trong 2 số nguyên nào đó vào AX, sau đó cộng
số thứ 2 với AX và cuối cùng cất AX vào bộ nhớ. Cũng có thể dùng những thanh ghi
khác, nhưng các
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-98-

Thanh ghi BX tiêu biểu dùng để chứa con trỏ ( pointer ) trỏ đến bộ nhớ, thanh ghi
CX chứa số đếm trong các lệnh vòng lặp. Để lặp lại một vòng lặp n lần, CX được nạp
giá trò n sau mỗi lần lặp, CX được giảm 1 cho đến khi CX bằng zero, vòng lặp kết
thúc.

DX là một thanh ghi mở rộng của AX trong các lệnh nhân và chia, thanh ghi này
chứa nửa cao của một tích 32 bit hoặc nửa cao của số bò chia 32 bit.

Mỗi thanh ghi 16 bit này (AX, BX,CX,DX) đều có nửa thấp và nửa cao, chúng
đều có thể được đòa chỉ hoá riêng lẻ. Khi dùng phương pháp đòa chỉ hoá này, chúng
hình
nh bởi thanh ghi SI trong phân đoạn dữ liệu và đòa chỉ
đích xác đònh bởi thanh ghi DI trong phân đoạn phụ. Thí dụ, lệnh cho phép di chuyển 1
số byte từ nguồn tới đích.

Thanh ghi BP và SP thường được dùng để đòa chỉ hoá stack. BP trỏ tới đáy của
khung ngăn xếp hiện tại và SP trỏ tới đỉnh của khung ngăn xếp. Biến cục bộ của thủ

tục hiện tại thường được đòa chỉ hoá bằng cách cung cấp bước nhảy (offset) của biến từ
BP (bởi vì biến cục bộ không thẻ chỉ rõ đòa chỉ liên quan tới SP).

Kế tiếp là 4 thanh ghi phân đoạn, như đã mô tả trước đây, theo sau là bộ đếm
chương trình PC dùng để trỏ tới lệnh kế tiếp (liên quan tới vò trí bắt đầu của phân đoạn
mã).

(a)
Hình 5.3: Các
thanh ghi 8088
thành một tập 8 thanh ghi 1 byte có thể dùng với lệnh thao tác trên các đại lượng
1 byte. Sử dụng các thanh ghi theo kiểu này là dấu vết còn tồn tại của cách làm việc
trong 8088 cũ (CPU 8 bit).
Thanh ghi SI và DI được dùng cho các thao tác chuỗi. Một thao tác chuỗi điển
hình cần có đòa chỉ nguồn xác đò
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-99-
Hai thanh ghi cuối cùng là con trỏ chương trình IP (instruction pointer) và các cờ
(flag), trên hầu hết các máy khác chúng được gọi là bộ đếm chương trình và từ trạng
thái chương trình PSW (program status word). Bộ đếm chương trình trỏ tới lệnh kế tiếp
sẽ được thực hiện.
Thanh ghi các cờ (xem hình 5.4) là thanh ghi mới. Thật ra đây không phải là
thanh ghi bình thường màlà 1 tập hợp các bit có thể được thiết lập (set), xóa (clear) và
kiểm tra bởi những lệnh khác nhau.
Một cách tóm tắt, các bit có ý nghóa như sau:
it D g (direction) của các thao tác chuổi. Bit I cho phép ngắt. Bit T
cho phép chạy chương trình từng bước để theo dõi.

B xác đònh hướn


Hình 5.4: Thanh ghi các cờ của 8088

ố học bò tràn. Bit S được thiết lập bởi các lệnh số học, 1 cho kết quả âm, 0 cho
kết quả dương. Tương t
khi k
ột lệnh số học. Có
7 bit không được sử dụng trong 8088, nhưng m
g trên các byte 8-bit.
Những biến thể này được phân biệt bằng một bit trong lệnh.
i chuyển dữ liệu bên trong máy ; giữa các thanh ghi, bộ nhớ và ngăn xếp. Nhóm
thứ 2 thực hiện các phép tính số học, cả số có dấu và không có dấu. Đối với phép nhân
Các bit còn lại thường được gọi là các mã điều kiện (condition code) bởi vì chúng
được thiết lập và xóa bởi những lệnh khác nhau tùy thuộc vào những điều kiện khác
nhau xảy ra (kết quả âm, zero, và v.v… ). Bit 0 được thiết lập khi kết quả của phép
toán s
ự, bit Z được thiết lập là 1 khi kết quả bằng zero và bò xóa về 0
ết quả khác zero. Các bit A và C biểu thò số nhớ xuất hiện ở giữa và cuối toán
hạng. Cuối cùng, bit P là bit kiểm tra chẵn lẻ (parity) kết quả của m
ột số trong chúng được dùng cho những
chip kế thừa.

Tập lệnh của 8088 được liệt kê trong hình 5.5. Nhiều lệnh tham chiếu 1 hoặc 2
toán hạng (operand), hoặc trong các thanh ghi hoặc trong bộ nhớ. Thí dụ, lệnh INC
cộng thêm 1 vào toán hạng. Lệnh ADD cộng nguồn vào đích. Một số lệnh có vài biến
thể liên quan mật thiết. Thí dụ, các lệnh dòch bit có thể dòch trái hoặc dòch phải, có thể
xử lý với bit có dấu hoặc không. Hầu hết các lệnh đều có nhiều dạng mã hoá khác
nhau tuỳ thuộc vào bản chất của các toán hạng.

Trong hình 5.5, trường scr là nguồn của thông tin và không bò thay đổi. Trái lại,

trường dst là đích của thông tin và thường bò thay đổi bởi lệnh. Có những quy luật cho
phép một toán hạch nào đó là nguồn hay là đích , chúng thường thay đổi giữa lệnh này
với lệnh khác và chúng ta sẽ không bàn thêm ở đây. Đa số lệnh đều có 2 biến thể, một
biến thể hoat động trên các từ 16-bit và một số biến thể hoặt độn

Để thuận tiện, ta sẽ chia các lệnh thành nhiều nhóm. Nhóm đầu tiên chứa các
lệnh d
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-100-
chia,
ực hiện các phép tính số BCD (binary-coded decimal), xử lý từng
byte
ø dạng lưu trữ này không có hiệu quả nhưng tránh
được phân rồi sau đó phải đổi lại thành
thập
Các lệnh đại số logic và dòch / quay thao tác với các bit trong 1 từ hoặc 1 byte
theo nhiều cách khác nhau. Một

tích số hoặc số bò chia 32-bit được cất trong AX (chứa phần thấp) và DX (chứa
phần cao).

Nhóm thứ 3 th
như là hai nibble (nửa byte)4 bit. Mỗi nibble chứa một số thập phân (từ 0 đến 9).
Các tổ hợp bit từ 1010 tới 1111 không được dùng . một số nguyên 16-bit có thể chứa
một số thập phân từ 0 đến 9999. Du
sự cần thiết phải đổi số thập phân sang nhò
phân để xuất kết quả. Những lệnh này được dùng để thực hiện các phép tính số
học trên các số BCD.


vài kết hợp cũng được cung cấp.

Hình 5.5 tập lệnh của 8088

Hai nhóm lệnh kế tiếp thực hiện phép kiểm tra và so sánh, sau đó thực hiện nhảy
dựa vào kết quả sinh ra. Kết quả của các lệnh kiểm tra và so sánh được cất trong
những bit khác nhau của thanh ghi cờ. Jxx nghóa là tập các lệnh nhảy có điều kiện tùy
thuộc vào kết quả của phép so sánh trước ( nghóa là, các bit trong thanh ghi cờ ).

Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-101-
8088 có vài lệnh nạp, cất, di chuyển, so sánh và quét chuỗi các kí tự hoặc các từ.
Những lệnh này có thể được mở đầu bằng 1 byte đặc biệt gọi là REP, byte này làm
cho lệnh được lặp lại cho tới khi thỏa mãn một điều kiện nào đó, như CX chẳng hạn,
trong
86, 80386 ) có một số lệnh tiền tố ( prefix ), và chúng ta đã đề
cập đến một tiền tố, REP. Mỗi tiền tố này là một byte đặc biệt thường đứng trước lệnh.
REP
g để buộc lệnh phải
tìm nạp toán hạng của lệnh từ ngăn xếp hoặc từ phân đoạn phụ thay vì từ phân đoạn
dữ liệu.
II. CÁC KHUÔN DẠNG LỆNH
đó CX bò giảm 1 sau mỗi lần lặp cho tới khi bằng 0. Bằng cách này, các khối dữ
liệu tùy ý có thể được di chuyển, so sánh, và v.v…

Nhóm cuối cùng là những lệnh hỗn độn không thích hợp trong một nhóm nào cả.
Những lệnh này bao gồm các lệnh biến đổi, xuất / nhập và dừng CPU.

8088 ( và cả 802

làm cho lệnh theo sau tiền tố này được lặp lại. LOCK dành riêng bus cho toàn bộ
lệnh để cho phép đồng bộ đa xử lí. Những tiền tố khác được dùn

Chương trình bao gồm một chuỗi các lệnh, mỗi lệnh xác đònh một động tác cụ thể
nào đó. Một phần của lệnh được gọi là mã thao tác (operation code ) hoặc opcode cho
biết động tác gì được thực hiện. Nhiều lệnh chứa hoặc chỉ rõ vò trí của dữ liệu được
lệnh sử dụng. Thí dụ lệnh so sánh 2 ký tự xem chúng có giống nhau không cần phải
xác đònh rõ các ký tự nào được so sánh. Vấn đề chung cho biết các toán hạng ở đâu
được gọi là đònh đòa chỉ hay đòa chỉ hóa hay đánh đòa chỉ ( addressing ) sẽ được thảo
luận trong phần sau nữa.
Hình 5.6 trình bày vài khuôn dạng ( format ) tiêu biểu cho các lệnh lớp 2. Trên
một số máy lớp 2, tất cả các lệnh có cùng chiều dài, trên một số máy khác có thể có 2
hoặc 3 chiều dài khác nhau. Hơn nữa các lệnh có thể có chiều dài ngắn hơn, bằng
hoặc dài hơn chiều dài của 1 từ.

Hình 5.6: 3 khuôn dạng chỉ thò tiêu biểu
hí dụ về các khuôn dạng lệnh
không
ở trong bộ nhớ. Vì vậy tồn tại những lệnh cộng 2 thanh ghi,cộng thanh ghi với bộ nhớ

T
Họ 8088/80286/80386 của Intel
Với các CPU của Intel,tình huốn hoàn toàn khác và rất ít theo quy luật. Nhìn
chung, với các lệnh 2 toán hạng, nếu 1 toán hạng ở trong bộ nhớ, toán hạng kia
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-102-
và co
hương tiện để đi tới các opcode 2
byte. Cấu trúc duy nhất trong trường opcode là việc dùng bit thấp trong một số lệnh để

cho b
heo sau byte opcode trong hầu hết các lệnh là 2 byte thứ 2 cho biết toán hạng ở
đâu,
số tổ hợp nào đó và dùng chúng cho những trường hợp đặc biệt.
Trên 80386, trong các phân đoạn 32 bit, các kiểu hoàn toàn khác với các kiểu
øy cần thêm 1 byte, gọi là SIB (scale, index,
base
te.
III. KIỂU ĐỊNH VỊ ĐỊA CHỈ :
äng bộ nhớ với thanh ghi,nhưng không tồn tại lệnh cộng từ nhớ này với từ nhớ kia,
PDP-11 cho phép điều này như là một kết quả trực tiếp cảu tính trực giao.

Trên 8088 mỗi opcode là 1 byte, nhưng với 80386 các opcodé-byte đều đã được
tận dụng hết, vì thế opcode 15 được dùng như là p
iết byte /từ và dùng bit kế bên để cho đòa chỉ bộ nhớ (nếu có) là nguồn hay đích.

T
tương tự với 2 trường kiểu/thanh ghi trong hình 5.21. Vì chỉ có 8 bit nên byte thứ 2
được chia thành 1 trường kiểu 2 bit và 2 trường thanh ghi 3 bit . Như vậy chỉ có 4 cách
để đòa chỉ hoá các toán hạng (PDP-11 có 8) và 1 trong các toán hạng luôn luôn phải là
thanh ghi. Một cách logic, một thanh ghi bất kỳtrong các thanh ghi AX, BX, CX, DX,
SI, DI, BP hoặc SP cần được chỉ rõ như thanh ghi khác, nhưng các quy luật mã hoá
cấm một
trên 8088 và80286. Một số các kiệu na
) để cho thêm một đặc tính kỹ thuật nữa. Sơ đồ này không phải là sơ đồ lý tưởng
nhưng đơn giản là vì chúng không còn bit.

Ngoài ra một số lệnh có 1, 2 hoặc 4 byte nữa để xác đònh đòa chỉ bộ nhớ và 1, 2
hoặc 4 byte khác dược dùng làm toán hạng hằng số ( thí dụ để chuyển số 100 vào
thanh ghi).


Mỗi lệnh có thể có 6 trường, mỗi trường có tầm từ 0 tới 5 byte. Trên 8088 và
80286, lệnh ngắn nhất dài 1 byte và lệnh dài nhất có 9 byte ( kể cả các tiền tố REF,
LOCK và các tiền tố thay thế phân đoạn ). Trên 80386, lệnh ngắn nhất vẫn dài 1 byte,
nhưng với việc cộng thêm các tiền tố, kích thước của toán hạng và kích thước của đòa
chỉ, một lệnh có thể dài tới 17 by

Các lệnh có thể được phân loại theo số đòa chỉ sử dụng. Nên nhớ rằng tập các
thanh ghi được đánh số của CPU thực tế hình thành một bộ nhớ tốt độ cao và xác đònh
một không gian đòa chỉ i 2 được xếp vào loại
có 2 đòa chỉ bởi vì lệnh phải xác đònh các thanh ghi nào tham gia vào phép cộng, giống
như l ác từ nhớ nào được cộng.
ù thể có 1, 2 và 3 đòa chỉ. Trên nhiều máy, việc
thực
. Một lệnh cộng thanh ghi 1 với thanh gh
ệnh cộng 2 từ nhớ phải cho biết c
Một cách tổng quát, các lệnh co
hiện phép toán số học chỉ có 1 đòa chỉ và người ta sử dụng 1 thanh ghi đặc biệt gọi
là thanh chứa (accumulator), thanh ghi này cung lớp 1 toán hạng.
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-103-
Trên những máy này đòa chỉ thường là đòa chỉ cửa từ nhớ m, ở đó toán hạng được
đònh vò. Lệnh cộng xác đònh đòa chỉ m có kết quả là
Accumulator:= accumulator + memory[m]
Các lệnh cộng có 2 đòa chỉ sử dụng 1 đòa chỉ là nguồn và đòa chỉ kia là đích . sau
đó cộng nguồn với đích:
Destination := destination + source
Các lệnh có 3 đòa chỉ cho biết 2 nguồn và 1 đích. Nội dung của 2 nguồn được
cộng với nhau và cất kết quả vào đích.

Chúng ta đã ít chú ý đến cách các bit của 1 trường đòa chỉ được phiên dòch để tìm
toán hạng. Tuy nhiên, cũng có những khả năng khác và trong phần tiếp theo chúng ta
sẽ khám phá ra điều đó.
1. Đònh đòa chỉ tức thời:
Cách đơn giản nhất để 1 lệnh xác đònh 1 toán hạng là phần đòa chỉ của lệnh chứa
chính toán hạng đó, không phải là đòa chỉ hoặc thông tin khác mô tả toán hạng đó ở
đâu.
ressing) có công dụng không yêu cầu một
tham

ời, một toán hạng nguồn bất kỳ có thể là hằng
phép hằng số là 8 bit hoặc 16 bit, nhưng trên
680
Một toán hạng như vậy được gọi là toán hạng tức thời (immediate operand) bởi vì
toán hạng được tìm nạp tự động từ bộ nhớ cùng lúc với lệnh và được sử dụng ngay lập
tức.
Đònh đòa chỉ tức thời (immediate add
chiếu bộ nhớ để tìm nạp toán hạng. Điểm bất lợi là toán hạng bò giới hạn bởi một
số đặt vừa trong một trường đòa chỉ. Trong một lệnh với đòa chỉ 3 bit (nghóa là trường
thanh ghi), giới hạn của các toán hạng là 3 bit, hạn chế những lợi điểm của cách đònh
đòa chỉ này.
Các CPU của Intel không có kiểu đònh đòa chỉ cho các toán hạng tức thời. Thay
vào đó, chúng có một tập lớn các lệnh phân biệt trong đó một trong hai toán hạng là
tức thời. Thực tế, 9 opcode khác nhau sử dụng cho lệnh Add, 5 trong số đó cho phép
có toán hạng tức thời, tùy thuộc vào cách chỉ ra đích và chiều dài của toán hạng tức
thời (8, 16 hoặc 32 bit).
680x0 có kiểu đònh đòa chỉ tức th
số. Trên 68000, một số lệnh chỉ cho
20 và 68030 cả 3 loại chiều dài đều được phép. Ngoài ra, các lệnh đặt biệt như
ADDI, ADDQ và CMPI cho phép các lệnh tức thời để được mã hóa một cách hiệu

quả hơn.
2. Đònh đòa chỉ trực tiếp
Phương pháp đơn giản khác để xác đònh một toán hạng là cung lớp đòa chỉ của
từ nhớ chứa toán hạng. Dạng này được gọi là đònh đòa chỉ trực tiếp (Direct addressing
). Chi tiết về cách thức máy tính nhận biết đòa chỉ nào là tức thời, đòa chỉ nào là trực
tiếp sẽ được thảo luận sau. Một cách tổng quát, có 2 phương pháp: sử dụng các
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-104-
opcode khác nhau hoặc sử dụng một kiểu đònh đòa chỉ đặc biệt cho mỗi loại toán
hạng.

Hình 5.7: Đòa chỉ trực tiếp
Các CPU của Intel đều có đònh đòa chỉ trực tiếp. 8088 và 80286 sử dụng các đòa
chỉ trực tiếp 16 bit. 80386 sử dụng các đòa chỉ 16 bit ở các chế độ thực và ảo, các phân
đoạn 16 bit ở chế độ bảo vệ. Trong chế độ bảo vệ 32 bit, các đòa chỉ trực tiếp dài 32
bit. Lưu ý là trong mọi trường hợp, các đòa chỉ trực tiếp dều không bao trùm toàn bộ
khôn
nhiều trường toán hạng.
3.
g gian đòa chỉ . 860x0 có 2 dạng đònh đòa chỉ trực tiếp, một dạng với đòa chỉ 16 bit
và một dạng với đòa chỉ 32 bit. Các đòa chỉ trong 64K đầu tiên của bộ nhớ được tham
chiếu bằng dạng ngắn trong khi các đòa chỉ trên 64K cần dạng dài. Cả 2 dạng này được
xác đònh bởi các giá trò trong trường MOD 3 bit, và do vậy áp dụng cho tất cả các lệnh
có một hoặc
Đònh đòa chỉ thanh ghi
Khái niệm đònh đòa chỉ thanh ghi cũng giống như đònh đòa chỉ trực tiếp. trong dạng
ònh đòa chỉ này, trường đòa chỉ chứa số của các thanh ghi lưu giữ toán hạng. Một máy
ới 16 thanh ghi và 65536 từ nhớ thực sự có 2 không gian đòa chỉ. Người ta nghó đến
đ

v
một đòa chỉ trên một máy như vậy có 2 phần:
(
d
n
i tương ứng với mỗi một lệnh bộ nhớ, một nửa số
opco ộ nhớ và một nửa dành cho các toán hạng thanh ghi.
Một b
N
d
d
Các máy được thiết kế với các thanh ghi vì 2 lý do :
a) một bit cho biết thanh ghi hoặc từ nhớ
(b) một trường đòa chỉ cho biết thanh ghi nào hoặc từ nhớ nào.
Do có ít thanh ghi hơn từ nhớ nên cần đòa chỉ nhỏ hơn và như vậy các lệnh có
ạng khác nhau thường được dùng cho các toán hạng thanh ghi và các toán hạng bộ
hớ.
Nếu có một lệnh thanh gh
de dành cho các toán hạng b
it trong opcode được cần đến để ghi rõ không gian đòa chỉ nào được sử dụng.
ếu sau đó bit được loại bỏ khỏi trường opcode và được đặt vào trường đòa chỉ, việc sử
ụng 2 không gian đòa chỉ sẽ rõ hơn. Bit sẽ cho biết không gian đòa chỉ nào được sử
ụng.
Nguyễn Hữu Lộc Khoa Vật Lý

×