Tải bản đầy đủ

BÁO cáo môn VI xử lí trường đh công nghệ giao thông vận tải

Trường Đại Học Công Nghệ Giao Thông Vận Tải
Khoa Công Nghệ Thông Tin

BÁO CÁO MÔN VI XỬ LÍ

GVHD:Cô Trần Thị PhươngThanh
NHÓM SV THỰC HIỆN: NHÓM 2
LỚP:60CĐT2

VĨNH YÊN,NGÀY 20 THÁNG 10NĂM 2011


MỤC ĐÍCH CỦA BÁO CÁO
• Nêu lên được tập lệnh của bộ vi xử lí
8088
• Nêu rõ được phương thức hoạt động
của từng nhóm lệnh
• Nêu lên được tiện ích của các nhóm
lệnh đó
• Cho được ví dụ minh họa



Giới Thiệu Chung
Tập lệnh của bộ vi xử lí 8088 nói
chung được chia thành 12 nhóm,với
các nhóm thao tác dữ liệu và nhóm
đặc biệt(gồm các chỉ thị điều khiển).
Tập lênh của bộ vi xử lí 8088 bao
gồm 3 nhóm lệnh chính: Nhóm lệnh
tính toán số học, nhóm lệnh rẽ nhánh,
nhóm lệnh Logic


Nhóm lệnh xử lý số học
1. Lệnh cộng không nhớ:
Viết lệnh: ADD Đích, Nguồn
Mô tả: Đích ← Đích + Nguồn.
VD: ADD CX,SI ; CX ← CX + SI
ADD DH,BL ; DH ← DH + BL
ADD [1000h],BX ; [1001h,1000h] ← [1001h,1000h] + BX
ADD [2000h],CL ; [2000h] ← [2000h] + CL
ADD AL,[0000h] ; AL ← AL + [0000h]
ADD BYTE PTR [SI+8],5 ; [SI+8] ← [SI+8] + 05h
2. Cộng có nhớ:
Viết lệnh: ADC Đích, Nguồn
Mô tả: Đích ← Đích + Nguồn + CF
VD: ADC BX,AX ; BX ← BX + AX + CF
ADC BYTE PTR [1000h],7Ah ; [1000h] ← [1000h]+7Ah+CF


Nhóm lệnh xử lý số học
3. Lệnh trừ không mượn:
Viết lệnh: SUB Đích
Mô tả: Nguồn Đích ← Đích - Nguồn
VD: SUB DL,AL ; DL ← DL - AL
SUB CX,[DI] ; CX ← CX - [DI+1,DI]
SUB BP,4 ; BP ← BP - 4
4. Lệnh trừ có mượn:
Viết lệnh: SBB Đích, Nguồn
Mô tả: Đích ← Đích - Nguồn – CF
VD: SBB SI,BX ; SI ← SI - BX -CF

SBB BYTE PTR [BX],2 ; [BX+1,BX] ← [BX+1,BX] - 2 - CF


Nhóm lệnh xử lý số học
5. Lệnh tăng:
Viết lệnh: INC Đích
Mô tả: Đích ← Đích + 1
Nếu Đích = FFH ( hoặc FFFFH) thì Đích+1 = 00H ( hoặc 0000H) mà
không ảnh hưởng đến cờ CF
Ví dụ : INC CH
INC WORD PTR [1000h]
6. Lệnh giảm:
Viết lệnh: DEC Đích
Mô tả: Đích ← Đích - 1
Nếu Đích = 00H ( hoặc 0000H) thì Đích-1 = FFH ( hoặc FFFFH) mà
không ảnh hưởng đến cờ CF
7. NEG Đích: Lấy bù hai của một toán hạng, đảo dấu của

một toán hạng.
Mô tả: Đích ← 0 – (Đích)


Nhóm lệnh xử lý số học
8. Lệnh nhân không dấu:
Viết lệnh:MUL Nguồn
Mô tả:Toán hạng nguồn 8 bit thì : AX ← AL * thn8
Toán hạng nguồn 16 bit thì : DX AX ← AX * thn16
Ví dụ: Nếu AL=5, CH=4, sau khi thực hiện lệnh
MUL CH
ta có AX = AL*CH = 0014h.
Nếu AX=500h, [1001h,1000h]=401h, sau khi thực hiện
lệnh
MUL WORD PTR [1000h]
ta có DXAX = AX * [1001h,1000h] = 500h * 401h =
00140500h
Nghĩa là DX=0014h và AX=0500h.
9.Lệnh nhân có dấu
Đối với lệnh nhân có dấu(IMUL) thì phép toán thực hiện
tương tự chỉ khác kết quả xem là có dấu


Nhóm lệnh xử lý số học
10. Chia không dấu:
Viết lệnh: DIV Nguồn
Mô tả: Toán hạng nguồn 8 bit:AL ← (AX/thn8);AH ← Số dư
của(AX/thn8)
Toán hạng nguồn 16 bit:AX← (DXAX/thn16);DX ← Số dư
của(DXAX/thn8)
VD: Nếu AX=0024h,[2000h]=05 thì sau khi thực hiện lệnh
DIV BYTE PTR[2000h]
Ta có AL=07 và AH=01
Nếu DX=0001h,AX=0024h, BX=0200h thì sau khi thực hiện
lệnh DIV BX
Ta có: AX=0008 và DX=0024
11.Chia có dấu:
Đối với lệnh chia có dấu(IDIV) thì phép toán thực hiện
tương tự chỉ khác kết quả xem là có dấu


