Tải bản đầy đủ - 0 (trang)
Trong các lệnh thao tác với dữ liệu kiểu chuỗi thì cặp ES: DI luôn ứng với địa chỉ của phần tử thuộc chuỗi đích còn cặp DS: SI ứng với địa chỉ của phần tử thuộc chuỗi nguồn.

Trong các lệnh thao tác với dữ liệu kiểu chuỗi thì cặp ES: DI luôn ứng với địa chỉ của phần tử thuộc chuỗi đích còn cặp DS: SI ứng với địa chỉ của phần tử thuộc chuỗi nguồn.

Tải bản đầy đủ - 0trang

Hình vẽ: sơ đồ thanh ghi cờ của 8088.

° Cờ trạng thái: Biểu diễn trạng thái phép toán vừa thực hiện.





CF (Carry Flag): Cờ nhớ (cờ tràn).

CF = 1 (CY – Carry) khi kết quả phép tốn vượt (tràn) khn khổ biểu

diễn (có nhớ (mượn) lên trên (từ) MSB), CF = 0 (NC – No Carry) trong

trường hợp ngược lại. Cờ này thường được sử dụng khi thực hiện các phép

cộng, trừ các số byte.

Ví dụ:

1011 0001

+



0110 1001

10001 1010



 AF (Auxilary Flag): Cờ nhớ phụ (tràn phụ - cờ bổ trợ).

Cờ này có ý nghĩa khi ta làm việc với số BCD, AF = 1 (AC – Auxilary

Carry) khi có nhớ hoặc mượn từ một số BCD thấp (4 bit thấp) sang một số

BCD cao (4 bit cao) và AF =0 (NA – No Auxilary carry) trong trường hợp

ngược lại.

 SF (Sign Flag): Cờ dấu. Trong bộ vi sử lý 8088 các số âm được biểu diễn

dưới dạng số bù 2, nên phải dùng cờ SF để chỉ thị dấu của kết quả.

SF = 1 (NG – NiGative), khi kết quả phép toán là một số âm, SF = 0 (PL –

Plus) trong trường hợp ngược lại.

 ZF (Zero Flag): Cờ rỗng.

ZF = 1 (ZR – Zero) khi kết quả phép toán = 0, ZF = 0 (NZ-Non Zero) trong

trường hợp ngược lại.

 OF (Overflow Flag): Cờ tràn



.



OF = 1 (OV – Overflow) khi kết quả là số bù 2 vượt khn khổ biểu diễn

(tràn số học hay nói cách khác: khi cộng 2 số cùng dấu mà kết quả là một số

trái dấu thì OF = 1), OF = 0 (NV –Non Overflow) trong trường hợp ngược

lại (cờ này làm việc với số có dấu).



 Cờ điều khiển

[9]



Cờ trạng thái phụ thuộc điều kiện kết quả phép tốn, còn với cờ điều khiển

ta có thể thiết lập nhờ lệnh.

 IF (Interrupt Flag): Cờ ngắt.

IF = 1 (EI- Enable Interrupt) CPU cho phép ngắt, IF = 0 (DI=Disable

Interrupt) CPU không cho phép ngắt(cấm) các loại ngắt che được(Maskable)



 TF (Trap Flag): Cờ bẫy.

TF = 1 CPU làm việc trong chế độ chạy từng lệnh, thường dùng để gỡ rối

chương trình (debug). Sau khi thực hiện song chuỗi lệnh, bộ vi xử lý sẽ phát

ra 1 lệnh ngắt (INT) để có kiểm tra chương trình.

 DF (Direction Flag): Cờ hướng.

Điều khiển hướng xử lý đối với thao tác chuỗi. DF = 1 (DN – Down) thì các

lệnh vận chuyển dữ liệu hay xử lý chuỗi sẽ thao tác lùi từ phải sang trái(địa

chỉ cao đến địa chỉ thấp). DF = 0 (UP) trong trường hợp ngược lại(thao tác

các địa chỉ từu địa chỉ thấp đến địa chỉ cao).



Cờ này thường được lặp bởi chương trình của người sử dụng khi có các lệnh thao

tác chuỗi.

Tiến (thuận – theo chiều tăng địa chỉ)

Lùi (ngược – theo chiều giảm địa chỉ)

