1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Kỹ thuật vi xử lý - Chương 2 pptx

17 915 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 425,6 KB

Nội dung

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.. Chế độ địa ch

Trang 1

Chương 2 Bộ vi xử lý 8088 của Intel

1 Giới thiệu hoạt động của bộ vi xử lý 8088

a Giới thiệu chung

Bộ vi xử lý 8088 thuộc họ vi xử lý của Intel

Điển hình: 8085 là bộ vi xử lý 8 bit

8086 là bộ vi xử lý 16 bit hoàn chỉnh

8088 là bộ vi xử lý 16 bit trong/ 8 bit ngoài

 Các đặc tính kỹ thuật chủ yếu:

- Số thanh ghi: 14 thanhg ghi 16 bit

- Bus địa chỉ: 20 bit

- Bus dữ liệu: 16 (8086) và 8 (8088)

- Tập lệnh: 115 (là số lệnh được công bố trong nhiều tài liệu)

- Tốc độ chuẩn: 4.77 MHz

- Số chân của bộ vi xử lý: 40

Bộ vi xử lý 8086 của Intel được phát triển từ năm 1978 vào đưa vào thị trường từ năm 1980 Đây là bộ vi xử lý 16 bit bán hoàn chỉnh, các thanh ghi bên trong là 16 bit

và nó xử lý 16 bit dữ liệu cùng một lúc, 8086 liên hệ với kênh số liệu bên ngoài bằng bus dữ liệu 16 bit và bus địa chỉ là 20 bit

Bộ vi xử lý 8088 ra đời sau 8086, nó có cấu trúc bên trong và tập lệnh hoàn toàn giống của 8086, chỉ khác 8086 ở kênh truyền dữ liệu với bên ngoài 8088 sử dụng kênh dữ liệu 8 bit nên việc truyền dữ liệu giữa các thanh ghi trong nó với bộ nhớ chậm hơn so với 8086 Đây là một bước lùi về kỹ thuật nhưng đem lại nhiều lợi ích về kinh tế Tại thời điểm lịch sử đó, bus DataMaster 8 bit đang được sử dụng rộng rãi trên thị trường, nhiều loại card mở rộng và các chip hỗ trợ có sẵn trên thị trường là loại 8 bit nên giá thấp hơn loại 16 bit tương ứng Việc sử dụng bus dữ liệu 8 bit giúp cho người sử dụng khi nâng cấp máy có thể tận dụng được các card 8 bit trong các máy cũ cũng như chỉ phải mua mới với giá thấp Đồng thời cũng giúp cho các nhà sản xuất các máy tương thích với IBM PC có thêm nhiều cơ hội lựa chọn sản phẩm của các hãng khác nhau Chiến lược phát triển có tính kế thừa như vậy đã góp phần làm cho khách hàng của IBM ngày một gia tăng

 Chọn bộ vi xử lý 8088 để nghiên cứu vì:

- Tập lệnh chung cho các bộ vi xử lý nói trên

- Tính phức tạp vừa phải, phù hợp với những người mới tìm hiểu

b Cấu trúc và hoạt động của bộ VXL 8088

Sự hoạt động của bộ vi xử lý 8088/8086 thực sự là việc thực hiện lặp đi lặp lại 3 thao tác chính là lấy lệnh (fetch), giải mã lệnh (decode) và thực hiện (execute) Sơ đồ khối của bộ vi xử lý 8088/8086 như hình vẽ với 2 đơn vị chính:

- EU (Execution Unit): Đơn vị (khối) thực hiện lệnh

- BIU (Bus Interface Unit): Đơn vị giao tiếp bus (khối tương thích bus) để điều khiển bus hiệu quả hơn

 EU

Đơn vị EU của 8088 và 8086 giống nhau, bao gồm ALU, thanh ghi cờ, các thanh ghi đệm và các thanh ghi đa năng Các bus dữ liệu bên trong của EU đều là 16 bit EU không nối trực tiếp với bên ngoài, nó nhận lệnh từ hàng đợi lệnh bên trong

Trang 2

AX: Accumulator BX: Base

CX: Count DX: Data

Stack Pointer Base Pointer Source Index Destination Index

Instruction Pointer Status flags