Nhóm lệnh logic
1. Lệnh AND
Viết lệnh: AND Đích, Nguồn
Mô tả: Đích ← Đích ∧ Nguồn.
VD:AND AL,BL;AL ← AL ∧ BL theo từng bit
2. Lệnh OR
Viết lệnh: OR Đích, Nguồn
Mô tả: Đích ← Đích ∨ Nguồn.
VD:OR AL,BL;AL ← AL∨ BL theo từng bit


Nhóm lệnh logic
3. Lệnh XOR
Viết lệnh: XOR Đích, Nguồn
Mô tả: Đích ← Đích ⊕ Nguồn.
VD:XOR AL,BL;AL ← AL⊕ BL theo từng bit
4. Lệnh NOT
Viết lệnh: NOT Đích
Mô tả: Đích ← Đích
VD:NOT AH; AH ← (AH)


Nhóm lệnh logic
5. Lệnh TEST
Viết lệnh: TEST Đích,Nguồn
Mô tả: Đích ∧ Nguồn
VD:
TEST AH,AL; AH ∧ AL để tạo cờ


Nhóm lệnh rẽ nhánh


Lệnh nhảy không điều kiện:
JMP Nhãn (uncondition Jump to Specifled
Destination)
Nhảy(vô điều kiện đến đích Nhãn
Lệnh mới bắt đầu tại địa chỉ ứng với nhãn
’Nhãn’. Lệnh JMP có thể nhảy lên(về phía địa
chỉ thấp) hoặc nhảy xuống (về phía địa chỉ
cao) và có thể xảy ra được tối đa ½ đoạn
(64kbyte)
Lệnh này không tác đọng đến các cờ


Nhóm lệnh rẽ nhánh
• Lệnh nhảy có điều kiện
- Dạng lệnh : Jcond shortlabel
- Giải thích : Nếu thỏa điều kiện thì nhảy tương đối
IP ← địa chỉ lệnh kế + độ dời (mở rộng dấu 16 bit)
ngược lại không làm gì cả (qua lệnh kế).
- Tác động cờ :
- Lệnh nhảy có điều kiện dùng trạng thái các cờ để
làm điều kiện.


Nhóm lệnh rẽ nhánh
- Sau đây là bảng mã lệnh nhảy có điều kiện cùng với điều
kiện nhảy.
Mã lệnh Giải thích Điều kiện
JE/JZ Nhảy nếu bằng/không ZF = 1
JL/JNGE Nhảy nếu nhỏ hơn/không lớn hơn hoặc bằng (SF
xor OF) = 1
JLE/JNG Nhảy nếu nhỏ hơn hoặc bằng /không lớn hơn
((SF xor OF) or ZF) = 1
JB/JNAE/JC Nhảy nếu dưới /không trên hoặc bằng/nhớ CF
=1
JBE/JNA Nhảy nếu dưới hoặc bằng /không trên (CF or ZF)
=1
JP/JPE Nhảy nếu kiểm tra / kiểm tra chẳn PF = 1
JO Nhảy nếu tràn OF = 1


Nhóm lệnh rẽ nhánh
JS Nhảy nếu dấu SF = 1
JNE/JNZ Nhảy nếu không bằng/khác không ZF = 0
JNL/JGE Nhảy nếu không nhỏ hơn/lớn hơn hoặc bằng (SF xor OF) = 0
JNLE/JG Nhảy nếu không nhỏ hơn hoặc bằng /lớn hơn ((SF xor OF) or
ZF) = 0
JNB/JAE/JNC Nhảy nếu không dưới /trên hoặc bằng/không nhớ CF = 0
JNBE/JA Nhảy nếu không dưới hoặc bằng /trên (CF or ZF) = 0
JNP/JPO Nhảy nếu không kiểm tra / kiểm tra lẻ PF = 0
JNO Nhảy nếu không tràn OF = 0
JNS Nhảy nếu không dấu SF = 0
- Ví dụ : MOV CX,3 ; thực hiện một vòng lặp làm 3 lần.
MOV AX,0
Nhan: ADD AX,12
DEC CX
JNZ Nhan ; nhảy đến lệnh tại vị trí “Nhan” nếu CX ≠ 0.
MOV [3000h],AX


Nhóm lệnh dịch và quay bit
+SAL đích, CL: Dịch trái số học
+SHL đích, CL: Dịch trái logic
Toán hạnh đích tìm đuocj theo các chế độ địa chỉ. Hai lệnh này có tác
động là dịch trái số học. Mỗi lần dịch MSB được đưa qua cờ CF và giá
trị 0 được đưa vào LSB, Thao tác như vậy được gọi là dcihj logic. CL
phải chứa sẵn số lần dịch mong muốn.
Trong trường hợp muốn dịch một lần, ta viết lệnh trực tiếp: SAL đích, 1
ứng dụng: Mỗi lần dịch tương đương việc nhân toán hạng với 2 của số
không dấu. Vậy nếu muốn nhân một số không dấu với 2i thì ta dịch
trái
số bị nhân đi i lần.
Cờ OF  1 nếu khi dịch một lần mà MSb thay đổi. Không xác định sau
nhiều lần dịch.
CF  MSB sau mỗi lần dịch , vì vậy lệnh nhảy này còn dung để tạo cờ
CF từ
giá trị của MSB làm điều kiện cho các lệnh nhảy có điều kiện .
Cập nhật: SF, PF, ZF không xác định AF


Nhóm lệnh dịch và quay bit
+ SAR đích, CL: Dịch phải số học
Toán hạng đích tìm được theo các chế độ địa chỉ.Lệnh có tác dụng
dịch phải số học toán hạnh. Sau nỗi lần dịch MSB được giữ lại, LSB
được đưa vào cờ CF. Cl chứa sẵn số lần dịch
Trong trường hợp muốn dịch một lần, ta viết trực tiếp: SAR đích, 1 ứng
dụng
sau mỗi lần dịch, tương đương việc chia toán hạng với 2 của số có
dấu.Vậy
nếu muốn chia một số có dấu với 2i ta phải dịch chuyển số bị chia đi I
lần.
Cờ OF  1 nếu khi dịch một lần mà LSB thay đổi. Không xác định sau
nhiều lần dịch
CF  LSB sau mỗi lần dịch. Vì vậy lệnh này còn dung để tạo cờ CF từ giá
trị của LSB làm điều kiện các lệnh nhảy có điều kiện.
Cập nhật: SF, PF, ZF không xác định AF.


Nhóm lệnh dịch và quay bit
+SHR đích, CL: Dịch phải logic
Toán hạng đích được tìm theo các chế độ địa chỉ. Lệnh có tác đọng giống các
lệnh SAL,
SHL nhưng theo chiều ngược lại.
+ ROL đích, CL: Quay vòng sang trái.
Toán hạng đích tìm được theo các chế độ địa chỉ.
Lệnh có tác dụng quay vòng toán hạng sang trái. MSB được đưa qua cờ CFZ
là LSB.
ZCl chứa sẵn số lần quay.
Trong trường hợp muốn quay một lần ta viết lệnh: ROL đích, 1
Ta thấy, Nếu Cl = 8 và toán hạng đích là 8 bít thì kết quả không bị thay đổi vì
toán hạng
quay tròn đúng một vòng, còn nếu CL = 4 thì 2 nibble của toán hạng bị đổi chỗ
cho nhau
Cờ OF  1 nếu khi quay một lần mà MSB thay đổi.Không xác đínhau nhiều
lần quay.
CF  MSB sau mỗi lần quay, vì vậy lệnh nheyr còn dung để tạo cờ CF từ giá
trị của
MSB làm điều kiện cho các lệnh nhảy có điều kiện.
Cập nhật: CF, OFkhông xác định AF


Nhóm lệnh dịch và quay bit
+ ROR đích, CL: Quay vòng sang phải.
Toán hạng đích tìm được theo các chế đọ địa chỉ. Lệnh có tác dụng quay vòng
toán
hạng sang phải. LSB được quay qua cờ CF và MSB . CL phải chứa sẵn số lần
quay.
+ RCL đích, CL: Quay trái qua cờ CF
Lệnh này có thể quay toán hạng sang trái thong qua cờ CF, CL phải chứa sẵn
số lần quay
Trong trường hợp muốn quay một lần, ta viết lệnh trực tiếp: RCL đích, 1.
Ta thấy CL = 9 và toán hạng đích bằng 8 bit thì kết quả không bị thay đổi vì
CF cùng với toán hạng thanh ghi(8 bit) quay đúng một vòng.
Cờ CF 1 neeus khi quay một lần mà LSB thay đổi. Không xác định sau nhiều
lần quay.
CF  MSb sau mỗi lần quay.
Cập nhật: CF, OF ( Chỉ có hai cờ này ảnh hưởng).


Nhóm lệnh dịch và quay bit
+ RCR đích, CL: Quay phải cờ CF.
Lệnh này có thể quay toán hạng sang phải thong qua cờ
CF, CL phải chứa sẵn số lần quay.
Trong trường hợp muốn quay 1 lần ta viết trực tiếp lệnh:
RCR đích, 1
Ta thấy, nếu CL =9 và toán hạng đích là 8 bbit thì
kết quả không bị thay đổi vì CF cùng với toán
hạng thanh ghi (8 bit) quay đúng một vòng.
CF LSB sau mỗi lần quay.
Cập nhật: CF, OF (Chỉ hai cờ này bị ảnh hưởng)


LỜI CẢM ƠN
Mặc dù rất cố gắng để hoàn thiện báo
cáo, xongong vì thời gian có hạn và kinh
nghiệm, kiến thức còn hạn chế nên báo
cáo này còn nhiều thiếu sót. Chúng em rất
mong nhận được ý kiến đóng góp của
thầy cô và bè bạn để chương trình ngày
càng hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!!!



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×