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