Bộ vi xử lý 8088 đơn giản hơn.
description
Transcript of Bộ vi xử lý 8088 đơn giản hơn.
1
Bộ vi xử lý 8088 đơn giản hơn.
3
Nhiều điểm giống với họ vi xử lý 80x86=> nắm bắt được hệ vi xử lý của hãng khác
2
Có tính kế thừa của các sản phẩm trong họ vi xử lý 80x86.
Lý do nghiên cứu bộ vi xử lý 8088
I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088
2. Nguyên lý hoạt động
II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi
2. Cách mã hóa lệnh của bộ vi xử lý 8088
3. Các chế độ địa chỉ dữ liệu
III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088
Chương II: BỘ VI XỬ LÝ INTEL 8088
Chương II: Bộ vi xử lý Intel 8088
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ý
I – Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lý
Chương II: Bộ vi xử lý Intel 8088
Khối đơn vị giao tiếp bus (Bus Interface Unit, BIU): Thanh ghi đoạn và thanh ghi con trỏ lệnh IP Khối logic điều khiển bus, bộ cộng Bus dữ liệu 8 bit và bus địa chỉ 20 bit
Khối thực hiện lệnh (Execution Unit, EU).Thanh ghi đa năng, các thanh ghi con trỏ và chỉ sốKhối tính toán số học và logic ALUKhối điều khiển EUBus dữ liệu 16 bit của ALU, bus tín hiệu điều khiển.
Việc chia CPU thành hai phần làm việc đồng thời có liên hệ với nhau qua hàng đợi lệnh làm tăng tốc độ đáng kể của CPU.
2. Nguyên lý hoạt động
Chương II: Bộ vi xử lý Intel 8088
Đơn vị thực hiện EU• EU có nhiệm vụ cung cấp địa chỉ cho BIU để khối này đọc lệnh và dữ
liệu • Giải mã lệnh để tạo ra các tín hiệu điều khiển nhằm thực hiện lệnh đã
được giải mã.• Khối tính toán số học và logic ALU dùng để thực hiện các thao tác khác
nhau với các toán hạng của lệnh
Đơn vị giao tiếp BUS• BIU có nhiệm vụ đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ liệu
từ/vào cổng hoặc bộ nhớ.
• Bên trong BIU còn có bộ nhớ đệm lệnh (còn gọi là hàng đợi lệnh) với
dung lượng 4 byte (8088), 6 byte (8086) dùng để chứa các lệnh đã đọc
được nằm sẵn chờ EU xử lý.
I - CẤU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ VI XỬ LÝ 80881. Sơ đồ khối của bộ vi xử lý 8088
2. Nguyên lý hoạt động
II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi
2. Cách mã hóa lệnh của bộ vi xử lý 8088
3. Các chế độ địa chỉ dữ liệu
III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088
Chương II: BỘ VI XỬ LÝ INTEL 8088
Chương II: Bộ vi xử lý Intel 8088
1. Các thanh ghi8088 có 14 thanh ghi 16 bit
1.1 Các thanh ghi đa năng
Chương II: Bộ vi xử lý Intel 8088
Lưu trữ tạm thời dữ liệu để truy cập nhanh hơn tránh khỏi phải truy cập bộ nhớAX (Accumulator): Các thanh ghi này được sử dụng trong các tính. Kết quả
8 bit được chứa trong AL BX (Base): thanh ghi cơ sở, thường chứa địa chỉ lệch của ô nhớ trong đoạn
DS.CX (Count): thanh ghi đếm, CX thường chứa số lần lặp trong các lệnh lặp,
CL thường chứa số lần dịch hoặc quay trong lệnh dịch và quay thanh ghi.DX (Data): thanh ghi dữ liệu, DX cùng với AX tham gia vào phép nhân hoặc
chia các số 16 bit. DX còn dùng để chứa địa chỉ của các cổng vào/ra trong các lệnh vào ra dữ liệu trực tiếp.
8 Bit thấp8 Bit cao
•8088/8086 đến 80286 : 16 bits•80386 trởlên: 32 bits EAX,EBX, ECX, EDX
1.2 Các thanh ghi đoạn
Chương II: Bộ vi xử lý Intel 8088
Lưu trữ địa chỉ đoạn của 1 ô nhớ cần truy cập CS (Code Segment): thanh ghi đoạn mã, xác định địa chỉ bắt đầu
của đoạn nhớ chứa mã chương trình. DS (Data Segment): thanh ghi đoạn dữ liệu, xác định địa chỉ bắt
đầu của đoạn nhớ chứa hầu hết dữ liệu của chương trình. ES (Extra Segment): thanh ghi đoạn dữ liệu phụ, xác định địa chỉ
bắt đầu của đoạn nhớ chứa dữ liệu phụ. Đoạn nhớ này được các lệnh về chuỗi sử dụng để chứa dữ liệu đích.
SS (Stack Segment): thanh ghi đoạn ngăn xếp, xác định địa chỉ bắt đầu của đoạn nhớ ngăn xếp.
4 thanh ghi đoạn:
CS,DS,SS,ES
Các thanh ghi đoạn
Chương II: Bộ vi xử lý Intel 8088
Phương pháp quản lý bộ nhớBộ nhớ là tập hợp các ô nhớ (byte) Mỗi ô nhớ được nhận dạng bằng một địa chỉ vật lý duy nhất 20 bit 8086/8088 có bus địa chỉ 20 bit nên có thể cho phép truy xuất 220= 1048576 địa chỉ bộ nhớ khác nhau.
Trong 1 MB = 1048576 byte bộ nhớ cần chia thành nhiều đoạn nhớ khác nhau:
Các thanh ghi phân đoạn
Các thanh ghi này có 16 bit trong khi địa chỉ bộ nhớ là 20 bit nên để xác dịnh vị trí bộ nhớ, ta sẽ thêm 4 bit 0 vào các bit thấp của thanh ghi đoạn.
Giả sử như thanh ghi CS chứa giá trị 1111h thì nó sẽ chỉ tới địa chỉ bắt đầu là 11110h.
VD: Thanh ghi DS có giá trị là 1000h thì địa chỉ bắt đầu của đoạn là 10000h. Địa chỉ kết thúc tìm được bằng cách cộng địa chỉ bắt đầu
với với giá trị FFFFh (64K) → địa chỉ kết thúc là 10000h + FFFFh = 1FFFFh.
Như vậy đoạn dữ liệu có địa chỉ từ 10000h -> 1FFFFh.
VDGiả sử các thanh ghi đoạn có các giá trị CS = 2800h, DS =
E000h, SS = 2900h và ES = 1000h. Ta có vị trí các đoạn trong bảng bộ nhớ như sau:
Địa chỉ vật lý và địa chỉ logic
Địa chỉ lệch (offset): xuất hiện trong đoạn nhớ 64KB (từ 0000h đến
ffffh)
Ví dụ: địa chỉ offset 0010h của đoạn mã CS= 2800h sẽ có địa chỉ thật
sự là 28000h + 0010h = 28010h. Địa chỉ này gọi là địa chỉ vật lý.
Địa chỉ vật lý = Nội dung thanh ghi đoạn x 10h + Nội dung thanh ghi
lệch = Địa chỉ đoạn + Địa chỉ lệch
Địa chỉ logic = Thanh ghi đoạn:Thanh ghi lệch (địa chỉ lệch)
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
Mối liên hệ ĐCVL & ĐCLG
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
IP (Instruction Pointer): thanh ghi con trỏ lệnh• IP luôn trỏ vào lệnh tiếp theo sẽ được thực hiện nằm trong đoạn mã
CS. • Địa chỉ của lệnh này là CS:IP.
BP (Base Pointer): con trỏ cơ sở• BP chủ yếu được sử dụng để truy nhập dữ liệu nằm trong đoạn ngăn
xếp. • Địa chỉ logic của ô nhớ ngăn xếp do BP trỏ tới là SS:BP
1.3. Thanh ghi con trỏ và chỉ số
Chương II: Bộ vi xử lý Intel 8088
Thanh ghi con trỏ và chỉ số
Chương II: Bộ vi xử lý Intel 8088
SP (Stack Ponter): con trỏ ngăn xếp •SP luôn trỏ vào đỉnh hiện thời của ngăn xếp.•Địa chỉ logic của đỉnh ngăn xếp là SS:SP
SI (Source Index): chỉ số nguồn •SI trỏ vào dữ liệu trong đoạn dữ liệu DS. •Địa chỉ logic của ô nhớ do SI trỏ tới là DS:SI
DI (Destinaton Index): chỉ số đích, •DI trỏ vào dữ liệu trong đoạn dữ liệu DS. •Địa chỉ logic của ô nhớ do DI trỏ tới là DS:DI
Riêng trong các lệnh về chuỗi thì:• ES:DI luôn ứng với địa chỉ của một phần tử thuộc chuỗi đích• DS:SI luôn ứng với địa chỉ của một phần tử thuộc chuỗi nguồn.
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:
1.5 Thanh ghi cờ (Flag Register)
Chương II: Bộ vi xử lý Intel 8088
Mục đích của thanh ghi cờ là chỉ ra trạng thái của bộ vi xử lý. Mỗi bit của thanh ghi này được dùng để phản ánh một trạng
thái nhất định của kết quả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU.
Thanh ghi cờ có 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ.
Các cờ điều khiển
Các trạng thái
Thanh ghi cờ (Flag Register)
Chương II: Bộ vi xử lý Intel 8088
có 6 cờ trạng thái là C, P, A, Z, S và O. Các cớ trạng thái này được thiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh toán học và logic.
•C (Carry): cờ nhớ, C = 1 khi có nhớ từ bit trái nhất trong phép cộng hoặc có vay vào bit msb trong phép trừ
•P (Parity): cờ chẵn lẻ, P = 1 khi tổng số bit 1 trong byte thấp là chẵn, P = 0 khi tổng số bit 1 trong byte thấp là lẻ.
•A (Auxiliary): cờ nhớ phụ, A = 1 khi có nhớ hoặc mượn từ một số BCD thấp sang một số BCD cao.
•Z (Zero): cờ rỗng, Z = 1 khi kết quả của phép tính số học bằng 0, Z = 0 khi kết quả của phép tính số học khác 0.
•S (Sign): cờ dấu, S = 1 kết quả âm.•O (Overflow): cờ tràn, O = 1 khi kết quả vuợt ra ngoài giới hạn
biểu diễn dành cho nó
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.
Hiện tượng tràn xảy ra khi nào?
Hiện tượng tràn xảy ra khi nào?
Xét số có dấu 1 word [-32768,32767]Co dau 1 byte [-128,127]
*. Xét số không dấu 1 word [0,65535]
1 byte [0,255]Þ Vượt ra khỏi giới hạn biểu diễn => tràn
VD1: Tràn không dấu nhưng không tràn có dấu
AX: FFFFH, BX: 0001H ADD AX,BX
Kết quả: 1111 1111 1111 1111
0000 0000 0000 0001
10000 0000 0000 0000
- Nếu xét số không dấu: KQ: 65536 > 65535 => AX: 0h=> sai
- Nếu xét số có dấu: FFFFH=-1; 0001H=+1 => AX:0h =>đúng
VD2: tràn có dấu nhưng không tràn không dấu
AX, BX: 7FFFH Add AX,BX
0111 1111 1111 1111
0111 1111 1111 1111
1111 1111 1111 1110- Xét số có dấu: AX,BX: 32767 => KQ: 65534 >32767 => Vượt khỏi
phạm vi, kết quả nhận được dạng có dấu -2 => tràn có dấu- Xét số không dấu: AX,BX: 32767 => KQ: 65534 <65535 =>không
tràn
Þ Làm sao CPU chỉ ra được hiện tượng tràn?Þ Làm sao CPU biết được có hiện tượng tràn xảy ra?
Giải phápCPU chỉ ra hiện tượng tràn:
CPU lập cờ OF=1 báo hiện tượng tràn có dấuCF=1 => hiện tượng tràn không dấu
Làm thế nào CPU biết được có hiện tượng tràn xảy ra: xét +, -- Hiện tượng tràn không dấu:
+ Phép + => Tràn xảy ra khi có nhớ từ bit msb nghĩa là KQ vượt ra khỏi phạm vi biểu diễn nó
+ Phép -: Hiện tượng tràn xảy ra khi vó vay vào bit msb (KQ <0)
- Hiện tượng tràn có dấu: + cộng các số cùng dấu: A+B=-C; (-A)+(-B)=C+ trừ các số khác dấu: A-(-B)=A+B; -A-(+B)=-A+-B+ cộng 2 số khác
Hiện tượng tràn
Hiện tượng tràn không dấu: Phép cộng: khi có nhớ từ bit trái nhất msb. Kết quả vượt ra
khỏi phạm vi biểu diễn nó.Phép trừ: Khi có sự vay vào bit msb. Kết quả đúng < 0VD: Thực hiện phép cộng AL,BL cùng chứa 80h
8080
100- SF=0 vì msb=0- PF=1 vì tất cả các bit của tổng bằng 0- ZF=1 vì kết quả thu được bằng 0- CF=1 vì có nhớ từ bit msb trong phép cộng- OF=1 vì kết quả vượt ra khỏi phạm vi biểu diễn nó
Chương II: Bộ vi xử lý Intel 8088
Hiện tượng tràn
Hiện tượng tràn có dấu: Phép cộng: khi có nhớ từ bit trái nhất msb. Kết quả vượt ra
khỏi phạm vi biểu diễn nó.Phép trừ: Khi có sự vay vào bit msb. Kết quả đúng < 0VD: Thực hiện phép cộng AL,BL cùng chứa 80h
8080
100- SF=0 vì msb=0- PF=1 vì tất cả các bit của tổng bằng 0- ZF=1 vì kết quả thu được bằng 0- CF=1 vì có nhớ từ bit msb trong phép cộng- OF=1 vì kết quả vượt ra khỏi phạm vi biểu diễn nó
Chương II: Bộ vi xử lý Intel 8088
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Ý 80881. Sơ đồ khối của bộ vi xử lý 8088
2. Nguyên lý hoạt động
II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi
2. Cách mã hóa lệnh của bộ vi xử lý 8088
3. Các chế độ địa chỉ dữ liệu
III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088
Chương II: BỘ VI XỬ LÝ INTEL 8088
Chương II: Bộ vi xử lý Intel 8088
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Ý 80881. Sơ đồ khối của bộ vi xử lý 8088
2. Nguyên lý hoạt động
II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi
2. Cách mã hóa lệnh của bộ vi xử lý 8088
3. Các chế độ địa chỉ dữ liệu
III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088
Chương II: BỘ VI XỬ LÝ INTEL 8088
Chương II: Bộ vi xử lý Intel 8088
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ỡ
Chế độ địa chỉ thanh ghi (register mode)a.
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ời (immediate mode) b
Toán hạng đích Toán hạng nguồn
là một hằng số
là một thanh ghi hay ô nhớ
Chế độ địa chỉ tức thời (immediate mode)
VD:
Chương II: Bộ vi xử lý Intel 8088
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ời b Chế độ địa chỉ trực tiếp c
Chế độ địa chỉ gián tiếp qua thanh ghi d.
Chế độ địa chỉ tương đối cơ sở e Chế độ địa chỉ tương đối chỉ sốf.
Chế độ địa chỉ tương đối chỉ số cơ sở g.
Một toán hạng là địa chỉ lệch của ô nhớ (dưới dạng tên biến hoặc số hex) trong đoạn dữ liệu DS
Toán hạng còn lại là thanh ghi không được là ô nhớ.
Chương II: Bộ vi xử lý Intel 8088
Chế độ địa chỉ trực tiếp (direct mode) c
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ớ
Toán hạng còn lại là thanh ghi (không được là ô nhớ). Các thanh ghi đóng vai trò như là con trỏ trỏ đến ô nhớ Các thanh ghi đặt trong ngoặc vuông.
• BX, SI, DI chứa địa chỉ lệch của ô nhớ trong đoạn dữ liệu DS• BP chứa địa chỉ lệch của ô nhớ trong đoạn ngăn xếp SS.
Chế độ địa chỉ gián tiếp qua thanh ghid
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ớ (bao gồm thanh ghi cơ sở BX hoặc BP kết hợp với giá trị dịch chuyển)
Toán hạng còn lại chỉ có thể là thanh ghi không được là ô nhớ.BX xác định địa chỉ trong đoạn dữ liệu DSBP xác định địa chỉ trong đoạn ngăn xếp SS.
Giá trị dịch chuyển có thể bằng số hoặc bằng tên. • Các dạng biểu thức của toán hạng
[Thanh ghi + độ dịch][Độ dịch + thanh ghi][thanh ghi] + độ dịchĐộ dịch [thanh ghi]Độ dịch+ [thanh ghi]
Chương II: Bộ vi xử lý Intel 8088
Chế độ địa chỉ tương đối cơ sở e
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 1084h SI chứa 4, offset 0004h chứa 2BACh DI chứa 1
Lệnh nào hợp lệ, Chỉ ra offset của toán tử nguồn, con số độ dịch
a. Mov AX,[A+BX] e. MOV BX,[A+3+DI]
b. MOV BX,[BX+2] F. MOV AX,[BX]2
c. MOV CX,A[SI] G. ADD BX,[A+AX]
d. MOV AX,-2[SI]
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Ý 80881. Sơ đồ khối của bộ vi xử lý 8088
2. Nguyên lý hoạt động
II - CÁC THANH GHI VÀ CÁC CHẾ ĐỘ ĐỊA CHỈ1. Các thanh ghi
2. Cách mã hóa lệnh của bộ vi xử lý 8088
3. Các chế độ địa chỉ dữ liệu
III- TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088
Chương II: BỘ VI XỬ LÝ INTEL 8088
Chương II: Bộ vi xử lý Intel 8088
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 AX Lệnh PUSH thực hiện các công việc sau:
+ Giảm SP (con trỏ ngăn xếp) đi 2
+ Nội dung của toán hạng nguồn được lưu vào vị trí nhớ được trỏ bởi (SS:SP). Toán hạng nguồn không bị thay đổi.
PUSHF: Không có toán hạng; cất nội dung của thanh ghi cờ vào ngăn xếp
Nhóm lệnh chuyển dữ liệu 1
Chương II: Bộ vi xử lý Intel 8088
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 BXLệnh POP thực hiện các công việc sau:
+ Nội dung của ô nhớ SS:SP (đỉnh ngăn xếp) được chuyển tới toán tử đích
+ SP tăng lên 2 POPF: Lệnh POPF đưa vào thanh ghi cờ nội dung của đỉnh
ngăn xếp
Nhóm lệnh chuyển dữ liệu 1
Chương II: Bộ vi xử lý Intel 8088
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ầnÞNếu điều kiện thỏa mãn thì nhảy tới Nhãn_gần.
Các lệnh nhảy có điều kiện bao gồm: JA, JAE, JB, JBE, JNA, JNAE, JNB, JNBE, JG, JGE, ....
Nhóm lệnh điều khiển chương trình5
Chương II: Bộ vi xử lý Intel 8088
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
CMP Left, RightLeft có thể là thanh ghi hoặc ô nhớ (Không được
phép là hằng số)Right có thể là thanh ghi hoặc ô nhớ hoặc hằng số. Þ So sánh Left và Right bằng cách lấy toán tử Left trừ đi
toán tử Right, kết quả không được lưu lại nhưng các cờ bị ảnh hưởng.
Þ Các toán hạng của lệnh Cmp không thể cùng là các ô nhớ.
Nhóm lệnhso sánh6
Chương II: Bộ vi xử lý Intel 8088
LOOP NHANLệnh này dùng để lặp lại đoạn chương trình (gồm các lệnh nằm
trong khoảng từ NHAN đến hết lệnh Loop NHAN) cho đến khi số lần lặp CX=0 (sau mỗi lần thực hiện lệnh Loop NHAN thì đồng thời CX tự động giảm 1)
Lệnh này không tác động đến cờVí dụ:
Xor AL,AL
Mov Cx,12
Lap:
Inc AL
Loop Lap
Nhóm lệnh lặp7
Chương II: Bộ vi xử lý Intel 8088
LOOPE Hay LOOPZ NHAN: - Lặp cho đến khi CX=0 và ZF=1
- Giảm CX đi 1 và nhảy đến “NHAN” nếu CX khác 0 và cờ ZF= 1
LOOPNE NHAN- Giảm CX đi 1 đơn vị và nhảy đến NHAN nếu ZF=0
và CX - 0LOOPNZ NHAN Tương tự LOOPNE
Nhóm lệnh lặp7
Chương II: Bộ vi xử lý Intel 8088
Chương trình con có cấu trúc:Name PROC type
; thân thủ tục
. . .
RET
Name ENDP Gọi CTC: CALL Te
Trong đó: – Name : là tên của thủ tục định nghĩa bởi người sử dụng– Type toán hạng tuỳ chọn có thể là NEAR hay FAR– NEAR: được ngầm định nếu bỏ qua type. NEAR có nghĩa là
dòng lệnh gọi thủ tục ở cùng đoạn với thủ tục đó– FAR: có nghĩa là dòng lệnh gọi ở trong một đoạn khác
Lệnh gọi chương trình con8
Chương II: Bộ vi xử lý Intel 8088
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àiCộng một thanh ghi và một ô nhớCộng một số vào một thanh ghi hay một ô nhớ (không được
đồng thời là 2 ô nhớ và không được là thanh ghi đoạn)
Chương II: Bộ vi xử lý Intel 8088
Nhóm lệnh tính toán số học9
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_8bitKhi nhân các byte với nhau, 1số được chứa trong toán hạng
nguồn và số còn lại được giả thiết đã chứa trong AL. Toán hạng nguồn có thể là 1 thanh ghi hay 1 byte nhớ nhưng không thể là hằng sốMUL Nguồn_16bit
DX:AX - AX x Nguồn_16bit Số bị nhân phải là số 16 bit để trong AX
- Lệnh nhân có dấu: IMUL NguồnTương tự MUL, số bị nhân phải là số có dấu đặt trong AL hoặc
AX
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 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 phảiLệnh dịch 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 phải RORLệnh quay phải ROR
- RCR Đích,1 hoặc RCR Đích,CL: • Lệnh quay phải qua cờ nhớ - Rotate Carry Lef• Dịch các bit của toán hạng đích sang phải. Bit lsb được
đặt vào cờ CF, giá trị cũ của CF được đưa vào bit trái nhất của toán hạng đích
Lệnh quay trái có nhớ RCRLệnh quay trái có nhớ RCR
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