1.4 Thanh ghi đoạn:

Thơng thường, bộ nhớ của chương trình máy tính chia làm các đoạn phục vụ

các chức năng khác nhau như đoạn chứa các câu lệnh, chứa dữ liệu. Trong thực tế,

bộ vi xử lý 8088 cung cấp các thanh ghi 16 bit liên quan đến địa chỉ đầu của các

đoạn nói trên và chúng được gọi là các thanh ghi đoạn củ thể là:

 CS (Code Segment): Thanh ghi đoạn mã, là thanh ghi địa chỉ đoạn mã

lệnh, chứa địa chỉ cơ sở (địa chỉ đoạn) của chương trình đang thực

hiện.

 DS (Data Segment): Thanh ghi đoạn dữ liệu, là thanh ghi địa chỉ đoạn

dữ liệu, chứa địa chỉ đoạn của vùng dữ liệu mà chương trình đang thực

hiện sử dụng. Vùng này thường chứa các biến của chương trình.

 SS (Stack Segment): Thanh ghi đoạn ngăn xếp, là thanh ghi địa chỉ

đoạn bộ nhớ ngăn xếp (stack) của chương trình đang chạy.

[10]



 ES (Extra Segment): Thanh ghi đoạn dữ liệu phụ, là thanh ghi địa chỉ

đoạn dữ liệu bổ sung mà chương trình đang thực hiện sử dụng. Vùng

này cũng thường chứa các biến của chương trình.

Các thanh ghi đoạn 16 bit này chỉ ra địa chỉ đầu của các đoạn trong bộ nhớ, dung

lượng lớn nhất của mỗi đoạn nhớ này là 64 Kbyte và tại một thời điểm nhất đinh bộ vi

xử lý chỉ làm việc với bốn đoạn nhớ 64 bit này. Để xác định chính xác vị trí 1 ơ nhớ

của chương trình các thanh ghi đoạn sẽ phối hợp với các thanh ghi đặc biệt khác còn

gọi là các thanh ghi lệch hay phân đoạn (offset register).

8088 có 20 bit địa chỉ, trong khi đó các thanh ghi quản lý bộ nhớ là 16 bit. Để

xác định một ngăn nhớ có địa chỉ 20 bit, dùng 2 thanh ghi 16 bit để xác định địa

chỉ.

Địa chỉ luôn nằm trong 1 thanh ghi gọi là địa chỉ đoạn.

Địa chỉ lệch (offset) trong 1 thanh ghi khác (Ax, Bx, Cx,…)

Địa chỉ logic:DS:SI

DS:DI

DS:XX

Địa vật lý (phải là số 20 bit) được xác định như sau:

Địa vật lý=địa chỉ đoạn*16 + địa chỉ lệch

Ví dụ: DS = 4000h, SI = 3F4Dh

Địa chỉ logic của ngăn nhớ: 4000:3F4D

Địa chỉ vật lý của ngăn nhớ:

DS * 16 + SI = 4000 * 16 +3F4D = 43F4Dh

Tại một thời điểm CPU quản lý được 4 bộ nhớ (DS, SS, ES, CS), nó có thể

đồng thời truy cập 4 đoạn đó.

Bộ nhớ được chia thành nhiều đoạn. Mỗi đoạn có kích thước tối đa là

64KB. Vậy ta có 16 đoạn tách rời và địa chỉ lệch thay đổi từ 0000H đến FFFFh.

Nếu địa chỉ đoạn thay đổi từ 0000H đến FFFFh thì có 64 đoạn. khi này các

đoạn bao chùm lên nhau, 2 đoạn kề nhau sẽ cách nhau 16 byte (paragraph).

Khi khởi động máy (hoặc Reset) CS được nạp giá trị F000h, IP được nạp

giá trị FFF0h, địa chỉ này thuộc đoạn cuối, nơi đặt ROM khởi động.

Địa chỉ vật lý = F000h*16 + FFF0h =F0000h + FFF0h =FFFF0h.

[11]



IV : Sơ đồ chân, chức năng của các chân tín hiệu. Nguyên lý hoạt động của cpu

8088.

1.1 :Sơ đồ chân



SƠ ĐỒ CHÂN CPU 8088 CỦA INTEL



[12]



