Tìm hiểu về kiến trúc tập lệnh IA-32 - pdf 16

Download miễn phí Đề tài Tìm hiểu về kiến trúc tập lệnh IA-32



1.2.1 Chip cầu bắc ( NorthBrigde )
Tên gọi khác là : Memmory Controller Hub ( MCH ), là một trong 2 chip trên bo mạch chủ.
• Chức năng : Chip cầu bắc đảm nhiệm việc liên lạc giữa các thiết bị CPU, RAM,
AGP hay PCI Express, và chip cầu nam. Một vài loại còn chứa chương trình điều khiển video tích hợp, hay còn gọi là Graphics and Memory Controller Hub (GMCH). Vì các bộ xử lý và RAM khác nhau yêu cầu các tín hiệu khác nhau, một chip cầu bắc chỉ làm việc với một hay hai loại CPU và nói chung chỉ với một loại RAM. Có một vài loại chipset hỗ trợ hai loại RAM (những loại này thường được sử dụng khi có sự thay đổi về chuẩn). Ví dụ, chip cầu bắc của chipset NVIDIA nForce2 chỉ làm việc với bộ xử lý Duron,Athlon, và Athlon XP với DDR SDRAM, chipset Intel i875 chỉ làm việc với hệ thống sử dụng bộ xử lý Pentium 4 hoặcCeleron có tốc độ lớn hơn 1.3 GHz và sử dụng DDR SDRAM, chipset Intel i915g chỉ làm việc với Intel Pentium 4 và IntelCeleron, nhưng có thể sử dụng bộ nhớ DDR hay DDR2.
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

