108
1 Bộ vi xử lý 8088 đơn giản hơn. 3 Nhiều điểm giống với họ vi xử lý 80x86=> nắm bắt được hệ vi xử lý của hãng khác 2 Có tính kế thừa của các sản phẩm trong họ vi xử lý 80x86. Lý do nghiên cứu bộ vi xử lý 8088

Bộ vi xử lý 8088 đơn giản hơn

  • Upload
    oriana

  • View
    76

  • Download
    2

Embed Size (px)

DESCRIPTION

Lý do nghiên cứu bộ vi xử lý 8088. 1. 2. 3. Bộ vi xử lý 8088 đơn giản hơn. C ó tính kế thừa của các sản phẩm trong họ vi xử lý 80x86. Nhiều điểm giống với họ vi xử lý 80x86=> nắm bắt được hệ vi xử lý của hãng khác. Chương II: BỘ VI XỬ LÝ INTEL 8088. - PowerPoint PPT Presentation

Citation preview

Page 1: Bộ vi xử lý 8088 đơn giản hơn

1

Bộ vi xử lý 8088 đơn giản hơn.

3

Nhiều điểm giống với họ vi xử lý 80x86=> nắm bắt được hệ vi xử lý của hãng khác

2

Có tính kế thừa của các sản phẩm trong họ vi xử lý 80x86.

Lý do nghiên cứu bộ vi xử lý 8088

Page 2: Bộ vi xử lý 8088 đơn giản hơn

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088

2. Nguyên lý hoạt động

II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi

2. Cách mã hóa lệnh của bộ vi xử lý 8088

3. Các chế độ địa chỉ dữ liệu

III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088

Chương II: BỘ VI XỬ LÝ INTEL 8088

Chương II: Bộ vi xử lý Intel 8088

Page 3: Bộ vi xử lý 8088 đơn giản hơn

I – Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lý

Chương II: Bộ vi xử lý Intel 8088

Các lệnh nằm chờ EU xử lý

Page 4: Bộ vi xử lý 8088 đơn giản hơn

I – Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lý

Chương II: Bộ vi xử lý Intel 8088

Khối đơn vị giao tiếp bus (Bus Interface Unit, BIU): Thanh ghi đoạn và thanh ghi con trỏ lệnh IP Khối logic điều khiển bus, bộ cộng Bus dữ liệu 8 bit và bus địa chỉ 20 bit

Khối thực hiện lệnh (Execution Unit, EU).Thanh ghi đa năng, các thanh ghi con trỏ và chỉ sốKhối tính toán số học và logic ALUKhối điều khiển EUBus dữ liệu 16 bit của ALU, bus tín hiệu điều khiển.

Việc chia CPU thành hai phần làm việc đồng thời có liên hệ với nhau qua hàng đợi lệnh làm tăng tốc độ đáng kể của CPU.

Page 5: Bộ vi xử lý 8088 đơn giản hơn

2. Nguyên lý hoạt động

Chương II: Bộ vi xử lý Intel 8088

Đơn vị thực hiện EU• EU có nhiệm vụ cung cấp địa chỉ cho BIU để khối này đọc lệnh và dữ

liệu • Giải mã lệnh để tạo ra các tín hiệu điều khiển nhằm thực hiện lệnh đã

được giải mã.• Khối tính toán số học và logic ALU dùng để thực hiện các thao tác khác

nhau với các toán hạng của lệnh

Đơn vị giao tiếp BUS• BIU có nhiệm vụ đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ liệu

từ/vào cổng hoặc bộ nhớ.

• Bên trong BIU còn có bộ nhớ đệm lệnh (còn gọi là hàng đợi lệnh) với

dung lượng 4 byte (8088), 6 byte (8086) dùng để chứa các lệnh đã đọc

được nằm sẵn chờ EU xử lý.

Page 6: Bộ vi xử lý 8088 đơn giản hơn

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088

2. Nguyên lý hoạt động

II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi

2. Cách mã hóa lệnh của bộ vi xử lý 8088

3. Các chế độ địa chỉ dữ liệu

III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088

Chương II: BỘ VI XỬ LÝ INTEL 8088

Chương II: Bộ vi xử lý Intel 8088

Page 7: Bộ vi xử lý 8088 đơn giản hơn

1. Các thanh ghi8088 có 14 thanh ghi 16 bit

Page 8: Bộ vi xử lý 8088 đơn giản hơn

1.1 Các thanh ghi đa năng

Chương II: Bộ vi xử lý Intel 8088

Lưu trữ tạm thời dữ liệu để truy cập nhanh hơn tránh khỏi phải truy cập bộ nhớAX (Accumulator): Các thanh ghi này được sử dụng trong các tính. Kết quả

8 bit được chứa trong AL 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.

8 Bit thấp8 Bit cao

•8088/8086 đến 80286 : 16 bits•80386 trởlên: 32 bits EAX,EBX, ECX, EDX

Page 9: Bộ vi xử lý 8088 đơn giản hơn

1.2 Các thanh ghi đoạn

Chương II: Bộ vi xử lý Intel 8088

Lưu trữ địa chỉ đoạn của 1 ô nhớ cần truy cập 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ứa 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.

4 thanh ghi đoạn:

CS,DS,SS,ES

Page 10: Bộ vi xử lý 8088 đơn giản hơn

Các thanh ghi đoạn

Chương II: Bộ vi xử lý Intel 8088

Phương pháp quản lý bộ nhớBộ nhớ là tập hợp các ô nhớ (byte) Mỗi ô nhớ được nhận dạng bằng một địa chỉ vật lý duy nhất 20 bit 8086/8088 có bus địa chỉ 20 bit nên có thể cho phép truy xuất 220= 1048576 địa chỉ bộ nhớ khác nhau.

Trong 1 MB = 1048576 byte bộ nhớ cần chia thành nhiều đoạn nhớ khác nhau:

Page 11: Bộ vi xử lý 8088 đơn giản hơn

Các thanh ghi phân đoạn

Các thanh ghi này có 16 bit trong khi địa chỉ bộ nhớ là 20 bit nên để xác dịnh vị trí bộ nhớ, ta sẽ thêm 4 bit 0 vào các bit thấp của thanh ghi đoạn.

Giả sử như thanh ghi CS chứa giá trị 1111h thì nó sẽ chỉ tới địa chỉ bắt đầu là 11110h.

VD: Thanh ghi DS có giá trị là 1000h thì địa chỉ bắt đầu của đoạn là 10000h. Địa chỉ kết thúc tìm được bằng cách cộng địa chỉ bắt đầu

với với giá trị FFFFh (64K) → địa chỉ kết thúc là 10000h + FFFFh = 1FFFFh.

Như vậy đoạn dữ liệu có địa chỉ từ 10000h -> 1FFFFh.

Page 12: Bộ vi xử lý 8088 đơn giản hơn

VDGiả sử các thanh ghi đoạn có các giá trị CS = 2800h, DS =

E000h, SS = 2900h và ES = 1000h. Ta có vị trí các đoạn trong bảng bộ nhớ như sau:

Page 13: Bộ vi xử lý 8088 đơn giản hơn

Địa chỉ vật lý và địa chỉ logic

Địa chỉ lệch (offset): xuất hiện trong đoạn nhớ 64KB (từ 0000h đến

ffffh)

Ví dụ: địa chỉ offset 0010h của đoạn mã CS= 2800h sẽ có địa chỉ thật

sự là 28000h + 0010h = 28010h. Địa chỉ này gọi là địa chỉ vật lý.

Địa chỉ vật lý = Nội dung thanh ghi đoạn x 10h + Nội dung thanh ghi

lệch = Địa chỉ đoạn + Địa chỉ lệch

Địa chỉ logic = Thanh ghi đoạn:Thanh ghi lệch (địa chỉ lệch)

Page 14: Bộ vi xử lý 8088 đơn giản hơn

Mối liên hệ ĐCVL & ĐCLG

Chương II: Bộ vi xử lý Intel 8088

Page 15: Bộ vi xử lý 8088 đơn giản hơn

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.

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

Mối liên hệ ĐCVL & ĐCLG

Chương II: Bộ vi xử lý Intel 8088

Page 16: Bộ vi xử lý 8088 đơn giản hơn

Vd:1 Cho một ô nhớ có địa chỉ vật lý là 1256Ah hãy cho biết địa chỉ dạng segment:offset với các đoạn 1256h và 1240h?

Giải:

Gọi X là offset trong segment 1256h và Y là offset trong segment 1240h chúng ta có:

1256Ah=12560h+X

1256Ah=Y+12400h

Do đó: X=1256Ah-12560h=Ah

Y= 1256Ah-12400h=16Ah

Như vậy: 1256Ah =1256:000A=1240:016A

VD

Chương II: Bộ vi xử lý Intel 8088

Page 17: Bộ vi xử lý 8088 đơn giản hơn

Vd2: Một ô nhớ có địa chỉ vật lý 80FD2h, ở trong đoạn nào thì nó có Offset bằng BFD2h

Giải:

Địa chỉ vật lý=segment * 10h + offset

VD

Chương II: Bộ vi xử lý Intel 8088

Page 18: Bộ vi xử lý 8088 đơn giản hơn

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 chủ yếu được sử dụng để truy nhập 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

1.3. Thanh ghi con trỏ và chỉ số

Chương II: Bộ vi xử lý Intel 8088

Page 19: Bộ vi xử lý 8088 đơn giản hơn

Thanh ghi con trỏ và chỉ số

Chương II: Bộ vi xử lý Intel 8088

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 phần 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.

Page 20: Bộ vi xử lý 8088 đơn giản hơn

Thanh ghi con trỏ và chỉ số

Chương II: Bộ vi xử lý Intel 8088

Bảng tóm tắt sự kết hợp ngầm định giữa thanh ghi đoạn và thanh ghi lệch:

Page 21: Bộ vi xử lý 8088 đơn giản hơn

1.5 Thanh ghi cờ (Flag Register)

Chương II: Bộ vi xử lý Intel 8088

Mục đích của thanh ghi cờ là chỉ ra trạng thái của bộ vi xử lý. 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 cờ điều khiển

Các trạng thái

Page 22: Bộ vi xử lý 8088 đơn giản hơn

Thanh ghi cờ (Flag Register)

Chương II: Bộ vi xử lý Intel 8088

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ớ từ bit trái nhất trong phép cộng hoặc có vay vào bit msb trong phép trừ

•P (Parity): cờ chẵn lẻ, P = 1 khi tổng số bit 1 trong byte thấp là chẵn, P = 0 khi tổng số bit 1 trong byte thấp 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ả vuợt ra ngoài giới hạn

biểu diễn dành cho nó

Page 23: Bộ vi xử lý 8088 đơn giản hơn

Thanh ghi cờ (Flag Register)

Chương II: Bộ vi xử lý Intel 8088

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.

Page 24: Bộ vi xử lý 8088 đơn giản hơn

Hiện tượng tràn xảy ra khi nào?

Page 25: Bộ vi xử lý 8088 đơn giản hơn

Hiện tượng tràn xảy ra khi nào?

Xét số có dấu 1 word [-32768,32767]Co dau 1 byte [-128,127]

*. Xét số không dấu 1 word [0,65535]

1 byte [0,255]Þ Vượt ra khỏi giới hạn biểu diễn => tràn

Page 26: Bộ vi xử lý 8088 đơn giản hơn

VD1: Tràn không dấu nhưng không tràn có dấu

AX: FFFFH, BX: 0001H ADD AX,BX

Kết quả: 1111 1111 1111 1111

0000 0000 0000 0001

10000 0000 0000 0000

- Nếu xét số không dấu: KQ: 65536 > 65535 => AX: 0h=> sai

- Nếu xét số có dấu: FFFFH=-1; 0001H=+1 => AX:0h =>đúng

Page 27: Bộ vi xử lý 8088 đơn giản hơn

VD2: tràn có dấu nhưng không tràn không dấu

AX, BX: 7FFFH Add AX,BX

0111 1111 1111 1111

0111 1111 1111 1111

1111 1111 1111 1110- Xét số có dấu: AX,BX: 32767 => KQ: 65534 >32767 => Vượt khỏi

phạm vi, kết quả nhận được dạng có dấu -2 => tràn có dấu- Xét số không dấu: AX,BX: 32767 => KQ: 65534 <65535 =>không

tràn

Þ Làm sao CPU chỉ ra được hiện tượng tràn?Þ Làm sao CPU biết được có hiện tượng tràn xảy ra?

Page 28: Bộ vi xử lý 8088 đơn giản hơn

Giải phápCPU chỉ ra hiện tượng tràn:

CPU lập cờ OF=1 báo hiện tượng tràn có dấuCF=1 => hiện tượng tràn không dấu

Làm thế nào CPU biết được có hiện tượng tràn xảy ra: xét +, -- Hiện tượng tràn không dấu:

+ Phép + => Tràn xảy ra khi có nhớ từ bit msb nghĩa là KQ vượt ra khỏi phạm vi biểu diễn nó

+ Phép -: Hiện tượng tràn xảy ra khi vó vay vào bit msb (KQ <0)

- Hiện tượng tràn có dấu: + cộng các số cùng dấu: A+B=-C; (-A)+(-B)=C+ trừ các số khác dấu: A-(-B)=A+B; -A-(+B)=-A+-B+ cộng 2 số khác

Page 29: Bộ vi xử lý 8088 đơn giản hơn

Hiện tượng tràn

Hiện tượng tràn không dấu: Phép cộng: khi có nhớ từ bit trái nhất msb. Kết quả vượt ra

khỏi phạm vi biểu diễn nó.Phép trừ: Khi có sự vay vào bit msb. Kết quả đúng < 0VD: Thực hiện phép cộng AL,BL cùng chứa 80h

8080

100- SF=0 vì msb=0- PF=1 vì tất cả các bit của tổng bằng 0- ZF=1 vì kết quả thu được bằng 0- CF=1 vì có nhớ từ bit msb trong phép cộng- OF=1 vì kết quả vượt ra khỏi phạm vi biểu diễn nó

Chương II: Bộ vi xử lý Intel 8088

Page 30: Bộ vi xử lý 8088 đơn giản hơn

Hiện tượng tràn

Hiện tượng tràn có dấu: Phép cộng: khi có nhớ từ bit trái nhất msb. Kết quả vượt ra

khỏi phạm vi biểu diễn nó.Phép trừ: Khi có sự vay vào bit msb. Kết quả đúng < 0VD: Thực hiện phép cộng AL,BL cùng chứa 80h

8080

100- SF=0 vì msb=0- PF=1 vì tất cả các bit của tổng bằng 0- ZF=1 vì kết quả thu được bằng 0- CF=1 vì có nhớ từ bit msb trong phép cộng- OF=1 vì kết quả vượt ra khỏi phạm vi biểu diễn nó

Chương II: Bộ vi xử lý Intel 8088

Page 31: Bộ vi xử lý 8088 đơn giản hơn

Bài tập kết thúc phần thanh ghi

Chương II: Bộ vi xử lý Intel 8088

B1: Một ô nhớ có địa chỉ vật lý là 4A37Bh hãy tính a. Địa chỉ Offset của nó nếu địa chỉ đoạn là 40FFh b. Địa chỉ đoạn của nó nếu địa chỉ Offset là 123Bh

B2: Xác định địa chỉ vật lý của ô nhớ có địa chỉ logic là: 0A51h: CD90h

Page 32: Bộ vi xử lý 8088 đơn giản hơn

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088

2. Nguyên lý hoạt động

II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi

2. Cách mã hóa lệnh của bộ vi xử lý 8088

3. Các chế độ địa chỉ dữ liệu

III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088

Chương II: BỘ VI XỬ LÝ INTEL 8088

Chương II: Bộ vi xử lý Intel 8088

Page 33: Bộ vi xử lý 8088 đơn giản hơn

2. Cách mã hóa lệnh của bộ vi xử lý 8088

Chương II: Bộ vi xử lý Intel 8088

Các lệnh của bộ vi xử lý phải được mã hoá dưới dạng các số 0 và 1

(còn gọi là mã máy). Để dịch các mã lệnh này sang mã máy thì bộ vi xử lý

sử dụng các chương trình dịch hợp ngữ như MASM, TASM.Vì lệnh cho bộ vi xử lý được cho dưới dạng mã máy nên sau khi

nhận lệnh bộ vi xử lý phải thực hiện giải mã lệnh rồi sau đó mới thực hiện

lệnh.Một lệnh vi xử lý có thể dài một vài byte tuỳ theo bộ vi xử lý.

•Đối với bộ vi xử lý 8088 một lệnh có độ dài từ 1 - 6 byte. •Ví dụ, lệnh MOV dạng mã máy cần ít nhất là 2 byte, trong đó 6 bit

của byte đầu dùng để chứa mã lệnh.Mã lệnh Địa chỉ của các toán hạng

Page 34: Bộ vi xử lý 8088 đơn giản hơn

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088

2. Nguyên lý hoạt động

II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi

2. Cách mã hóa lệnh của bộ vi xử lý 8088

3. Các chế độ địa chỉ dữ liệu

III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088

Chương II: BỘ VI XỬ LÝ INTEL 8088

Chương II: Bộ vi xử lý Intel 8088

Page 35: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ (Addressing mode) là cách để CPU tìm thấy toán hạng cho các lệnh của nó.

Để minh họa cho các chế độ địa chỉ ta sử dụng lệnh chuyển dữ liệu MOV, nó có dạng như sau:

Lệnh MOV sao chép dữ liệu ở nguồn vào đích, dữ liệu nguồn không thay đổi còn dữ liệu đích bị thay đổi.

Page 36: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thì b Chế độ địa chỉ trực tiếp c

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

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

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

Page 37: Bộ vi xử lý 8088 đơn giản hơn

CPU sử dụng các thanh ghi bên trong làm các toán hạng chứa dữ liệu cần thao tác.

Các thanh ghi sử dụng trong lệnh phải cùng kích cỡ

Chế độ địa chỉ thanh ghi (register mode)a.

Chương II: Bộ vi xử lý Intel 8088

Page 38: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thờib Chế độ địa chỉ trực tiếp c

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

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

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

Page 39: Bộ vi xử lý 8088 đơn giản hơn

Quy định viết hằng số:- Số hex: thêm chữ H vào cuối, riêng các số bắt đầu bằng chữ thì phải

thêm cả số 0 đằng trước. Ví dụ: 1234H, 0A231H

- Số thập phân: viết bình thường. Ví dụ: 123, 22

- Ký tự và chuỗi ký tự: phải đặt trong hai dấu phẩy trên. Ví dụ: ‘A’, ‘AB’

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ tức thời (immediate mode) b

Toán hạng đích Toán hạng nguồn

là một hằng số

là một thanh ghi hay ô nhớ

Page 40: Bộ vi xử lý 8088 đơn giản hơn

Chế độ địa chỉ tức thời (immediate mode)

VD:

Chương II: Bộ vi xử lý Intel 8088

b

Page 41: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thời b Chế độ địa chỉ trực tiếp c

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

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

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

Page 42: Bộ vi xử lý 8088 đơn giản hơn

Một toán hạng là địa chỉ lệch của ô nhớ (dưới dạng tên biến hoặc số hex) trong đoạn dữ liệu DS

Toán hạng còn lại là thanh ghi không được là ô nhớ.

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ trực tiếp (direct mode) c

Page 43: Bộ vi xử lý 8088 đơn giản hơn

VD:

MOV AX,0 ; Toán hạng đích AX ở chế độ địa chỉ thanh ghi

; Toán hạng nguồn 0 ở chế độ địa chỉ tức thời

MOV SO,AX ;Toán hạng đích SO ở chế độ địa chỉ trực tiếp

; Toán hạng AX ở chế độ địa chỉ thanh ghi

Chương II: Bộ vi xử lý Intel 8088

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

Page 44: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thì b Chế độ địa chỉ trực tiếp c

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

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

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

Page 45: Bộ vi xử lý 8088 đơn giản hơn

Một toán hạng là một trong các thanh ghi BP, BX, DI, SI để chứa địa chỉ lệch của ô nhớ

Toán hạng còn lại là thanh ghi (không được là ô nhớ). Các thanh ghi đóng vai trò như là con trỏ trỏ đến ô nhớ Các thanh ghi đặt trong ngoặc vuông.

• BX, SI, DI chứa địa chỉ lệch của ô nhớ trong đoạn dữ liệu DS• BP chứa địa chỉ lệch của ô nhớ trong đoạn ngăn xếp SS.

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

Page 46: Bộ vi xử lý 8088 đơn giản hơn

VD:

SI chứa địa chỉ Offset 0100h và nội dung tại địa chỉ đó là 1234h.

MOV AX,[SI]; SI có địa chỉ ô nhớ là DS:0100h

; Chuyển nội dung 1234h vào AX

MOV AX,SI ; Chuyển 0100h vào AX

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

Page 47: Bộ vi xử lý 8088 đơn giản hơn

VD: Giả sử BX chứa 1000h, offset 1000h chứa 1BACH

Giả sử SI chứa 2000h, offset 2000h chứa 20FEH

Giả sử DI chứa 3000h, offset 3000h chứa 031DH- Địa chỉ offset nằm trong đoạn dữ liệu DS- Hãy cho biết lệnh nào sau đây là hợp lệ, nếu hợp lệ hãy đưa ra địa

chỉ offset của toán hạng nguồn và kết quả của toán hạng đích?

A. MOV BX,[BX]

B. MOV CX,[SI]

C. MOV BX,[AX]

D. ADD [SI],[DI]

E. INC [DI]

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

Page 48: Bộ vi xử lý 8088 đơn giản hơn

Lời giải:

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

Page 49: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thì b Chế độ địa chỉ trực tiếp c

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

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

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

Page 50: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

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

Một toán hạng là một ô nhớ (bao gồm thanh ghi cơ sở BX hoặc BP kết hợp với giá trị dịch chuyển)

Toán hạng còn lại chỉ có thể là thanh ghi không được là ô nhớ.BX xác định địa chỉ trong đoạn dữ liệu DSBP xác định địa chỉ trong đoạn ngăn xếp SS.

Giá trị dịch chuyển có thể bằng số hoặc bằng tên. • Các dạng biểu thức của toán hạng

[Thanh ghi + độ dịch][Độ dịch + thanh ghi][thanh ghi] + độ dịchĐộ dịch [thanh ghi]Độ dịch+ [thanh ghi]

Page 51: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

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

Page 52: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

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

VD: w là một mảng word, BX chứa 4

MOV AX,W[BX]; Độ dịch là địa chỉ offset của biến w. Chuyển phần tử có địa chỉ w+4 vào AX Lệnh trên tương đương:

MOV AX,[W+BX]

MOV AX, [BX + W]

MOV AX, W+[BX]

MOV AX, [BX] + W

Page 53: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thì b Chế độ địa chỉ trực tiếp c

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

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

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

Page 54: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

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

Tương tự như chế độ địa chỉ tương đối cơ sở, chỉ khác là trong chế độ địa chỉ này sử dụng các thanh ghi chỉ số SI hoặc DI.

Ô nhớ chỉ ra thanh ghi chỉ số cộng với giá trị dịch chuyển nằm trong đoạn dữ liệu.

Page 55: Bộ vi xử lý 8088 đơn giản hơn

3. Các chế độ địa chỉ dữ liệu

Chương II: Bộ vi xử lý Intel 8088

Chế độ địa chỉ thanh ghia.

Chế độ địa chỉ tức thì b Chế độ địa chỉ trực tiếp c

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

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

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

Page 56: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

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

Cơ sởg

Kết hợp hai chế độ địa chỉ tương đối chỉ số và tương đối cơ sở ta có chế độ địa chỉ tương đối chỉ số cơ sở. Chế độ địa chỉ này dùng cả thanh ghi chỉ số và thanh ghi cơ sở để xác định địa chỉ.

Page 57: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

VD

VD: A được khai báo như sau

A dw 0123h,0456h,0789h,0ABCh Trong đoạn được đánh địa chỉ DS. BX chứa 2, offset 0002h chứa 1084h SI chứa 4, offset 0004h chứa 2BACh DI chứa 1

Lệnh nào hợp lệ, Chỉ ra offset của toán tử nguồn, con số độ dịch

a. Mov AX,[A+BX] e. MOV BX,[A+3+DI]

b. MOV BX,[BX+2] F. MOV AX,[BX]2

c. MOV CX,A[SI] G. ADD BX,[A+AX]

d. MOV AX,-2[SI]

Page 58: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

LỜI GiẢI

Page 59: Bộ vi xử lý 8088 đơn giản hơn

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088

2. Nguyên lý hoạt động

II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi

2. Cách mã hóa lệnh của bộ vi xử lý 8088

3. Các chế độ địa chỉ dữ liệu

III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088

Chương II: BỘ VI XỬ LÝ INTEL 8088

Chương II: Bộ vi xử lý Intel 8088

Page 60: Bộ vi xử lý 8088 đơn giản hơn

III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088

Chương II: Bộ vi xử lý Intel 8088

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

Nhóm lệnh chuyển địa chỉ

Nhóm lệnh chuyển thanh ghi cờ

Nhóm lệnh chuyển dữ liệu qua cổng

Nhóm lệnh điều khiển chương trình

Lệnh so sánh

Nhóm lệnh lặp

Lệnh gọi chương trình con

Nhóm lệnh tính toán số học

Nhóm lệnh tính toán logic

Nhóm lệnh dịch và quay bit

Nhóm lệnh xử lý chuỗi

1

2

3

4

5

6

7

8

9

10

11

12

Page 61: Bộ vi xử lý 8088 đơn giản hơn

MOV Đích, Nguồn: Sao chép dữ liệu Nguồn vào đích Ví dụ:

Mov AH,10D ;Chuyển giá trị 10 vào AH

Mov AX,BX ; Chuyển giá trị thanh ghi BX vào thanh ghi AX

Mov [DI],CX ; Chuyển giá trị thanh ghi CX vào ô nhớ DS:DI

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

Page 62: Bộ vi xử lý 8088 đơn giản hơn

XCHG Đích, Nguồn: Hoán đổi nội dung của 2 toán hạng đích và nguồn

Ví dụ:XCHG AH,BL ; Hoán đổi nội dung của hai thanh ghi AH và BL

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

Page 63: Bộ vi xử lý 8088 đơn giản hơn

PUSH Nguồn: Cất nội dung của một thanh ghi hoặc một ô nhớ 16 bit vào ngăn xếp

Ví dụ: PUSH AX Lệnh PUSH thực hiện các công việc sau:

+ Giảm SP (con trỏ ngăn xếp) đi 2

+ Nội dung của toán hạng nguồn được lưu vào vị trí nhớ được trỏ bởi (SS:SP). Toán hạng nguồn không bị thay đổi.

PUSHF: Không có toán hạng; cất nội dung của thanh ghi cờ vào ngăn xếp

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

Chương II: Bộ vi xử lý Intel 8088

Page 64: Bộ vi xử lý 8088 đơn giản hơn

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

Chương II: Bộ vi xử lý Intel 8088

• Ban đầu, SP chứa địa chỉ offset của ô nhớ theo sau đoạn ngăn xếp. SP được khởi tạo bằng 100h

• Lệnh PUSH đầu tiên giảm SP đi 2 làm cho con trỏ chỉ đến từ cuối cùng trong đoạn ngăn xếp.

Page 65: Bộ vi xử lý 8088 đơn giản hơn

POP Đích: Lệnh POP được dùng để lấy ra phần tử đỉnh ngăn xếp, trong đó phần tử đích là một thanh ghi 16 bit (trừ IP) hoặc là 1 từ nhớ.Ví dụ: POP BXLệnh POP thực hiện các công việc sau:

+ Nội dung của ô nhớ SS:SP (đỉnh ngăn xếp) được chuyển tới toán tử đích

+ SP tăng lên 2 POPF: Lệnh POPF đưa vào thanh ghi cờ nội dung của đỉnh

ngăn xếp

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

Chương II: Bộ vi xử lý Intel 8088

Page 66: Bộ vi xử lý 8088 đơn giản hơn

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

Page 67: Bộ vi xử lý 8088 đơn giản hơn

Chú ý:

- Các lệnh PUSH, PUSHF, POP, POPF không ảnh hưởng đến cờ

- Các lệnh PUSH và POP chỉ thao tác với các WORD, vậy nên nếu dùng với các byte, các số liệu trực tiếp là không hợp lê.

- Cất một số liệu trực tiếp là được phép đối với các bộ vi xử lý 80186, 80486PUSH DL ; Không hợp lệ

PUSH 2 ; Không hợp lệ

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

Page 68: Bộ vi xử lý 8088 đơn giản hơn

LEA Đích, Nguồn (Load Effective Address)Trong đó:

+ Đích thường là một trong các thanh ghi: BX, CX, DX, BP, SI, DI

+ Nguồn là tên biến trong đoạn DS được chỉ rõ trong lệnh hoặc ô nhớ cụ thể

=> Chuyển địa chỉ lệch của ô nhớ Nguồn vào thanh ghi Đích 16 bit

Ví dụTb1 db “Nhap so can kiem tra: $”

LEA DX, Tb1

Nhóm lệnh chuyển địa chỉ 2

Chương II: Bộ vi xử lý Intel 8088

Page 69: Bộ vi xử lý 8088 đơn giản hơn

LDS Đích, NguồnTrong đó:

+ Đích là một trong các thanh ghi: AX, BX, CX, DX, SP, BP, SI, DI

+ Nguồn là ô nhớ trong đoạn DS được chỉ rõ trong lệnh

=> Chuyển nội dung của ô nhớ Nguồn 32 bit vào cặp thanh ghi 16 bit, 16 bit cao của Nguồn được nạp vào DS, 16 bit thấp được nạp vào thanh ghi Đích 16 bit.

LES Đích, Nguồn

+Giống như LDS nhưng thay DS bằng ES

Nhóm lệnh chuyển địa chỉ 2

Chương II: Bộ vi xử lý Intel 8088

Page 70: Bộ vi xử lý 8088 đơn giản hơn

LAHF: Chuyển phần thấp của thanh ghi cờ vào AH

SAHF: Chuyển nội dung của AH vào 8 bit thấp của thanh ghi cờ

PUSHF: Chuyển phần tử đỉnh ngăn xếp (16 bit) vào thanh ghi cờ

Nhóm lệnh chuyển thanh ghi cờ3

Chương II: Bộ vi xử lý Intel 8088

Page 71: Bộ vi xử lý 8088 đơn giản hơn

IN AL, port Hoặc IN AL,DXÞĐọc 8 bit từ cổng vào AL.

+ Nếu địa chỉ cổng có giá trị từ 0H đến FFH thì có thể viết trực tiếp,

+ Nếu địa chỉ của cổng có giá trị lớn hơn FFH thì phải đặt vào DX

OUT port,AL hoặc OUT DX,AL

=> Đưa 8 bit từ thanh ghi AL ra cổng

Nhóm lệnh chuyển dữ liệu qua cổng4

Chương II: Bộ vi xử lý Intel 8088

Page 72: Bộ vi xử lý 8088 đơn giản hơn

Lệnh nhảy không điều kiện: JMP Nhãn

=> Chuyển nội dung của ô nhớ CS:IP tới vị trí được xác định bởi Nhãn

Lệnh nhảy có điều kiện: J<Điều kiện> Nhãn_gầnÞNếu điều kiện thỏa mãn thì nhảy tới Nhãn_gần.

Các lệnh nhảy có điều kiện bao gồm: JA, JAE, JB, JBE, JNA, JNAE, JNB, JNBE, JG, JGE, ....

Nhóm lệnh điều khiển chương trình5

Chương II: Bộ vi xử lý Intel 8088

Page 73: Bộ vi xử lý 8088 đơn giản hơn

Lệnh chuyển điều khiển theo điều kiện so sánh

Số không dấu Số có dấu So sánh

JA JG >

JAE , JNB JGE , JNL >=

JE , JZ JE , JZ =

JBE , JNA JLE , JNG <=

JB JL <

JNE , JNZ JNE , JNZ <>

Page 74: Bộ vi xử lý 8088 đơn giản hơn

Lệnh chuyển điều khiển theo cờ hiệu

Lệnh làm thay đổi cờ hiệu trực tiếp

Lệnh Điều kiện Lệnh Điều kiện

JC CF = 1 STC CF = 1

JNC CF = 0 CLC CF = 0

JZ ZF = 1 STD DF = 1

JNZ ZF = 0 CLD DF = 0

JO OF = 1 STI IF = 1

JNO OF = 0 CLI IF = 0

JP PF = 1  

JNP PF = 0  

JS SF = 0  

JNS SF = 0  

JNS SF = 0  

JCXZ CX = 0  

Page 75: Bộ vi xử lý 8088 đơn giản hơn

JA/ JNBE

Jump if Above: Nhảy nếu lớn hơn

Jump if Not Below or Equal: Nhảy nếu không thấp hơn hoặc bằng).

vd: JA NHAN / JNBE NHAN JAE/JNB/JNC

Jump if Above or Equal: Nhảy nếu cao hơn hoặc bằng

Jump if Not Below: Nhảy nếu không thấp hơn

Jump if No Carry: Nhảy nếu không có nhớ

vd: JAE NHAN

JNB NHAN

JNC NHAN

Nhóm lệnh điều khiển chương trình5

Chương II: Bộ vi xử lý Intel 8088

Page 76: Bộ vi xử lý 8088 đơn giản hơn

JB/JC/JNAE• Jump if Below:Nhảy nếu thấp hơn• Jump if Carry: Nhảy nếu có nhớ• Jump if Not Above or Equal:Nhảy nếu không cao hơn hoặc

bằng)

VD: JB NHAN / JC NHAN / JNAE NHAN

JBE/JNA• Jump if Below or Equal: Nhảy nếu thấp hơn hoặc bằng• Jump if Not Above: Nhảy nếu không cao hơn

JBE NHAN

JNA NHAN

Nhóm lệnh điều khiển chương trình5

Chương II: Bộ vi xử lý Intel 8088

Page 77: Bộ vi xử lý 8088 đơn giản hơn

CMP Left, RightLeft có thể là thanh ghi hoặc ô nhớ (Không được

phép là hằng số)Right có thể là thanh ghi hoặc ô nhớ hoặc hằng số. Þ So sánh Left và Right bằng cách lấy toán tử Left trừ đi

toán tử Right, kết quả không được lưu lại nhưng các cờ bị ảnh hưởng.

Þ Các toán hạng của lệnh Cmp không thể cùng là các ô nhớ.

Nhóm lệnhso sánh6

Chương II: Bộ vi xử lý Intel 8088

Page 78: Bộ vi xử lý 8088 đơn giản hơn

LOOP NHANLệnh này dùng để lặp lại đoạn chương trình (gồm các lệnh nằm

trong khoảng từ NHAN đến hết lệnh Loop NHAN) cho đến khi số lần lặp CX=0 (sau mỗi lần thực hiện lệnh Loop NHAN thì đồng thời CX tự động giảm 1)

Lệnh này không tác động đến cờVí dụ:

Xor AL,AL

Mov Cx,12

Lap:

Inc AL

Loop Lap

Nhóm lệnh lặp7

Chương II: Bộ vi xử lý Intel 8088

Page 79: Bộ vi xử lý 8088 đơn giản hơn

LOOPE Hay LOOPZ NHAN: - Lặp cho đến khi CX=0 và ZF=1

- Giảm CX đi 1 và nhảy đến “NHAN” nếu CX khác 0 và cờ ZF= 1

LOOPNE NHAN- Giảm CX đi 1 đơn vị và nhảy đến NHAN nếu ZF=0

và CX - 0LOOPNZ NHAN Tương tự LOOPNE

Nhóm lệnh lặp7

Chương II: Bộ vi xử lý Intel 8088

Page 80: Bộ vi xử lý 8088 đơn giản hơn

Chương trình con có cấu trúc:Name PROC type

; thân thủ tục

. . .

RET

Name ENDP Gọi CTC: CALL Te

Trong đó: – Name : là tên của thủ tục định nghĩa bởi người sử dụng– Type toán hạng tuỳ chọn có thể là NEAR hay FAR– NEAR: được ngầm định nếu bỏ qua type. NEAR có nghĩa là

dòng lệnh gọi thủ tục ở cùng đoạn với thủ tục đó– FAR: có nghĩa là dòng lệnh gọi ở trong một đoạn khác

Lệnh gọi chương trình con8

Chương II: Bộ vi xử lý Intel 8088

Page 81: Bộ vi xử lý 8088 đơn giản hơn

Trở về từ CTC: RETĐể trở về từ một thủ tục ta dùng lệnh: RET pop_value

• CTC sẽ thực hiện các lệnh của nó và khi gặp RET, nó sẽ lấy địa chỉ cất trên STACK ra và nạp lại thanh ghi IP để thực thi lệnh kế tiếp.

Lệnh gọi chương trình con8

Chương II: Bộ vi xử lý Intel 8088

Page 82: Bộ vi xử lý 8088 đơn giản hơn

Tính toán số học

SUB Đích, Nguồn

DEC Đích

INC Đích

ADC Đích, Nguồn

ADD Đích, Nguồn

ContentsNhóm lệnh tính toán số học9

NEG Đích

SBB Đích, Nguồn

MUL Nguồn_16bit

MUL Nguồn_8bit

DIV Nguồn_8bit

DIV Nguồn_16bit

IDIV Nguồn

Page 83: Bộ vi xử lý 8088 đơn giản hơn

Lệnh cộng không nhớ: ADD Đích, NguồnĐích - Đích + Nguồn

Lệnh ADD được sử dụng để cộng hai thanh ghi cùng độ dàiCộng một thanh ghi và một ô nhớCộng một số vào một thanh ghi hay một ô nhớ (không được

đồng thời là 2 ô nhớ và không được là thanh ghi đoạn)

Chương II: Bộ vi xử lý Intel 8088

Nhóm lệnh tính toán số học9

Page 84: Bộ vi xử lý 8088 đơn giản hơn

Lệnh cộng có nhớ:

ADC Đích, Nguồn (Add With Carry) Đích - Đích + Nguồn + CF Nếu CF=1 thì Đích=Đích + nguồn + 1 Nếu CF=0 thì Đích=Đích + nguồn

Chương II: Bộ vi xử lý Intel 8088

Nhóm lệnh tính toán số học9

Page 85: Bộ vi xử lý 8088 đơn giản hơn

Lệnh trừ không mượn: SUB Đích, Nguồn

Đích - Đích - Nguồn Lệnh trừ có mượn: SBB Đích, Nguồn

Đích - Đích - Nguồn – CF

Lệnh tăng: INC Đích

Đích - Đích + 1 Lệnh giảm: DEC Đích

Đích - Đích - 1

Chương II: Bộ vi xử lý Intel 8088

Nhóm lệnh tính toán số học9

Page 86: Bộ vi xử lý 8088 đơn giản hơn

NEG Đích Đích - -Đích (Mã bù 2)=> Dùng để phủ định nội dung của toán hạng đích

Chương II: Bộ vi xử lý Intel 8088

Trước NEG BX Sau NEG BX

0002 FFFE

Nhóm lệnh tính toán số học9

Page 87: Bộ vi xử lý 8088 đơn giản hơn

Chương II: Bộ vi xử lý Intel 8088

Nhóm lệnh tính toán số học9

- Lệnh nhân không dấu: MUL NguồnMUL Nguồn_8bit

AX - AL x Nguồn_8bitKhi nhân các byte với nhau, 1số được chứa trong toán hạng

nguồn và số còn lại được giả thiết đã chứa trong AL. Toán hạng nguồn có thể là 1 thanh ghi hay 1 byte nhớ nhưng không thể là hằng sốMUL Nguồn_16bit

DX:AX - AX x Nguồn_16bit Số bị nhân phải là số 16 bit để trong AX

- Lệnh nhân có dấu: IMUL NguồnTương tự MUL, số bị nhân phải là số có dấu đặt trong AL hoặc

AX

Page 88: Bộ vi xử lý 8088 đơn giản hơn

VD1: Giả sử AX chứa 1, BX chứa FFFFh

VD2: Giả sử AX và BX cùng chứa FFFFH

Lệnh Tích số dạng thập phân

Tích số dạng hex

MUL BX 65535 0000FFFF

IMUL BX -1 FFFFFFFF

Chương II: Bộ vi xử lý Intel 8088

Lệnh Tích số dạng thập phân Tích số dạng hex

MUL BX 4294836225 FFFE0001

IMUL BX 1 000000001

Nhóm lệnh tính toán số học9

Page 89: Bộ vi xử lý 8088 đơn giản hơn

Lệnh chia không dấu: DIV Nguồn DIV Nguồn_8bit

Lấy AX chia cho Nguồn_8bit Thương để trong AL, số dư để trong AH Nguồn_8bit không thể là hằng số.

DIV Nguồn_16bit Lấy DX:AX chia cho Nguồn_16bit Thương để trong AX Số dư để trong DX

Lệnh chia có dấu: IDIV Nguồn Tương tự DIV Các lệnh hiệu chỉnh khi thực hiện phép toán với mã BCD và

ASCII:DAA, DAS, AAA, AAD, AAM, AAS.

Chương II: Bộ vi xử lý Intel 8088

Nhóm lệnh tính toán số học9

Page 90: Bộ vi xử lý 8088 đơn giản hơn

Sự tràn số trong phép chia:Thương số > toán hạng đích (AL hoặc AX).

Lý do: Số chia nhỏ hơn rất nhiều so với số bị chia.

Khi xảy ra điều này chương trình dừng lại và thông báo: Divide Overflow.

VD: AX chứa 0005h, DX chứa 0000h, BX chứa 0002h

Chương II: Bộ vi xử lý Intel 8088

Nhóm lệnh tính toán số học9

Lệnh thương số dạng thập phân (AX)

Số dư dạng thập phân (DX)

DIV BX 2 1

IDIV BX 2 1

Page 91: Bộ vi xử lý 8088 đơn giản hơn

VD1: DX chứa 0000h, AX chứa 0005h, BX chứa FFFEhAX=5, BX=65534 (DIV)AX=5, BX=-2 (IDIV)

Nhóm lệnh tính toán số học9

Lệnhthương số dạng

thập phân (AX)

Số dư dạng thập phân (DX)

DIV BX 0 5

IDIV BX -2 1

Chương II: Bộ vi xử lý Intel 8088

Page 92: Bộ vi xử lý 8088 đơn giản hơn

Nhóm lệnh tính toán số học9

VD2: DX chứa FFFFh, AX chứa FFFBh, BX chứa 0002h

Lệnh 1: BX=2, DX:AX=-5 (IDIV)Lệnh 2: BX=2, DX:AX= 2147483646 = 7FFFFFFEh quá lớn để chứa trong AX (DIV)

Lệnhthương số dạng

thập phân (AX)

Số dư dạng thập phân (DX)

DIV BX -2 -1

IDIV BX Divide flow

Chương II: Bộ vi xử lý Intel 8088

Page 93: Bộ vi xử lý 8088 đơn giản hơn

Nhóm lệnh tính toán logic10

Chương II: Bộ vi xử lý Intel 8088

AND

OR

Toán tử logic

XOR

NOT

TEST

Page 94: Bộ vi xử lý 8088 đơn giản hơn

AND Đích, Nguồn

Chương II: Bộ vi xử lý Intel 8088

AND

Đích - Đích AND NguồnĐổi mã ASCII của một số thành số thập phân tương ứng

• Khi đọc 1 kí tự từ bàn phím, AL chứa mã ASCII của kí tự đó.

• Ví dụ khi ấn phím “5”, AL chứa 35h thay cho 5. Để nhận được 5 trong thanh ghi AL ta có thể làm như sau:

SUB AL,30h Dùng AND để xoá nửa byte cao của AL

AND AL,0Fh

Page 95: Bộ vi xử lý 8088 đơn giản hơn

AND Đích, Nguồn

Chương II: Bộ vi xử lý Intel 8088

AND

Đổi chữ thường thành chữ hoa• “a” đến “z” :61h đến 7Ah, • “A” dến “Z” : 41h đến 5Ah. • Nếu DL chứa mã ASCII của 1 chữ thường ta có thể đổi ra chữ

hoa bằng cách thực hiện lệnh: SUB DL,20h AND DL,0DFh

Kí tự Mã ASCII Kí tự Mã ASCII

a 0110 0001 A 0100 0001

b 0110 0010 B 0100 0010

c 0110 0011 C 0100 0010

.. .. .. ..

z 0111 1010 Z 0101 1010

Page 96: Bộ vi xử lý 8088 đơn giản hơn

OR, XOR, NOT, TEST

Chương II: Bộ vi xử lý Intel 8088

OR Đích, Nguồn: Đích - Đích OR NguồnXOR Đích, Nguồn: - Đích - Đích XOR Nguồn

- Xóa thanh ghiNOT Đích: - Đích - NOT Đích

- Lấy số bù 1 của toán hạng đích TEST Đích, Nguồn: Đích AND Nguồn

Toán hạng Đích không bị thay đổi. Mục đích của lệnh TEST là thiết lập các cờ Các cờ bị tác động:

SF, ZF, PF phản ánh kết quảAF không xác địnhCF,OF=0

Page 97: Bộ vi xử lý 8088 đơn giản hơn

Nhóm lệnh dịch và quay bit11

Chương II: Bộ vi xử lý Intel 8088

Lệnh quay bitLệnh dịch bit

SHR Đích,CL

SAR Đích,CL

SHL Đích,CL

SAL Đích,CL

ROR Đích,CL

RCR Đích,CL

ROL Đích,CL

RCL Đích,CL

Page 98: Bộ vi xử lý 8088 đơn giản hơn

Lệnh dịch tráiLệnh dịch trái

Add YourText here

- SHL Đích,CL SAL tương tự SHL• Trong đó CL chứa N. • N phép dịch trái đơn được thực hiện.• Giá trị CL vẫn giữ nguyên không thay đổi khi

thực hiện xong lệnh • Sau mỗi lẫn dịch trái thì giá trị 0 được thêm vào

vị trí bên phải nhất của toán hạng đích. Bit MSB được đưa vào CF

Page 99: Bộ vi xử lý 8088 đơn giản hơn

Các cờ bị tác động:+ SF, PF, ZF phản ánh kết quả, PF chỉ có ý nghĩa khi kết quả là 8 bit+ CF chứa bit cuối cùng được dịch ra khỏi toán hạng+ OF = 1 nếu kết quả bị thay đổi dấu trong lần dịch chuyển cuối cùng

Lệnh dịch tráiLệnh dịch trái

Page 100: Bộ vi xử lý 8088 đơn giản hơn

Lệnh dịch tráiLệnh dịch trái

VD1: DH chứa 8Ah, CL chứa 3. Cho biết giá trị DH, CF sau khi lệnh SHL DH,CL được thực hiện

Giá trị nhị phân

Lần 1

Lần 2

Lần 3

Page 101: Bộ vi xử lý 8088 đơn giản hơn

Lệnh dịch phảiLệnh dịch phải

Add YourText here

- SHR Đích,CL SAR tương tự SHL• Trong đó CL chứa N. • N phép dịch phải đơn được thực hiện.• Giá trị CL vẫn giữ nguyên không thay đổi khi

thực hiện xong lệnh • Sau mỗi lẫn dịch phải thì giá trị 0 được thêm

vào vị trí bên phải nhất của toán hạng đích. Bit MSB được đưa vào CF

Page 102: Bộ vi xử lý 8088 đơn giản hơn

Các cờ bị tác động:+ SF, PF, ZF phản ánh kết quả, PF chỉ có ý nghĩa khi kết quả là 8 bit+ CF chứa bit cuối cùng được dịch ra khỏi toán hạng+ OF = 1 nếu kết quả bị thay đổi dấu trong lần dịch chuyển cuối cùng

Lệnh dịch phảiLệnh dịch phải

Page 103: Bộ vi xử lý 8088 đơn giản hơn

Lệnh dịch phảiLệnh dịch phải

VD1: DH chứa 8Ah, CL chứa 3. Cho biết giá trị DH, CF sau khi lệnh SHR DH,CL được thực hiện

Giá trị nhị phân

Lần 1

Lần 2

Lần 3

Page 104: Bộ vi xử lý 8088 đơn giản hơn

- ROL Đích,1 hoặc ROL Đích,CL: • Lệnh ROL (Rotate left) dịch các bit sang bên trái.• Bit msb được dịch vào bit bên phải nhất, đồng thời được

đưa vào cờ CF, bit lsm theo sau bit msb.

Lệnh quay trái ROLLệnh quay trái ROL

Page 105: Bộ vi xử lý 8088 đơn giản hơn

- RCL Đích,1 hoặc RCL Đích,CL: • Lệnh quay trái qua cờ nhớ - Rotate Carry Lef• Dịch các bit của toán hạng đích sang trái. Bit msb được

đặt vào cờ CF, giá trị cũ của CF được đưa vào bit phải nhất của toán hạng đích

Lệnh quay trái có nhớ RCLLệnh quay trái có nhớ RCL

Page 106: Bộ vi xử lý 8088 đơn giản hơn

- ROR Đích,1 hoặc ROR Đích,CL: • Lệnh ROR (Rotate right) dịch các bit sang bên phải.• Bit bên phải nhất được dịch vào và bit msb đồng

thời cũng được đưa vào cờ C.

Lệnh quay phải RORLệnh quay phải ROR

Page 107: Bộ vi xử lý 8088 đơn giản hơn

- RCR Đích,1 hoặc RCR Đích,CL: • Lệnh quay phải qua cờ nhớ - Rotate Carry Lef• Dịch các bit của toán hạng đích sang phải. Bit lsb được

đặt vào cờ CF, giá trị cũ của CF được đưa vào bit trái nhất của toán hạng đích

Lệnh quay trái có nhớ RCRLệnh quay trái có nhớ RCR

Page 108: Bộ vi xử lý 8088 đơn giản hơn

Nhóm lệnh xử lý chuỗiNhóm lệnh xử lý chuỗi

- Lệnh chuyển chuỗi: MOVS, MOVSB,MOVSW- Lệnh so sánh chuỗi: CMPS, CMPSB, CMPSW- Lệnh quét chuỗi: SCAS, SCASB, SCASW- Lệnh nạp chuỗi Lệnh nạp chuỗi: LODS, LODSB, LODSW- Lệnh lưu chuỗi: STOS, STOSB, STOSW