SƠ ĐỒ CHÂN NGUỒN CPU 8088



S6 =0 liên tục, S5 phản ánh

IF. S3,S4 cùng phối hợp để

chia ra việc truy nhập các

thanh ghi đoạn.



S3

0

1

0

1



S4

0

0

1

1



Truy vấn đến các đoạn

Đoạn dữ liệu phụ (ES:)

Đoạn ngăn xếp (SS:)

Đoạn mã hoặc không đoạn nào

Đoạn dữ liệu



Bảng các bit trạng thái và việc truy nhập đến các thanh ghi đoạn.

(Hình vẽ: Đóng vỏ DIP 40 chân của 8088)

1.2 Các chân tín hiệu:



AD7 – AD0 [I/O]: Các chân dồn kênh cho tín hiệu phần thấp của bus địa

chỉ và dữ liệu. Khi xung ALE = 0 => báo cho mạch ngoài biết trên đường đó (các

[13]



chân) có tín hiệu dữ liệu (ALE: Address Latch Enable). Khi xung ALE = 1 => báo

cho mạch ngồi biết trên đường đó (các chân) có tín hiệu địa chỉ. Các chân này ở

trạng thái trở kháng cao khi 8088 nhận treo (Hold).



A15-A8[O]: Là các bit phần cao của bus địa chỉ. Các chân này ở trạng

thái trở kháng cao khi 8088 chấp nhận treo.



A16/S3, S17/S4, A18/S5, A19/S6 [O]: Là các chân dồn kênh cho địa chỉ

phần cao của tín hiệu trạng thái. (A: Address, S: Status). KhiALE = 0: Tại các

chân này là tín hiệu trạng thái: S6-S3. Khi ALE = 1: Tại các chân này là tín hiệu

địa chỉ. Các chân này ở trạng thái trở kháng cao khi 8088 chấp nhận treo.