Code Segment Data Segment Stack Segment Extra Segment

General Registers

Segment Registers

BUI Nếu là lệnh cần truy nhập bộ nhớ hoặc cổng vào/ra (I/O port - thiết bị ngoại vi) thì EU yêu cầu BIU lấy hoặc gửi dữ liệu Tất cả các địa chỉ mà EU thao tác đều là 16 bit, khi gửi sang BIU thì BIU sẽ thực hiện tính toán để tạo địa chỉ vật lý 20 bit và phát

ra các chân địa chỉ của chip

SP

BP

SI

DI

IP FLAGS

CS

DS

SS

ES Hình vẽ: Bộ vi xử lý 8088 và tập thanh ghi

các thanh ghi tạm

thanh ghi cờ

Logic

điều khiển BUS

AX

BX

CX

DX

SP

BP

SI

DI

Khối

điều khiển của

Đệm lệnh (hàng đợi lệnh) (6 byte cho 8086)

BUS ngoài

Bus địa chỉ (20 các thanh

ghi

các thanh ghi

đoạn

các thanh

ghi

con trỏ

Bus dữ liệu ALU(16bit)

Bus dữ liệu (8 bit) Bus trong

8 bit dữ liệu

20 bit địa chỉ

CS

DS

SS

ES

IP

Trang 3

Các thanh ghi trong

Có 8 thanh ghi, là thành phần nhớ có tốc độ truy nhập rất cao Bao gồm các thanh ghi đa năng Ax, Bx, Cx, Dx Mỗi thanh ghi 16 bit có thể được phân chia thành 2 thanh ghi 8 bit làm việc độc lập nhau

+ AX (Accumulator, Acc): Thanh chứa, chứa tạm thời dữ liệu (toán hạng, kết quả phép toán như nhân, chia và được coi là Acc)

AX có thể được phân chia thành AH : Phần cao

AL : Phần thấp

+ BX (Base): Thanh ghi cơ sở, thường được dùng để chứa địa chỉ cơ sở cần truy nhập trong lệnh XLAT

BX có thể được phân chia thành BH : Phần cao

BL : Phần thấp + CX (Count): Bộ đếm, thường được dùng để đếm số lần lặp của công việc (số lần lặp trong các vòng lặp)

CX có thể được phân chia thành CH : Phần cao

CL : Phần thấp

CX thường được dùng để chứa số lần lặp trong các lệnh LOOP, còn CL thường chứa số lần dịch hoặc quay trong các lệnh dịch quay thanh ghi

+ DX (Data): Thanh ghi đữ liệu, sử dụng để chứa toán hạng, kết quả DX cùng AX dùng để chứa toán hạng hoặc kết quả của các phép nhân, chia số 16 bit DX còn chứa địa chỉ cổng trong các lệnh vào ra trực tiếp (IN, OUT)

DX có thể được phân chia thành DH : Phần cao

DL : Phần thấp

• Các thanh ghi con trỏ, chỉ số

Các thanh ghi SP, BP là các thanh ghi con trỏ không tách rời

+ SP (Stack Pointer): Thanh ghi con trỏ ngăn xếp, trỏ vào đỉnh hiện thời của ngăn xếp nằm trong đoạn ngăn xếp SS (Nó luôn kết hợp với thanh ghi SS) Ta có địa chỉ logic SS: SP Sau mỗi thao tác cất một word vào stack (thao tác Push) thì

SP tự động giảm 2 đơn vị, còn sau thao tác lấy một word ra khỏi stack (thao tác Pop), SP được tự động tăng 2 đơn vị

+ BP (Base stack Pointer): Con trỏ cơ sở, luôn trỏ vào một dữ liệu cụ thể nằm trong đoạn ngăn xếp SS Ta có địa chỉ logic SS: BP

+ SI (Source Index): Thanh ghi chỉ số nguồn (hay nguồn), chỉ vào dữ liệu nằm trong đoạn DS Ta có địa chỉ logic DS: SI

+ DI (Destination Index): Thanh ghi chỉ số đích, chỉ dữ liệu trong đoạn DS Ta có

địa chỉ logic DS: DI

Ta có các cặp SP, BP đi với SS và SI, DI đi với DS

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

• Khối ALU

Làm nhiệm vụ thực hiện các lệnh số học và logic

+ Số học: +, -, *, /, so sánh, đảo dấu

+ Logic:

 Phủ định (NOT): NOT 0 = 1, NOT 1 = 0

Tổng quát: NOT A , là phép đảo từng bit của A (8, 16 bit)

 Và (AND)

A AND B , thực hiện AND từng cặp bit một của A và B (8, 16 bit)

Trang 4

Ví dụ:

A =1011 0100

B =1101 0011

A AND B =1001 0000

 Hoặc (OR)

A OR B, thực hiện OR từng cặp bit của A và B (8, 16 bit)

Ví dụ:

A =1011 0100

B =1101 0011

A OR B =1111 0111

 Cộng modul (XOR – eXclusive OR)

a ⊕ b = a.b + a.b

Ví dụ:

A =1011 0100

B =1101 0011

A XOR B =1001 0000

• Thanh ghi cờ:

Đây là thanh ghi 16 bit, mỗi bit được sử dụng để thể hiện một trạng thái của bộ

vi xử lý tại một thời điểm nhất định trong quá trình thực hiện chương trình (dãy các câu lệnh), nhưng chỉ dùng 9 bit đối với bộ vi xử lý 8088/8086 Mỗi bit đó được gọi là một cờ (flag) Giá trị của mỗi cờ được biểu diễn bằng các ký hiệu gợi nhớ như cách biểu diễn của chương trình Debug của DOS

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

X X x x O D I T S Z x A x P x C

Các cờ của bộ vi xử lý 8085 (x: Không được định nghĩa (don't care), với 8 bit thấp là các cờ của bộ vi xử lý 8085)

Hình vẽ: Sơ đồ thanh ghi cờ của 8088/86

o 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 toán vượt (tràn) khuôn 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ố nhiều byte

Ví dụ:

1011 0001 + 0110 1001

1 0001 1010

 PF (Parity Flag): Cờ chẵn lẻ

PF = 1 (PE - Parity Even) khi số bit 1 trong kết quả phép toán (hay các phép vận chuyển dữ liệu) là chẵn, PF = 0 (PO - Parity Old) trong trường hợp ngược lại

 AF (Carry 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 - Auxiliary 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 Auxiliary carry) trong trường hợp ngược lại

 SF (Sign Flag): Cờ dấu Trong bộ vi xử lý 8088/8086 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ả

Trang 5

SF = 1 (NG - NeGative), 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 khuôn khổ biểu diễn (tràn

số học, hay nói cách khác: khi cộng hai 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)

o Cờ điều khiển

Cờ trạng thái phụ thuộc kết quả phép toá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 Interrup), CPU cho phép ngắt, IF = 0 (DI-Disable Interrup) 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 xong mỗi lệnh, bộ vi xử lý sẽ phát ra một 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 đến 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 phần tử từ đị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ỉ)

 BIU

• Hàng đợi: Là tập thanh ghi

Với 8086 hàng đợi lệnh là 6 byte, 8088 hàng đợi lệnh là 4 byte nên chứa được tối đa là 4 lệnh CPU chứa tập thanh ghi theo kiểu LIFO

Cơ chế:

+ Đọc lệnh (lấy lệnh)

+ Giải mã lệnh

+ Thực hiện

• Thanh ghi IP: Thanh ghi con trỏ lệnh, trỏ vào lệnh tiếp theo

chuẩn bị được thực hiện nằm trong đoạn CS (CS: IP) Sau khi đọc 1 byte, IP tự

động tăng thêm 1 Như vậy thực tế thì cặp CS:IP mới là con trỏ lệnh vì nó chứa địa chỉ đầy đủ của một lệnh trong bộ nhớ

• Thanh ghi đoạn:

+ 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

Hàng đợi lệnh

Trang 6

+ 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

+ 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

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 một thanh ghi gọi là địa chỉ đoạn

Địa chỉ lệch (offset) trong một 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 = 40000 + 3F4D = 43F4Dh

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

đồng thời truy nhậ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à 64 KB Vậy ta có 16 đoạn tách rời và địa chỉ lệch thay đổi từ 0000 H đến FFFFh

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

đoạn bao trùm lên nhau 2 đoạn kề nhau sẽ các 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

c Bộ vi xử lý 8086 và 8088

2 Chế độ địa chỉ của 8088

a Cách mã hoá lệnh của bộ VXL 8088/88

b Chế độ địa chỉ thanh ghi

Dùng thanh ghi như là các toán hạng chứa dữ liệu cần thao tác, tốc độ thực hiện lệnh rất nhanh vì CPU không mất thời gian tìm kiếm dữ liệu

Ví dụ:

MOV AL, BL ; AL:= BL

MOV DS, BX ; DS:= BX

ADD AL, DL ; AL:= AL + DL

c Chế độ địa chỉ tức thì

+ Toán hạng đích là thanh ghi, hoặc ô nhớ

+ Toán hạng nguồn là 1 giá trị cụ thể (hằng số)

Trang 7

Ví dụ:

MOV AL, 0Dh ;AL:=0Dh

Lệnh này thường được dùng để nạp dữ liệu cần thao tác vào thanh ghi nào đó

d Chế độ địa chỉ tực tiếp

- Một toán hạng là địa chỉ offset của ô nhớ chứa giá trị cần thao tác

- Toán hạng kia là thanh ghi (không được là ô nhớ)

Ví dụ:

MOV AL, [04FCh] ; đưa vào thanh ghi AL nội dung ô nhớ có địa

chỉ logic DS:04FCh

e Chế độ địa chỉ gián tiếp qua thanh ghi

- Một toán hạng là thanh ghi chứa địa chỉ offset của ngăn nhớ chứa giá trị cần thao tác

- Toán hạng kia là thanh ghi (không được là ngăn nhớ)

Ví dụ:

MOV [BX], AL ; Đưa nội dung thanh ghi AL vào ngăn nhớ có địa chỉ

offset nằm trong thanh ghi BX

f Chế độ địa chỉ tương đối cơ sở

- Thanh ghi BX, BP và các hằng số là giá trị dịch chuyển để xác định ngăn nhớ trong DS, SS chứa giá trị cần thao tác

Ví dụ:

MOV [BX + N], CL ; Đưa nội dung thanh ghi CL vào ngăn nhớ có

địa chỉ offset BX + N (DS:BX + N) MOV AL, [BP + N] ; Đưa nội ngăn nhớ có địa chỉ offset BP + N

vào thanh ghi AL (SS:BP + N)

g Chế độ địa chỉ tương đối chỉ số

- Thanh ghi DI, SI và các hằng số là giá trị dịch chuyển để xác định ngăn nhớ chứa giá trị trong DS cần thao tác

Ví dụ:

MOV [SI + N], AH ; Đưa nội dung thanh ghi AH vào ngăn nhớ có

địa chỉ offset tại SI + N (DS:SI + N)

MOV CL, [DI + N] ; Đưa nội dung ngăn nhớ có địa chỉ offset tại

DI + N (DS:DI + N) vào thanh ghi CL

h Chế độ địa chỉ tương đối chỉ số cơ sở

- Chế độ địa chỉ này là sự kết hợp cả 2 chế độ địa chỉ trên Dùng cả thanh ghi cơ

sở và thanh ghi chỉ số để tính địa chỉ toán hạng

Ví dụ:

MOV [BX + SI + N], AX ;Đưa nội dung thanh ghi AX vào ngăn

;nhớ có địa chỉ offset tại BX + SI + N (DS:BX + SI + N) MOV CL, [BP + DI + N] ;Đưa nội dung ngăn nhớ có địa chỉ

;offset tại BP + DI + N (DS:BP + DI + N)

;vào thanh ghi CL

Trang 8

3 Mô tả tập lệnh của 8088

Tập lệnh của bộ vi xử lý 8088 nói chung được chia

thành 6 nhóm, với 5 nhóm thao tác dữ liệu và 1 nhóm

đặc biệt (gồm các chỉ thị để điều khiển) Một lệnh thường có cấu trúc như sau:

a Nhóm lệnh chuyển dữ liệu

Nhóm này thực hiện vận chuyển dữ liệu (sao chép - copy) từ nơi này đến nơi khác

+ MOV đích, nguồn (Move a Word or Byte)

Lệnh thực hiện chuyển dữ liệu từ nguồn tới đích (đíchnguồn), dữ liệu có thể là một byte hoặc một word (từ) Các toán hạgn có thể được tìm thấy qua các chế độ địa chỉ khác nhau Lệnh này không tác động đến các cờ

+ LDS đích, nguồn (Load Register and DS with Word from Memory)

Lệnh thực hiện nạp một word từ bộ nhớ vào thanh ghi cho trong lệnh và một word tiếp theo vào thanh ghi DS (đích  nguồn, DS  nguồn+2)

ứng dụng: thường nạp địa chỉ đầu của vùng nhớ chứa chuỗi nguồn vào SI và

DS trước khi dùng đến lệnh thao tác chuỗi Lệnh này không tác động đến các cờ

Ví dụ:

LDS SI, Str ;Lệnh nạp vào SI nội dung 2 ô nhớ Str và Str+1, rồi nạp vào

;DS nội dung 2 ô nhớ Str+2 và Str+3, các ô nhớ nằm trong DS + LEA đích, nguồn (Load Effective Address)

Lệnh thực hiện nạp địa chỉ hiệu dụng vào thanh ghi Toán hạng 'đích' thường là một trong các thanh ghi: BX, CX, DX, BP, SI, DI Toán hạng 'nguồn' là tên biến trong

đoạn DS được chỉ ra trong lệnh hoặc ô nhớ cụ thể

đích  địa chỉ lệch của nguồn (đích  @nguồn)

đích  địa chỉ hiệu dụng của nguồn Lệnh này không tác động đến các cờ

Ví dụ:

LEA DX, Str ;Lệnh nạp địa chỉ offset của Str vào DX LEA CX, [BX] ;Lệnh nạp địa chỉ hiệu dụng (EA-Effective Address)

;EA = BX LEA CX, [BX][DI] ;Lệnh nạp địa chỉ hiệu dụng EA = BX + DI + LES đích, nguồn

Lệnh này giống lệnh LDS nhưng 2 byte tiếp theo được nạp vào thanh ghi ES ứng dụng: thường nạp vào DI và ES địa chỉ đầu của vùng nhớ chứa chuỗi trước khi thực hiện các lệnh thao tác chuỗi Lệnh này không tác động đến các cờ

Ví dụ:

LES DI, Str ;Lệnh nạp địa chỉ offset của Str vào DX

Trang 9

+ IN Acc, Port (Input data from a port)

Đọc dữ liệu từ cổng vào/ra vào thanh ghi Acc (Acc  {Port}) Với {Port} là dữ liệu của cổng có địa chỉ là Port (là địa chỉ 8 bit = 00h FFh)

Acc là AL  đọc 8 bit từ cổng Port, là AX  đọc 16 bit từ cổng Port và Port+1 Thường dùng DX để chứa địa chỉ cổng  có thể có địa chỉ từ 0000h FFFFh

 Viết lệnh: IN Acc, DX

Lệnh này không tác động đến các cờ

Ví dụ:

MOV DX, 07F8h

IN AL, DX ;Đọc 1 byte từ cổng có địa chỉ 07F8h

+ OUT Acc, Port (Output a byte or a word to a port)

Đưa dữ liệu từ thanh ghi Acc đến cổng vào/ra

Acc  Port

Lệnh này thao tác ngược lại với lệnh IN, tính chất hoàn toàn tương tự Lệnh này không tác động đến các cờ

+ STC (Set the Carry fag): Lập cờ nhớ: CF  1

Lệnh này không tác động đến các cờ khác

+ STD (Set the Direcion flag): Lập cờ hướng: DF  1

Lệnh này định hướng thao tác cho các lệnh làm việc với chuỗi theo chiều lùi () Các thanh ghi liên quan: SI, DI sẽ được tự động giảm khi làm việc xong với 1 phần tử của chuỗi Lệnh này không tác động đến các cờ

+ STC (Set the Interrupt fag): Lập cờ cho phép ngắt: IF  1

Lệnh lập IF để cho các yêu cầu ngắt tác động vào chân INTR được CPU nhận biết IF=1, INTR=1  CPU bị ngắt, cất thanh ghi cờ, địa chỉ trở về vào Stack rồi thực hiện chương trình con phục vụ ngắt Lệnh này không tác động đến các cờ khác + CLC (Clear the Carry flag): Xoá cờ nhớ: CF  0

Lệnh này không tác động đến các cờ khác

+ CLD (Clear the Direction flag): Xoá cờ hướng: DF  0

Lệnh định hướng thao tác cho các lệnh làm việc với chuỗi theo chiều tiến () Các thanh ghi liên quan: SI, DI sẽ tự động tăng 1 khi làm việc xong với một phần tử dữ liệu của chuỗi Lệnh này không tác động đến các cờ khác

+ CLI (Clear the Interrupt flag): Xoá cờ cho phép ngắt: IF  0

Khi thực hiện lệnh này, các ngắt che được sẽ bị che Lệnh này không tác động

đến các cờ khác

+ CMC (Complement the Carry flag): Đảo cờ nhớ: CF  CF

Lệnh chỉ cập nhật CF, không tác động đến các cờ khác

+ PUSH nguồn

Push Word on the Stack: Cất 1 từ vào ngăn xếp

SP  SP-2

{SP}  nguồn

Toán hạng nguồn tìm được theo các chế độ địa chỉ khác nhau Lệnh này thường đi cặp với lệnh POP Lệnh này không tác động đến các cờ

+ POP đích

Pop Word from top of Stack: Lấy 1 word từ đỉnh ngăn xếp vào thanh ghi

đích  {SP}

SP  SP+2

Toán hạng đích tìm được theo các chế độ địa chỉ (không được là thanh ghi đoạn mã: CS) Dữ liệu để tại ngăn xếp không thay đổi SS không thay đổi Lệnh này không tác động đến các cờ

Trang 10

+ POPF

Pop Word from top of Stack to Flag register: Lấy 1 word từ đỉnh ngăn xếp vào thanh ghi cờ

RF  {SP}

SP  SP+2

Dữ liệu để tại ngăn xếp không thay đổi SS không thay đổi Lệnh này không tác

động đến các cờ

b Nhóm lệnh số học

+ ADC đích, nguồn

Add with carry: cộng 2 toán hạng có nhớ

đích  đích+nguồn+CF

Các toán hạng đích, nguồn tìm được theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu) Không được là 2 ô nhớ và không được là thanh ghi đoạn

