Thanh ghi
Thanh ghi
Thanh ghi nằm bên trong CPU tùy theo đội dài 8 hay 16 bít và tùy theo chức năng. Khi đó, thanh ghi được dùng để chứa dữ liệu, lưu trữ dữ liệu, kết quả trung gian của máy tính hoặc đơn vị địa chỉ bộ nhớ 8088 có 14 thanh ghi được chia làm 5 nhóm
I. Nhóm thanh ghi đa dụng : (General Register)
Gồm 4 thanh ghi đa dụng : AX,BX,CX và DX (có 16 bít)
Công dụng chung của các thanh ghi này là : dùng trong các phép
toán số học, logic, chứa dữ liệu.
Một thanh ghi 16 bít có thể được xem là 2 thanh ghi 8bít và
chúng được chia như sau :
Thanh ghi
16 bít 2 thanh ghi 8 bít
=========================
Byte cao Byte thấp
AX AH AL
BX BH BL
CX CH CL
DX DH DL
==========================
Ví dụ :
AX = 0x1234
AH = 0x12
AL = 0x34
Mỗi thanh ghi còn có những công dụng riêng của nó :
a. Thanh ghi AX : (Auxliary Register)
Công dụng riêng dùng trong các phép toán số học, lưu kết
quả của các phép toán *, chia, ...
b. Thanh ghi BX : (Base Regiser)
Dùng trong phép định địa chỉ cơ sở của bộ nhớ, nó đóng vai
trò như 1 thanh ghi địa chỉ offset của bộ nhớ
c. Thanh ghi CX : (Count Regiser)
Dùng để chứa số vòng lặp trong chương trình, nó đóng vai
tròn như một biến đếm cho việc lặp vòng. Ngoài ra, thanh ghi
CL còn được dùng trong các phép dịch chuyển với số lần dịch
chuyển là nội dung của thanh ghi CL.
d. Thanh ghi DX : (Data Regiser)
Dùng để lưu trữ kết quả của phép toán * hoặc /, định địa chỉ
cổng trong các lệnh xuất nhập cổng.
II. Nhóm thanh ghi đoạn : (Segiment regiset)
Gồm 4 thanh ghi : CS, DS, ES, SS
a. Thanh ghi CS : (Code Segment)
Dùng để chứa địa chỉ Segment của đoạn mã của đoạn mã
chương trình.
b. Thanh ghi DS : (Data Segment)
Chứa địa chỉ Segment của đoạn dữ liệu
c. Thanh ghi ES : (Extra Segment)
Chứa địa chỉ Segment của đoạn dữ liệu bổ sung. Như vậy nếu
ta có hai đoạn dữ liệu thì một sẽ do thanh ghi DS và hai sẽ do
thanh ghi ES quản lý
d. Thanh ghi SS (Stack Segment)
Dùng lưu địa chỉ Segment của đoạn Stack
Bốn thanh ghi này có thể truy xuất trên bốn đoạn khác nhau.
Như vậy một chương trình làm việc cùng một lúc tối đa là bốn
đoạn
III. Nhóm thanh ghi con trỏ và chỉ mục :
a. Thanh ghi SI : (Source Index)
Dùng để trỏ đến ô nhớ trong đoạn dữ liệu định bởi thanh ghi
DS, trong xử lí chuỗi thanh ghi SI dùng để trỏ đến địa chỉ bắt
đầu của chuỗi nguồn
b. Thanh ghi DI : (Distination Index)
Dùng để trỏ đến ô nhớ có địa chỉ Segment định bởi thanh ghi
ES, trong xử lí chuỗi nó dùng để trỏ đến địa chỉ của chuỗi đích
c. Thanh ghi SP : (Stack pointer)
Dùng để trỏ đến phần tử ở trên đỉnh của Stack
d. Thanh ghi BP : (Base pointer)
Dùng trong phép định địa chỉ cơ sở, trong việc truy xuất
phần tử trên Stack. Nó được dùng trong các phép gọi chương
trình con
e. Thanh ghi IP : (Instruction Pointer)
Chứa đến địa chỉ ô nhớ được định bởi thanh ghi CS để chỉ
đến mã lệnh của chương trình. Khi thực thi một lệnh CPU sẽ tự
động thay đổi nội dung của thanh ghi IP để trỏ đến lệnh kế tiếp
của chương trình, thanh ghi này không bị tác động trực tiếp bởi
các lệnh. Vì vậy, nó thường không có mặt trong những lệnh của
hợp ngữ.
Những cặp thanh ghi thường đi chung :
DS : SI
ES : DI
SS : SP
SS : BP
CS : IP
IV. Thanh ghi cờ :
Mục đích của việc sử dụng cờ là việc chỉ ra trạng thái của CPU.
Để làm được điều đó bộ vi xử lí đã dành riêng ra một thanh ghi
gọi là thanh ghi cờ. Những bit trên thanh ghi này được gọi là các
cờ . Có hai loại cờ : Cờ trạng thái, cờ điều khiển
Cờ trạng thái phản ánh kết quả của phép toán
Cờ điều khiển dùng để cho phép hay không cho phép một thao tác
nào đó
Chúng ta chỉ quan tâm đến nhóm cờ trạng thái gồm 6 cờ là :
CF, AF, SF, OF, PF, ZF.
a. Cờ CF : (Carry Flag) " Cờ nhớ "
Cờ CF được bật lên một nếu kết quả của phép toán có mượn
hay có nhớ đối với bít cao
b. Cờ AF : (Awiliary Flag) " Cờ nhớ phụ "
Bật lên một khi có mượn hay có nhớ ở bít 3
c. Cờ SF : (Sign Flag) " Cờ dấu "
Cờ SF được bật lên một nếu như kết quả của một phép tính có
bít cao nhất bằng một (số âm)
d. Cờ OF : (Over Flag) " Cờ tràn "
Được bật lên một nếu như kết quả của phép toán có dấu bị sai
Ví dụ :
01010000 = AL (dương)
+ 01110000 = BL (dương)
11000000
e. Cờ PF : (Parity Flag) " Cờ chẵn le "
Cờ PF được bật lên một nếu như kết quả của một phép toán có
tổng 8 bít thấp là một số chẵn
f. Cờ ZF : (Zero Flag)
ZF = 1 nếu như kết quả của phép toán bằng không
Ví dụ :
AX = FFFFh
+
BX = FFFFh
1FFFEh
Bạn đang đọc truyện trên: Truyen2U.Pro