RD [O]: Tín hiệu điều khiển đọc (“Xung cho phép đọc”. Khi RD = 0 thì

bus dữ liệu sẵn sàng nhận dữ liệu từ bộ nhớ hoặc thiết bị ngoại vi. Chân RD ở

trạng thái trở kháng cao khi 8088 chấp nhận treo.



READY [I]: Tín hiệu báo cho CPU biết tình trạng sẵn sàng của thiết bị

ngoại vi hoặc của bộ nhớ. Khi READY = 1 => CPU thực hiện ghi/đọc mà không

cần xen thêm các chu kì đợi. Ngược lại khi thiết bị ngoại vi hay bộ nhớ có tốc độ

chậm => chúng có thể đưa ra tín hiệu READY = 0 để báo cho CPU chờ. Khi này

CPU tự kéo dài thời gian thực hiện ghi/đọc bằng các xen thêm các chu kì đợi.



INTR [I]: Đây là chân tiếp nhận tín hiệu yêu cầu ngắt che được. Khi có

yêu cầu ngắt tác động đến chân này mà cờ cho phép ngắt IF = 1 thì CPU kết thúc

lệnh đang thi hành dở (kết thúc chu kì lệnh), sau đó nó đi vào chu kì chấp nhận

ngắt và đưa ra tín hiệu INTA = 0 tại chân INTA (24).



TEST [I]: Tín hiệu ở chân này được kiểm tra bằng lệnh WAIT. Khi CPU

thực hiện lệnh WAIT mà khi đó TEST = 1 thì CPU sẽ chờ cho đến khi TEST = 0

thì mới thực hiện lệnh tiếp theo.



NMI [I]: Tín hiệu u cầu ngắt khơng che được. Tín hiệu này khơng bị

khống chế bởi cờ IF và nó sẽ được CPU nhận biết tại đường của xung yêu cầu

ngắt. Nhận được yêu cầu này CPU kết thúc lệnh đang làm dở, sau đó chuyển sang

thực hiện chương trình con phục vụ ngắt INT2 (ISR: Interrupt Service Routie).



RESET [I]: Tín hiệu Reset tại 8088 (Trong chừng mực nào đó có thể coi

tín hiệu này là tín hiệu u cầu ngắt khơng che được). Khi tín hiệu RESET = 1 và

kéo dài ít nhất 4 chu kì của đồng hồ (4 xung clock) thì 8088 bị buộc phải khởi

động lại, nó xóa các thanh ghi: DS, ES,SS, IP và FR về 0 và bắt đầu thực hiện

chương trình tại địa chỉ CS:IP =FFFF:0000 (như khi khởi động, IF <= 0 để cấm

các ngắt, TF <= 0 để 8088 không bị đặt trong chế độ chạy từng lệnh => chạy suốt).



CLK [I]: Tín hiệu xung đồng hồ (xung nhịp). Xung nhịp có độ rỗng 77%

và cung cấp nhịp làm việc cho CPU (và các mạch khác của hệ thống).

[14]







Vcc [I]: Chân nguồn. Nguồn cung cấp cho CPU là +5V±10%, 340 mA







GND [O]: Chân nguồn nối với 0v của nguồn ni.





MN/MX [I]: Chân điều khiển hoạt động của CPU theo chế độ Min/Max

(8088 có thể làm việc ở 2 chết độ khác nhau nên có 1 số chân tín hiệu phụ thuộc

và chế độ làm việc đó).

1.3 Chế độ MIN (Chân MN/MX cần được nối thẳng vào +5V mà không qua điện

trở).

Khi 8088 ở chế độ MIN tất cả các tín hiệu điều khiển liên quan đến các thiết

bị ngoại vi truyền thống và bộ nhớ giống như trong hệ 8085, đều có sẵn trong

8088 cho nên việc phối ghép với các thiết bị ngoại vi và bộ nhớ sẽ rất dễ dàng. Vì

vậy có thể tận dụng được các phối ghép ngoại vi có sẵn => giảm giá thành hệ

thống.

• IO/M [O]: Tín hiệu này phân biệt tại một thời điểm cụ thể nào đó phần

tử nào trong các thiết bị vào/ra (I/O) hoặc bộ nhớ (M: Memory) được

chọn để trao đổi dữ liệu với CPU. Trên Address bus lúc đó sẽ có các địa

chỉ tương ứng thiết bị. Chân này ở trạng thái trở kháng cao khi CPU

chấp nhận treo.

• WR [O]: Xung cho phép (giống như RD). Khi CPU đưa ra tín hiệu WR

=0 thì dữ liệu đã ổn định và chúng sẽ được ghi vào bộ nhớ hoặc thiết bị

vào/ra tại thời điểm chuyển mức WR = 1 . Chân WR sẽ ở trạng thái trở

kháng cao khi 8088 chấp nhận treo.

• INTA [O]: Tín hiệu điều khiển báo cho mạch bên ngồi biết CPU đã

chấp nhận yêu cầu ngắt (INTR). Lúc này CPU đưa ra tín hiệu INTA = 0

để báo cho thiết bọ ngoại vi biết nó đang chờ mạch ngồi đưa lên Data

bus số liệu ngắt (kiểu ngắt).

• ALE [O]: Xung cho phép chốt địa chỉ (Address Latch Enable). Khi ALE

=1 có nghĩa trên bus dồn kênh A/D là địa chỉ của thiết bị ngoại vi hay bộ

nhớ. ALE không bao giờ bị thả nổi (trạng thái trở kháng cao), khi CPU

chấp nhận treo thì ALE =0.

• DT/R [O]: Tín hiệu điều khiển các đệm bus 2 chiều của Data bus để

chọn chiều vận chuyển dữ liệu trên bus D. Chân này ở trạng thái trở

kháng cao khi 8088 chấp nhận treo.

• DEN [O]: Tín hiệu báo cho bên ngồi biết khi này trên bus dồn kênh

A/D có dữ liệu ổn định. Chân này ở trạng thái trở kháng cao khi 8088

chấp nhận treo.

[15]



• HOLD [O]: Tín hiệu u cầu treo CPU để mạch ngoài thực hiện trao đổi

dữ liệu với bộ nhớ bằng cách truy cập trực tiếp bộ nhớ (DMA- Direct

Memory Access). Khi HOLD =1, 8088 sẽ tự tách khỏi hệ thống bằng

cách treo bus A, D, C của nó (các bus ở trạng thái trở kháng cao) để bộ

điều khiển DMA là DMAC (DMA Controler) có thể lấy được quyền

điều khiển hệ thống để thực hiện công việc trao đổi dự liệu

• HLDA [O]: Tín hiệu báo cho bên ngoài biết yêu cầu treo CPU đã được

CPU chấp nhận và CPU đã treo các bus A, D và một số tín hiệu điều

khiển trên bus C.

• SS0 [O]: Đây là tín hiêu trạng thái. Tín hiệu này giống như S0 trong chế

độ Max và dùng kết hợp với IO/M, DT/R để giải mã các hoạt động của

bus.

IO/M DT/R SS0 Chu kì điều khiển của bus

0

0

0

Đọc mã lệnh

0

0

1

Đọc bộ nhớ

0

1

0

Ghi bộ nhớ

0

1

1

Bus rỗi (nghỉ)

1

0

0

Chấp nhận yêu cầu ngắt

1

0

1

Đọc thiết bị ngoại vi

1

1

0

Ghi thiết bị ngoại vi

1

1

1

Dừng (Halt)

Bảng quan hệ một số tín hiệu điều khiển

1.4 Chế độ MAX ( chân MN/MX cần được nối thẳng vào 0V)

Khi 8088 làm việc ở chế độ Max, một số tín hiệu điều khiển cần được tạo ra

trên cơ sở các tín hiệu trạng thái nhở dùng thêm ở bên ngoài 1 mạch điều khiển

bus 8288. Chế độ Max được sử dụng trong hệ thống có mặt bộ đồng xử lý tốn

học 8087.

Bộ vi xử lý 8088 có hai chế độ hoạt động là chế độ MIN và chế độ MAX

nên một số chân sẽ có các chức năng khác nhau đối với từng chế độ

hoạt động khác nhau của bộ vi xử lý .

MN/MX nối với +5V - chế độ min ,nối với đất -chế độ max

• S0, S1 và S2 [O]: Là các tín hiệu trạng thái dùng trong chế độ Max để

ghép nối với mạch điều khiển bus 8288. Các tín hiệu này được 8288

dung để tạo ra các tín hiệu điều khiển trong các chu kì hoạt động của

bus các tín hiệu điều khiển đó có như trong bảng sau:

S0



S1



S2



Chu kì điều khiển của bus

[16]



Tín hiệu



0

0

0

0

1

1

1

1



0

0

1

1

0

0

1

1



0

Chấp nhận u cầu ngắt

INTA

1

Đọc thiết bị ngoại vi

IORC

0

Ghi thiết bị ngoại vi

IOWC, AIOWC

1

Dừng (Halt)

Không

0

Đọc mã lệnh

MRDC

1

Đọc bộ nhớ

MRDC

0

Ghi bộ nhớ

MWTC, AMWC

1

Bus rỗi (nghỉ)

Khơng

• RQ/GT0 và RQ/GT1 [O]: Là các tín hiệu u cầu dùng bus của các bộ

vi xử lý khác trong hệ thống hoặc thông báo chấp nhận treo của CPU

để cho phép các bộ vi xử lý khác trong hệ thống dùng bus. RQ/GT0 có

các mức ưu tiên cao hơn RQ/GT1.

• LOCK [O]: Tín hiệu do CPU đưa ra để cấm các bộ vi xử lý khác trong

hệ thống dùng bus trong khi nó đang thi hành lệnh nào đó đặt sau tiếp

đầu LOCK.

• QS0 và QS1 [O]: Tín hiệu thông báo trạng thái khác nhau của đệm

lệnh (hàng đợi lệnh). Trong các hệ vi xử lý có mặt hệ đồng xử lý tốn

học 8087 thì các tín hiệu này dùng để đồng bộ q trình hoạt động của

nó với 8088.



QS0

0

0

1

1



QS1

0

1

0

1



Trạng thái đệm lệnh

Không hoạt động

Đọc byte mã lệnh đầu tiên từ đệm lệnh

Đệm lệnh rỗng

Đọc byte tiếp theo thì đệm lệnh



[17]



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Trong các lệnh thao tác với dữ liệu kiểu chuỗi thì cặp ES: DI luôn ứng với địa chỉ của phần tử thuộc chuỗi đích còn cặp DS: SI ứng với địa chỉ của phần tử thuộc chuỗi nguồn.

Tải bản đầy đủ ngay(0 tr)

×