Chuong 2- 8088

Post on 20-Jan-2016

66 views 3 download

description

Chuong 2- 8088

Transcript of 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

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

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

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.

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

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ý

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.

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

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ý

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

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

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

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

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.

Đ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

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

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

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

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

Chương II: Bộ vi xử lý Intel 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

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

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.

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:

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

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ó

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.

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

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

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

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

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.

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.

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

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.

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ớ

VD:

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

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

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.

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

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

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.

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

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

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

Lời giải:

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

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.

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]

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.

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

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.

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.

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.

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

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]

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

LỜI GiẢI

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 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

- 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

- 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

- 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

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