Tìm kiếm
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Giải thuật Bresenham
Mon Jun 24, 2013 11:27 pm by hangme

» host facebook
Mon Apr 02, 2012 2:26 pm by Admin

» Cyberlink PowerDirector 9 key full
Thu Mar 29, 2012 5:00 pm by Admin

» PowerDirector 10 Ultra
Fri Mar 23, 2012 6:15 pm by Admin

» Mảng - Nhập mảng số nguyên, tính tổng phần tử dương, tìm số hoàn hảo, tìm max, min, sắp xếp từ lớn đến nhỏ, từ nhỏ đến lớn
Sun Mar 18, 2012 9:17 pm by Admin

» HTML+CSS Form đăng nhập
Tue Sep 13, 2011 10:38 pm by Admin

» HTML+javascript : Lịch Dương
Thu Sep 08, 2011 5:15 pm by Admin

» HTML+javascript : Đòng hồ điện tử
Thu Sep 08, 2011 5:06 pm by Admin

» HTML: Form Đăng nhập
Thu Sep 08, 2011 4:42 pm by Admin

Affiliates
free forum


CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ

Bài gửi  Admin on Thu May 05, 2011 9:31 pm

1. Các thanh ghi
Bên trong CPU có một số ô nhớ được gọi là thanh ghi (register). Các thanh ghi có độ dài
16 bit và được chia thành: thanh ghi đoạn, thanh ghi đa năng, thanh ghi con trỏ và chỉ số,
thanh ghi cờ.
a) Thanh ghi đoạn
Bộ vi xử lý 8086/88 làm việc ở chế độ thực, với 20 bit địa chỉ bộ vi xử lý này có khả năng
đánh địa chỉ cho 220
= 1 M ô nhớ = 1 MB. Trong 1 MB bộ nhớ người ta chia thành các đoạn
64 KB khác nhau để:
- chứa mã chương trình,
- chứa dữ liệu và kết quả trung gian của chương trình và
- tạo ra một đoạn nhớ đặc biệt gọi là ngăn xếp (STACK) dùng vào việc quản lý các thông
số của vi xử lý khi gọi CTC con hoặc trở về từ CTC.
Để quản lý các đoạn nhớ trên, bộ vi xử lý 8088 có 4 thanh ghi đoạn xác định địa chỉ bắt
đầu của 4 đoạn nhớ 64 KB:
+ CS (Code Segment): thanh ghi đoạn mã, xác định địa chỉ bắt đầu của đoạn nhớ chứa
mã chương trình.
+ DS (Data Segment): thanh ghi đoạn dữ liệu, xác định địa chỉ bắt đầu của đoạn nhớ
chứa hầu hết dữ liệu của chương trình.
+ ES (Extra Segment): thanh ghi đoạn dữ liệu phụ, xác định địa chỉ bắt đầu của đoạn nhớ
chứa dữ liệu phụ. Đoạn nhớ này được các lệnh về chuỗi sử dụng để chữ dữ liệu đích.
+ SS (Stack Segment): thanh ghi đoạn ngăn xếp, xác định địa chỉ bắt đầu của đoạn nhớ
ngăn xếp.
Nội dung của các thanh ghi đoạn xác định địa chỉ của ô nhớ nằm ở đầu đoạn tương ứng. Vì
địa chỉ của ô nhớ là 20 bit mà các thanh ghi đoạn chỉ có 16 bit nên bộ vi xử lý phải thêm 0H
vào bên phải nội dung của thanh ghi đoạn để có địa chỉ 20 bit của ô nhớ nằm ở đầu đoạn. Địa
chỉ này gọi là địa chỉ cơ sở hay địa chỉ đoạn. Địa chỉ của các ô nhớ khác trong đoạn được tính
bằng cách cộng thêm vào địa chỉ đoạn một giá trị gọi là độ lệnh (offset) hay địa chỉ lệch. Địa chỉ lệch có độ dài 16 bit và thường đặt trong các thanh ghi 16 bit khác đóng vai trò thanh ghi
lệch. Cụ thể, để xác định địa chỉ vật lý 20 bit của một ô nhớ nào đó trong một đoạn nhớ bất
kỳ, CPU 8088 phải dùng đến hai thanh ghi 16 bit: một thanh ghi đoạn và một thanh ghi lệch.
Từ nội dung của hai thanh ghi này tạo ra địa chỉ vật lý theo công thức sau:
Địa chỉ vật lý = Nội dung thanh ghi đoạn x 24
+ Nội dung thanh ghi lệch
= Địa chỉ đoạn + Địa chỉ lệch
Việc dùng hai thanh ghi để ghi nhớ thông tin về địa chỉ tạo ra một loại địa chỉ gọi là địa chỉ
logic, được ký hiệu như sau:
Thanh ghi đoạn:Thanh ghi lệch (địa chỉ lệch)
Segment:Offset
Segment:Offset là địa chỉ logic vì nó tồn tại dưới dạng giá trị của các thanh ghi, và khi cần
truy nhập ô nhớ nào thì nó phải được đổi ra địa chỉ vật lý của ô nhớ đó.
Địa chỉ logic có tính đa trị vì ứng với một địa chỉ vật lý có rất nhiều địa chỉ logic khác
nhau. Điều này cho 8086/88 linh hoạt trong việc định địa chỉ. Ví dụ, địa chỉ vật lý 12345H có
thể tạo ra từ các địa chỉ logic sau:
1000H:2345H
1200H:0345H
1004H:2305H
0300H:E345H
……