cố định, chẳng có quy chuẩn bắt buộc nào cả, nhưng nếu có các bước này, phải thực hiện theo đúng trình tự.
Opcode: xác định công việc
ModR/M: đánh dấu cách sử dụng bộ nhớ/ thanh ghi
SIB: đánh giá/ đong đếm (scale) – Lập chỉ mục (Index) – Thiết đặt cơ sở (Base)
Hoán đổi (nếu có)
Thực thi (nếu có)
5, Các nhóm lệnh tiêu biểu
5.1,Nhóm lệnh dịch chuyển dữ liệu
Nhóm lệnh này đảm nhận việc chuyển dữ liệu qua lại giữa các thành phần nhớ và các thành phần xử lý của máy tính.
5.2,Nhóm lệnh tính toán số học
Thực hiện các phép toán số học như cộng, trừ, nhân, chia, thêm bớt trong ngăn xếp
5.3,Nhóm lệnh tính toán logic
Thực hiện các phép toán logic như AND, OR, XOR
5.4,Nhóm lệnh điều khiển tuần tự
Bao gồm các câu lệnh thực hiện việc điều khiển sự dịch chuyển, lặp, gọi chương trình con
5.5,Nhóm lệnh vào ra
Các câu lệnh vào, ra để nhập, xuất dữ liệu có và không điều kiện
6, Phân tích các lệnh cơ bản của từng nhóm
6.1,Nhóm lệnh dịch chuyển dữ liệu
Lệnh
Mã gợi nhớ
Cách thức
Miêu tả
mov
NGUỒN, ĐÍCH
ĐÍCH = NGUỒN
dịch chuyển/sao chép
xchg
NGUỒN, ĐÍCH
ĐÍCH = NGUỒN, NGUỒN = ĐÍCH
đổi chỗ
push
NGUỒN
(%esp) = NGUỒN; %esp -= 4;
đưa vào ngăn xếp
pop
ĐÍCH
ĐÍCH = (%esp); %esp += 4;
lấy ra khỏi ngăn xếp
6..1.1, Lệnh MOV :
-Dạng lệnh : MOV reg,reg MOV reg,immed MOV mem,reg MOV mem,immed MOV reg,mem MOV mem16,segreg MOV reg16,segreg MOV segreg,mem16 MOV segreg,reg16
- Giải thích : ĐÍCH ← NGUỒN
- Chép toán hạng nguồn vào toán hạng đích.
- Ví dụ : MOV AX,CX ; AX ← CX
MOV [SI+1000h],BP ; [SI+1001h, SI+1000h] ← BP
6.1.2, Lệnh XCHG :
-Dạng lệnh : XCHG reg,reg XCHG mem,reg
XCHG accum,reg16 XCHG reg,mem
- Giải thích : ĐÍCH ↔ NGUỒN
- Trao đổi nội dung hai toán hạng cho nhau.
- Ví dụ : XCHG AX,CX ; AX ↔ CX
XCHG [1000h],DX ; [1001h,1000h] ↔ DX
6.1.3, Lệnh PUSH :
-Dạng lệnh : PUSH reg16 PUSH segreg
PUSH mem16
- Giải thích : SP ← SP-2 [SS:SP+1,SS:SP] ← NGUỒN
- Đẩy toán hạng nguồn 16 bit vào chồng (địa chỉ đỉnh chồng là SS:SP).
- Ví dụ : PUSH DI ; [SS:SP+1,SS:SP] ← DI
PUSH [SI] ; [SS:SP+1,SS:SP] ← [SI+1,SI]
6.1.4, Lệnh POP :
-Dạng lệnh : POP reg16 POP segreg
POP mem16
- Giải thích : ĐÍCH ← [SS:SP+1,SS:SP] SP ← SP+2
- Lấy dữ liệu từ đỉnh chồng vào toán hạng đích.
- Ví dụ : POP AX ; AX ← [SS:SP+1,SS:SP]
POP [BX+1] ; [BX+2,BX+1]← [SS:SP+1,SS:SP]
6.2,Nhóm lệnh tính toán logic
Lệnh
Mã gợi nhớ
Cách thức
Miêu tả
XOR
NGUỒN, ĐÍCH
ĐÍCH = ĐÍCH ^ NGUỒN
lệnh XOR
OR
NGUỒN, ĐÍCH
ĐÍCH = ĐÍCH | NGUỒN
lệnh OR
AND
NGUỒN, ĐÍCH
ĐÍCH = ĐÍCH & NGUỒN
lệnh AND
NOT
NGUỒN, ĐÍCH
ĐÍCH = -NGUỒN
lệnh NOT
6.2.1, Lệnh XOR :
-Dạng lệnh : XOR reg,reg XOR reg,immed
XOR mem,reg XOR mem,immed
XOR reg,mem XOR accum,immed
- Giải thích : ĐÍCH ← ĐÍCH XOR NGUỒN.
- Ví dụ : XOR DL,80h ; đảo bit 7
XOR [2000h],AL ; [2000h] ← [2000h] XOR AL
6.2.2, Lệnh OR :
-Dạng lệnh : OR reg,reg OR reg,immed OR mem,reg OR mem,immed OR reg,mem OR accum,immed
- Giải thích : ĐÍCH ← ĐÍCH OR NGUỒN.
- Ví dụ : OR DL,CH
6.2.3, Lệnh AND :
-Dạng lệnh : AND reg,reg AND reg,immed
AND mem,reg AND mem,immed
AND reg,mem AND accum,immed
- Giải thích : ĐÍCH ← ĐÍCH AND NGUỒN.
- Ví dụ : AND CH,AH
6.2.4, Lệnh NOT :
-Dạng lệnh : NOT reg NOT mem
- Giải thích : ĐÍCH ← bù 1 của ĐÍCH
- Đảo hay lấy bù 1.
- Ví dụ : NOT AL
6.3,Nhóm lệnh tính toán số học
Lệnh
Mã gợi nhớ
Cách thức
Miêu tả
inc
ĐÍCH
ĐÍCH++
Thêm 1 phần tử
dec
ĐÍCH
ĐÍCH-
Bớt 1 phần tử
add
NGUỒN, ĐÍCH
ĐÍCH = ĐÍCH + NGUỒN
cộng
sub
NGUỒN, ĐÍCH
ĐÍCH = ĐÍCH - NGUỒN
trừ
mul
NGUỒN
%edx:%eax = %eax * NGUỒN
Nhân không dấu
imul
NGUỒN
%edx:%eax = %eax * NGUỒN
Nhân có dấu
div
NGUỒN
%edx = %eax MOD NGUỒN; %eax = %eax / NGUỒN;
chia có dấu
idiv
NGUỒN
%edx = %eax MOD NGUỒN; %eax = %eax / NGUỒN; chia không dấu
6.3.1, Lệnh INC :
-Dạng lệnh : INC reg INC mem
- Giải thích : ĐÍCH ← ĐÍCH + 1
- Tăng tức là cộng 1 vào toán hạng đích nhưng không ảnh hưởng cờ nhớ.
- Ví dụ : INC CH
6.3.2, Lệnh DEC :
-Dạng lệnh : DEC reg DEC mem
- Giải thích : ĐÍCH ← ĐÍCH - 1
- Giảm tức là trừ 1 vào toán hạng đích nhưng không ảnh hưởng cờ nhớ.
-Ví dụ : DEC AX
6.3.3, Lệnh ADD :
-Dạng lệnh : ADD reg,reg ADD reg,immed
ADD mem,reg ADD mem,immed
ADD reg,mem ADD accum,immed
- Giải thích : ĐÍCH ← ĐÍCH + NGUỒN
- Cộng toán hạng nguồn vào toán hạng đích. Kết quả cất vào toán hạng đích.
- Ví dụ : ADD CX,SI ; CX ← CX + SI
ADD [1000h],BX ; [1001h,1000h] ← [1001h,1000h] + BX
6.3.4, Lệnh SUB :
-Dạng lệnh : SUB reg,reg SUB reg,immed
SUB mem,reg SUB mem,immed
SUB reg,mem SUB accum,immed
- Giải thích : ĐÍCH ← ĐÍCH - NGUỒN
- Trừ toán hạng đích cho toán hạng nguồn. Kết quả cất vào toán hạng đích.
- Ví dụ : SUB DL,AL ; DL ← DL - AL
SUB BP,4 ; BP ← BP - 4
6.3.5, Lệnh MUL :
-Dạng lệnh : MUL reg MUL mem
- Giải thích : Toán hạng nguồn 8 bit thì : AX ← AL * NGUỒN8
Toán hạng nguồn 16 bit thì : DX AX ← AX * NGUỒN16
- Nhân hai số không dấu 8 bit hay 16 bit. Số bit thực hiện được xác định bằng chiều dài
của toán hạng nguồn.
+Phép nhân 8 bit : thực hiện nhân AL với toán hạng nguồn, kết quả 16 bit cất trong thanh ghi AX.
+Phép nhân 16 bit : thực hiện nhân AX với toán hạng nguồn, kết quả 32 bit cất trong
2 thanh ghi DX và AX. DX giữ 16 bit cao, AX giữ 16 bit thấp.
- 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 PT [1000h] ta có DXAX = AX * [1001h,1000h] = 500h * 401h = 00140500h
Nghĩa là DX=0014h và AX=0500h.
6.3.6, Lệnh IMUL :
-Dạng lệnh : IMUL reg IMUL mem
- Nhân hai số có dấu. Thực hiện giống hệt như lệnh MUL, chỉ có kết quả được xem là
số có dấu.
6.3.7, Lệnh DIV :
-Dạng lệnh : DIV reg DIV mem
- Giải thích : Toán hạng nguồn 8 bit thì : AL ← (AX / NGUỒN8)
AH ← số dư của (AX / NGUỒN8) Toán hạng nguồn 16 bit thì : AX ← (DXAX / NGUỒN16)
DX ← số dư của (DXAX / NGUỒN16)
- Chia hai số không dấu.
- Nếu toán hạng nguồn là thanh ghi hay bộ nhớ 8 bit, thực hiện chia số 16 bit trong thanh ghi AX cho toán hạng nguồn 8 bit. Kết quả 8 bit cất trong thanh ghi AL. Số dư
8 bit cất trong thanh ghi AH.
- Nếu toán hạng nguồn là thanh ghi hay bộ nhớ 16 bit, thực hiện chia số 32 bit trong 2 thanh ghi DXAX cho toán hạng nguồn 16 bit. Kết quả 16 bit cất trong thanh ghi AX. Số dư 16 bit cất trong thanh ghi DX.
- Ví dụ : 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.
6.3.8, Lệnh IDIV :
-Dạng lệnh : IDIV reg IDIV mem
- Chia hai số có dấu. Thực hiện giống như lệnh DIV nhưng kết quả coi là số có dấu.
6.4,Nhóm lệnh điều khiển tuần tự
Lệnh
Mã gợi nhớ
Cách thức
Miêu tả
jmp
NHÃN
dịch chuyển vô điều kiện
je
NHÃN
dịch chuyển nếu ngang bằng
jne
NHÃN
dịch chuyển nếu không bằng
jg
NHÃN
dịch chuyển nếu lớn hơn
jge
NHÃN
dịch chuyển nếu lớn hơn hay bằng
jl
NHÃN
dịch chuyển nếu nhỏ hơn
jle
NHÃN
dịch chuyển nếu nhỏ hơn hay bằng
call
NHÃN
gọi chương trình con
loop
NHÃN
%ecx- dec %ecx,
dịch chuyển đến nhãn nếu không là ZERO
loope
NHÃN
if -%ecx != 0 && ZERO flag: %eip = NHÃN
loopz
NHÃN
if -%ecx != 0 && ZERO flag: %eip = NHÃN
loopnz
NHÃN
6.4.1, Lệnh JMP :
shortlabel : IP ← IP + độ dời (mở rộng dấu 16 bit)
nearlabel : IP ← địa chỉ
farlabel : CS ← địa chỉ segment
IP ← địa chỉ offset
reg16 : IP ← reg16
mem16 : IP ← [địa chỉ +1,địa chỉ]
mem32 : CS ← [địa chỉ +3,địa chỉ+2]
IP ← [địa chỉ +1,địa chỉ]
- Nhảy không điều kiện. Lệnh nhảy không điều ki...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status