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

Chuong 2- 8088

Embed Size (px)

DESCRIPTION

Chuong 2- 8088

Citation preview

Page 1: Chuong 2- 8088

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: Chuong 2- 8088

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 8088

1. 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: Chuong 2- 8088

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

Page 4: Chuong 2- 8088

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 ALU Khối điều khiển EU Bus 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: Chuong 2- 8088

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

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

Đơn vị giao tiếp BIU Phát các tín hiệu địa chỉ đến bộ nhớ và các cổng vào ra I/O

thông qua A – Bus Đưa ra địa chỉ, đọc mã lệnh, đọc dữ liệu từ bộ nhớ thông

qua D – Bus Ghi dữ liệu vào bộ nhớ thông qua D – Bus Đọc dữ liệu từ các cổng vào I thông qua D-Bus Ghi dữ liệu ra các cổng O thông qua D-Bus 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 dùng để chứa các lệnh đã đọc được nằm sẵn chờ EU xử lý.

Page 6: Chuong 2- 8088

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 7: Chuong 2- 8088

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

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

Đơn vị thực hiện EUEU có nhiệm vụ cung cấp địa chỉ cho

BIU để khối này đọc lệnh và dữ liệu Bản thân nó thì 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.

Page 8: Chuong 2- 8088

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

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

Xử lý lệnh của bộ vi xử lý 8088 Lấy – Giải mã – Thực hiện lệnh

Page 9: Chuong 2- 8088

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

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

Chu kỳ lệnh• Chu kì lệnh: Tổng thời gian tìm lệnh, giải mã lệnh và thực

hiện lệnh.• Chu kì lệnh của các lệnh khác nhau là khác nhau• Chu kì lệnh bằng mốt số nguyên lần chu kì máy

Chu kì máy: bằng nghịch đảo tần số hoạt động (tốc độ đồng hồ) của bộ vi xư lý

Page 10: Chuong 2- 8088

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 8088

1. 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 11: Chuong 2- 8088

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

Page 12: Chuong 2- 8088
Page 13: Chuong 2- 8088

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): thanh ghi chứa, dùng để chứa kết quả của các thao tác: 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.

8 Bit thấp8 Bit cao

4 thanh ghi đa năng: AX, BX,

CX, DX

Page 14: Chuong 2- 8088

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 15: Chuong 2- 8088

Phương pháp quản lý bộ nhớ

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

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 Với 20 bit địa chỉ bộ vi xử lý có thể định địa chỉ cho 1M ô nhớ Trong 1 MB bộ nhớ người ta chia thành 4 đoạn nhớ 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 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.

Page 16: Chuong 2- 8088

Đoạn bộ nhớ

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

Đoạn bộ nhớ (Memory segment): là một khối gồm 64KB ô nhớ liên

tiếp.

Mỗi đoạn được xác định bằng một địa chỉ đoạn (segment number), bắt

đầu bằng địa chỉ 0. Địa chỉ đoạn là một số 16 bit nên địa chỉ đoạn lớn

nhất FFFFh.

Bên trong mỗi đoạn, các ô nhớ được xác định bằng một địa chỉ tương

đối (offset), đó là số byte tính từ đầu đoạn.

Trong Một đoạn 64KB, offset là một số 16 bit. Byte đầu tiên trong một

đoạn có offset 0 và byte cuối cùng trong đoạn có offset FFFFh

Page 17: Chuong 2- 8088

Nội dung của các thanh ghi đoạn là xác định địa chỉ bắt đầu của mỗi ô nhớ nằm ở đầu đoạn• Địa chỉ của ô nhớ nằm ở đầu đoạn là 20 bit, các thanh ghi đoạn chỉ có 16 bit => thêm 0H vào bên phải T/G đoạn

• Để nhận được đị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.

Đị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)

Địa chỉ Segment:Offset

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

Page 18: Chuong 2- 8088

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 19: Chuong 2- 8088

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 20: Chuong 2- 8088

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

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

Page 21: Chuong 2- 8088

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

0300H:E345H ….. 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.

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

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

Page 22: Chuong 2- 8088

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. • Thanh ghi IP dùng để truy nhập đến các lệnh và không bị tác động

trực tiếp bởi các lệnh, do đó trong một lệnh thường không có mặt IP như một toán hạng.

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. BP cũng có thể được sử dụng để truy nhập dữ liệu trong các đoạn khác.

• Địa chỉ logic của ô nhớ ngăn xếp do BP trỏ tới là SS:BP

Thanh ghi con trỏ và chỉ số

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

Page 23: Chuong 2- 8088

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 SI 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 24: Chuong 2- 8088

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 25: Chuong 2- 8088

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 26: Chuong 2- 8088

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ớ 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ả vuợt ra ngoài giới hạn

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

Page 27: Chuong 2- 8088

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 28: Chuong 2- 8088

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 29: Chuong 2- 8088

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 8088

1. 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 30: Chuong 2- 8088

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 31: Chuong 2- 8088

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 8088

1. 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 32: Chuong 2- 8088

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 33: Chuong 2- 8088

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 34: Chuong 2- 8088

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ỡ, trừ một số lệnh như lệnh SHL DX, CL.

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

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

Page 35: Chuong 2- 8088

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 36: Chuong 2- 8088

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ì 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 37: Chuong 2- 8088

VD:

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

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

Page 38: Chuong 2- 8088

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 39: Chuong 2- 8088

Một toán hạng là địa chỉ lệch của ô nhớ trong đoạn dữ liệu Toán hạng còn lại chỉ có thể là thanh ghi không được là ô nhớ. Địa chỉ lệch của ô nhớ có thể cho dưới dạng tên hoặc một số hex (số

hex 16 bit đặt trong ngoặc vuông).

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

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

Page 40: Chuong 2- 8088

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 41: Chuong 2- 8088

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 42: Chuong 2- 8088

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ớ

Các thanh ghi đóng vai trò như là con trỏ trỏ đến ô nhớ Toán hạng kia chỉ có thể là thanh ghi không được là ô 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 43: Chuong 2- 8088

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 44: Chuong 2- 8088

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 45: Chuong 2- 8088

Lời giải:

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

Page 46: Chuong 2- 8088

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 47: Chuong 2- 8088

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ớ được chỉ ra bởi một thanh ghi cơ sở

(BX, BP) cộng với một giá trị dịch chuyển (giá trị hằng) Giá trị dịch chuyển có thể bằng số hoặc bằng tên.

• Nếu bằng số thì giá trị dịch chuyển cộng với thanh ghi cơ sở đặt trong ngoặc vuông. Nếu là số có dấu thì thuộc khoảng

[-32768,32767]• Nếu bằng tên thì tên này đặt trước ngoặc vuông

=> Cả hai dạng giá trị dịch chuyển có thể xuất hiện đồng thời• 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]

Page 48: Chuong 2- 8088

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

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

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

Page 49: Chuong 2- 8088

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 50: Chuong 2- 8088

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 51: Chuong 2- 8088

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 52: Chuong 2- 8088

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 53: Chuong 2- 8088

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 54: Chuong 2- 8088

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 4 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 55: Chuong 2- 8088

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

LỜI GiẢI

Page 56: Chuong 2- 8088

I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 8088

1. 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 57: Chuong 2- 8088

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 58: Chuong 2- 8088

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 59: Chuong 2- 8088

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 60: Chuong 2- 8088

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 AXLệ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 61: Chuong 2- 8088

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 62: Chuong 2- 8088

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 BX Lệ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 63: Chuong 2- 8088

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

Page 64: Chuong 2- 8088

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 65: Chuong 2- 8088

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 66: Chuong 2- 8088

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 67: Chuong 2- 8088

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 68: Chuong 2- 8088

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 69: Chuong 2- 8088

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ầnNế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 70: Chuong 2- 8088

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 71: Chuong 2- 8088

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 72: Chuong 2- 8088

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 73: Chuong 2- 8088

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 74: Chuong 2- 8088

JCXZ : Jump if CX Register if Zero : Nhảy nếu nội dung thanh ghi đếm rỗng.

Vd: JCXZ NHAN JE/JZ: Jump if Equal/ Jump if Zero :Nhảy nếu bằng

nhau /Nhảy nếu kết quả bằng không

JE NHAN

JZ NHAN JG/JNLE – Jump if Greater than/ Jump if Not Less than or

Equal (Nhảy nếu lớn hơn/ Nhảy nếu không bé hơn hoặc bằng)

JG NHAN

JNLE NHAN

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

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

Page 75: Chuong 2- 8088

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

JBE NHAN / JNA NHAN

JCXZ : Jump if CX Register if Zero (Nhảy nếu nội dung thanh đếm rỗng). Vd: JCXZ NHAN

JE/JZ : Jump if Equal/ Jump if Zero (Nhảy nếu bằng nhau/ Nhảy nếu kết quả bằng không)

JE NHAN / JZ NHAN

JG/JNLE: Jump if Greater than/ Jump if Not Less than or Equal (Nhảy nếu lớn hơn/ Nhảy nếu không bé hơn hoặc bằng)

JG NHAN / JNLE NHAN / JNG NHAN

Tất cả các lệnh nhảy hoặc nhảy có điều kiện đều không tác động đến cờ

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

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

Page 76: Chuong 2- 8088

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ố.

=> Lệnh này 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 77: Chuong 2- 8088

LOOP NHAN Lệ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 78: Chuong 2- 8088

LOOPE Hay LOOPZ NHAN:

- Lặp cho đến khi CX=0 và ZF=1

- Giảm CX đi 1 nếu 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 0

LOOPNZ NHAN Tương tự LOOPNE

Nhóm lệnh lặp7

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

Page 79: Chuong 2- 8088

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

; thân thủ tục

. . .

RET

Name ENDP

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 80: Chuong 2- 8088

Gọi CTC: CALL Nhãn

1. Địa chỉ offset của lệnh ngay sau dòng Call được cất vào ngăn xếp

2. Con trỏ lệnh IP chứa địa chỉ offset của lệnh đầu tiên của thủ tục. Thao tác này chuyển điều khiển cho thủ tục

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

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

Page 81: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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ài Cộ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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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_8bit Khi 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ồn Tương tự MUL, số bị nhân phải là số có dấu đặt trong AL hoặc

AX

Page 88: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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

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

Lệnh quay bitLệnh quay bitLệnh dịch 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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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: Chuong 2- 8088

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ái phảiLệnh dịch trái phải

Page 103: Chuong 2- 8088

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: Chuong 2- 8088

- 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: Chuong 2- 8088

- 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: Chuong 2- 8088

- 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 trái ROLLệnh quay trái ROL

Page 107: Chuong 2- 8088

- 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ớ RCLLệnh quay trái có nhớ RCL

Page 108: Chuong 2- 8088

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