Vì các thanh ghi đoạn được thêm 0H vào bên phải để xác định địa chỉ bắt đầu của đoạn nên
các đoạn chỉ có thể bắt đầu tại các ranh giới 16 byte. Hơn nữa, vì các đoạn có độ dài 64 KB
nên khi biết địa chỉ bắt đầu của đoạn thì ta cũng biết được địa chỉ kết thúc đoạn bằng cách
cộng thêm vào địa chỉ bắt đầu đoạn FFFFH.
Ví dụ: Một thanh ghi đoạn có địa chỉ là 1000H => địa chỉ bắt đầu đoạn là 10000H và địa
chỉ kết thúc đoạn là 1FFFFH.
b) Các thanh ghi đa năng
Bộ vi xử lý 8088 có 4 thanh ghi đa năng 16 bit: AX, BX, CX, DX. Khi cần chứa dữ liệu 8
bit thì mỗi thanh nghi này có thể tách ra thành hai thanh ghi 8 bit cao và 8 bit thấp, đó là các
cặp AH và AL, BH và BL, CH và CL, DH và DL. Các thanh ghi đa năng có thể chứa các loại
dữ liệu khác nhau song chúng cũng có những chức năng chuyên dụng được dùng đến trong
những công việc đặc biệt. Vì vậy các thanh ghi đa năng này được gán cho những cái tên nói
lên chức năng chuyên dụng của chúng. - AX (Accumulator): thanh ghi chứa, thường dùng để chứa kết quả của các thao tác chẳng
hạn như lệnh nhân, chia và một số lệnh hiệu chỉnh dữ liệu.
- BX (Base): thanh ghi cơ sở, thường chứa địa chỉ lệch của ô nhớ trong đoạn DS.
- CX (Count): thanh ghi đếm, CX thường chứa số lần lặp trong các lệnh lặp, CL thường
chứa số lần dịch hoặc quay trong lệnh dịch và quay thanh ghi.
- DX (Data): thanh ghi dữ liệu, DX cùng với AX tham gia vào phép nhân hoặc chia các số
16 bit. DX còn dùng để chứa địa chỉ của các cổng vào/ra trong các lệnh vào ra dữ liệu trực
tiếp.
c) Thanh ghi con trỏ và chỉ số
Bộ vi xử lý 8088 có 3 thanh ghi con trỏ (IP, BP, SP) và 2 thanh ghi chỉ số (SI, DI). Các
thanh ghi này ngầm định được sử dụng làm các thanh ghi lệch cho các đoạn tương ứng. Cụ
thể:
- IP (Instruction Pointer): thanh ghi con trỏ lệnh, IP luôn trỏ vào lệnh tiếp theo sẽ được
thực hiện nằm trong đoạn mã CS. Địa chỉ của lệnh này là CS:IP
- BP (Base Pointer): con trỏ cơ sở, BP luôn trỏ vào dữ liệu nằm trong đoạn ngăn xếp. Địa
chỉ logic của ô nhớ ngăn xếp do BP trỏ tới là SS:BP
- SP (Stack Ponter): con trỏ ngăn xếp, SP luôn trỏ vào đỉnh hiện thời của ngăn xếp. Địa chỉ
logic của đỉnh ngăn xếp là SS:SP
- SI (Source Index): chỉ số nguồn, SI trỏ vào dữ liệu trong đoạn dữ liệu DS. Địa chỉ logic
của ô nhớ do SI trỏ tới là DS:SI
- DI (Destinaton Index): chỉ số đích, DI trỏ vào dữ liệu trong đoạn dữ liệu DS. Địa chỉ
logic của ô nhớ do DI trỏ tới là DS:DI
Riêng trong các lệnh về chuỗi thì ES:DI luôn ứng với địa chỉ của một phn tử thuộc chuỗi
đích, DS:SI luôn ứng với địa chỉ của một phần tử thuộc chuỗi nguồn. d) Thanh ghi cờ (Flag Register)
Bên trong bộ vi xử lý 8088 có một thanh ghi đặc biệt gọi là thanh ghi cờ hay thanh ghi
trạng thái. Mỗi bit của thanh ghi này được dùng để phản ánh một trạng thái nhất định của kết
quả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU. Thanh ghi cờ có 16
bit nhưng chỉ dùng hết 9 bit làm bit cờ. Các bit cờ chia thành hai loại:
* Các cờ trạng thái: có 6 cờ trạng thái là C, P, A, Z, S và O. Các cờ trạng thái này được
thiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh toán học và logic.
− C (Carry): cờ nhớ, C = 1 khi cớ nhớ hoặc mượn.
− P (Parity): cờ chẵn lẻ, P = 1 khi tổng số bit 1 trong kết quả là chẵn, P = 0 khi tổng số bit
1 trong kết quả là lẻ.
− A (Auxiliary): cờ nhớ phụ, A = 1 khi có nhớ hoặc mượn từ một số BCD thấp sang một
số BCD cao. − Z (Zero): cờ rỗng, Z = 1 khi kết quả của phép tính số học bằng 0, Z = 0 khi kết quả của
phép tính số học khác 0.
− S (Sign): cờ dấu, S = 1 kết quả âm.
− O (Overflow): cờ tràn, O = 1 khi kết quả vợt ra ngoài giới hạn biểu diễn dành cho nó.
* Các cờ điều khiển: có 3 cờ T, I, D. Các cờ này được thiết lập bằng 1 hoặc xóa bằng 0
thông qua các lệnh để điều khiển chế độ làm việc của bộ vi xử lý.
− T (Trap): cờ bẫy, T = 1 thì bộ vi xử lý làm việc ở chế độ chạy từng lệnh.
− I (Interrupt): cờ ngắt, I = 1 thì bộ vi xử lý cho phép các yêu cầu ngắt được tác động. Cờ
này được thiết lập bằng lệnh STI và xóa bằng lệnh CLI.
− D (Direction): cờ hướng, D = 1 thì bộ vi xử lý làm việc với chuỗi ký tự theo thứ tự từ
phải sang trái.

Admin
Admin

Tổng số bài gửi : 157
Join date : 09/06/2010
Age : 25
Đến từ : Hải Dương

Xem lý lịch thành viên http://bkiz.yourforum4u.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết