CHƯƠNG 1:
GIỚI THIỆU CHUNG
Máy tính số là thiết bị có khả năng giải các bài toán bằng cách thực hiện một số
lệnh hữu hạn. Chương trình máy tính gồm một dãy lệnh sắp xếp theo một trình tự nhất
định để thực hiện một việc cho trước. Những linh kiện điện tử trong mỗi máy tính chỉ
có thể nhận biết và thực hiện trực tiếp một số lệnh hữu hạn và một chương trình máy
tính chỉ có thể thực hiện trên máy tính đó nếu sử dụng chính số lệnh hữu hạn đó.
Tập lệnh mà máy tính thực hiện trực tiếp tạo ra một ngôn ngữ cho phép người sử
dụng trao đổi được với máy tính. Đó là ngôn ngữ máy. Khi chế tạo ra một máy tính
mới, người ta tạo ra các lệnh, hình thành ngôn ngữ máy. Thông thường người ta có
khuynh hướng chọn các lệnh này càng đơn giản càng tốt để hạn chế mức độ phức tạp
(và dĩ nhiên là giá thành ) của các linh kiện điện tử cần thiết. Khó khăn là các ngôn
ngữ máy này còn quá nguyên sơ nên rất khó sử dụng.
126 trang |
Chia sẻ: phuongt97 | Lượt xem: 389 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Cấu trúc máy tính - Nguyễn Hữu Lộc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ố cho biết than
bit. Thông tin đặt trong thanh ghi sẽ tồn tại cho đến khi có một thông tin khác
thay thế. Qúa trình đọc thông tin ra khỏi một thanh ghi không làm thay đổi nội dung
của thanh ghi này. Nói cách khác, khi một thanh ghi được đọc, một bản sao nội dung
của thanh ghi được tạo ra và bản gốc trong thanh ghi không bị xáo trộn.
2. Bus nội:
Bus nội là tập hợp các đường dây truyền tín hiệu theo dạng song song. Thí dụ:
các bus được dùng để cho phép nội dung của một thanh ghi được sao chép đến một
thanh ghi khác. Không giống bus hệ thống đã khảo sát ở chương 3, các bus này chỉ kết
nối h
.
guồn và thanh ghi còn lại luôn
luôn
. Một bus mà các thành phần kết nối có đặc tính này được gọi là
bus b
rãi khi có nhiều thành phần nối đến bus
và ch
ai thành phần do vậy không cần các đường địa chỉ hoặc các đường điều khiển
bao quát chỉ cần n đường dữ liệu và trong trường hợp tổng quát một hoặc hai đường
điều khiển cũng đủ. Các bus được dùng do bởi việc chuyển song song tất cả các bit
cùng một lúc sẽ nhanh hơn nhiều so với truyền nối tiếp từng bit một ở mỗi thời điểm
Một bus có thể là đơn hướng (unidirectional) hay song hướng (bidirectional). Bus
đơn hướng chỉ có thể chuyển dữ liệu theo một chiều trong khi bus song hướng chuyển
dữ liệu theo cả hai chiều nhưng không đồng thời. Các bus đơn hướng điển hình được
dùng để nối hai thanh ghi, một thanh ghi luôn luôn là n
là đích. Các bus song hướng điển hình được dùng khi bất kỳ thanh ghi nào trong
tập thanh ghi cũng có thể là nguồn hoặc là đích.
Nhiều thành phần có khả năng tự kết nối hoặc không kết nối về mặch địên với
bus (nhưng vẫn kết nối về mặt vật lý. Các kết nối này có thể được thực hịên hoặc
không trong vài ngiây
a trạng thái (tristate bus) vì mỗi một đường của bus có thể là 0, 1 hoặc không kết
nối. Các bus ba trạng thái được sử dụng rộng
úng đều có khả năng đưa thông tin lên bus .
Nguyễn Hữu Lộc Khoa Vật Lý
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 220 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ớ 220 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ỉ 220 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ú
Các file đính kèm theo tài liệu này:
- giao_trinh_cau_truc_may_tinh_nguyen_huu_loc.pdf