Điều này áp dụng hầu hết cho tất cả các lệnh số học có cú pháp tương tự

Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF

+ ADD đích, nguồn ;Add: cộng 2 toán hạng có nhớ

đích  đích+nguồn

Các toán hạng đích, nguồn tìm được theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu) Không được là 2 ô nhớ và không được là thanh ghi đoạn (Tính chất giống với lệnh ADC)

Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF

+ SBB đích, nguồn

Substract with Borrow: Trừ có mượn

đích  đích-nguồn-CF

Các toán hạng đích, nguồn tìm được theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu) Không được là 2 ô nhớ và không được là thanh ghi đoạn (Tính chất giống với lệnh ADC)

Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF

AF, PF chỉ liên quan đến 8 bit thấp

+ SUB đích, nguồn

Substract: Trừ 2 toán hạng

đích  đích-nguồn

Các toán hạng đích, nguồn tìm được theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu) Không được là 2 ô nhớ và không được là thanh ghi đoạn (Tính chất giống với lệnh ADC)

Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF

AF, PF chỉ liên quan đến 8 bit thấp

Chú ý: Các ví dụ cho các lệnh ADC, ADD, SBB, SUB có thể tham khảo trong tài liệu

Kỹ thuật Vi xử lý - Văn Thế Minh

+ MUL nguồn (Multiply Unsigned Byte or Word)

Nhân số không dấu Toán hạng 'nguồn' là số nhân, tìm được theo các chế độ

địa chỉ Tuỳ theo độ dài (kích thước) của toán hạng 'nguồn' mà ta có các trường hợp sau:

o 'nguồn' là 8 bit (1 byte): AX  AL*nguồn, số bị nhân phải là số 8 bit để trong thanh ghi AL

o 'nguồn' là 16 bit (2 byte): DXAX  AX*nguồn, số bị nhân phải là số 16 bit

để trong thanh ghi AX

Ngày đăng: 22/07/2014, 05:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w