Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
256,21 KB
Nội dung
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MƠN TỔ CHỨC MÁY TÍNH Kiến trúc tập lệnh Intel Và số câu lệnh Người hướng dẫn: TS MAI NGỌC THẮNG Người thực hiện: ĐẶNG QUỐC KHANH - 51503183 Lớp : 15050302 Khoá : 19 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2016 TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN TỔ CHỨC MÁY TÍNH Kiến trúc tập lệnh Intel Và số câu lệnh Người hướng dẫn: TS MAI NGỌC THẮNG Người thực hiện: ĐẶNG QUỐC KHANH - 51503183 Lớp : 15050302 Khố : 19 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2016 LỜI CẢM ƠN Để hoàn thành tập em nhận nhiều giúp đỡ nhiều người thời gian qua Trước hết em xin cảm ơn thầy Mai Ngoc Thắng, giảng viên môn tổ chức máy tính hộ trợ em viêc tìm kiếm thơng tin Em cám ơn tác giả chỉa kiến thức quý báo internet để em tham khảo 3 PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận GV hướng dẫn _ Tp Hồ Chí Minh, ngày tháng (kí ghi họ tên) năm Phần đánh giá GV chấm _ Tp Hồ Chí Minh, ngày tháng (kí ghi họ tên) năm TĨM TẮT Kiến trúc tập lệnh giao diện phần cứng phần mềm nhìn trừu tượng phần cứng dựa quan điểm phần mềm Có nhiều loại kiến trúc sử dụng phổ biến kiến trúc tập lệnh intel Kiến trúc có ghi có lệnh assembly dùng để thực phép toán 5 MỤC LỤC LỜI CẢM ƠN ……………………………………….…………… ……… …….… PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN ……….… ….…… … TÓM TẮT … ………………………………………….…….………… ………… MỤC LỤC … ……………………………………………………… ……… …….5 DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT .6 CÁC BẢNG BIỂU, HÌNH VẼ, ĐỊ THỊ CHƯƠNG - SƠ LƯỢC VỀ CÁC THẾ HỆ KIẾN TRÚC TẬP LỆNH INTEL ……… CHƯƠNG -THIẾT KẾ CƠ BẢN CỦA KIẾN TRÚC TẬP LỆNH IA-32 ………… ………………….….….…… ….8 CHƯƠNG - THANH GHI VÀ ĐỊNH ĐỊA CHỈ 3.1 - Thanh ghi 3.1.1 Thanh ghi đa 3.1.2 Thanh ghi đoạn .10 3.1.3 Thanh ghi EFLAGS .10 3.2 Định địa 10 CHƯƠNG - MỘT SỐ CÂU LỆNH CƠ BẢN CỦA IA-32 11 4.1 Lệnh IA - 32 11 4.2 Các kiểu lệnh 11 4.3 Một số câu lệnh 11 4.3.1 Một số câu lệnh kiểu di chuyển liệu 11 4.3.2 Một số câu lệnh kiểu tính tốn số học .12 4.3.3 Các câu lệnh phép toán luận lý 15 4.3.4 Nhóm lệnh điều khiển 17 TÀI LIỆU THAM KHẢO 19 DANH MỤC KÍ HIỆU VÀ CHŨ VIẾT TẮT Chữ viết tắt : reg : register mem : memory :constant Var : variable CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ Hình 2.1 Sơ đồ kiến trúc IA-32 Hình 3.1 Các ghi kiến trúc IA-32 vi xử lý 32 bit Hình 4.1 Quy ước chung cách gọi tên loại ghi CHƯƠNG 1: SƠ LƯỢC VỀ CÁC THẾ HỆ VI XỦ LÝ INTEL - IA-32(hay goi x86 - 32 hay i386) kiến trúc tập lệnh xuất lần vi xử lý Intel 80386 (vi xử lý 32 bit ) tiếp tục sử dụng cho hệ vi xử lý sau học vi xử lý Pentium, Core Các vi xử lý AMD áp dụng kiến trúc IA-32.IA-32 có khả tương thích ngược mở rơng xử lý 64 bit, Intel phát triển kiến trúc IA-32e (hay goi x86-64) dành cho vi xử lý 64 bit - IA-64 (Itanium) kiến trúc tập lệnh Intel phát triển cho họ vi xử lý 64 bit dành cho thị trường máy chủ cao cấp CHƯƠNG 2: THIẾT KẾ CƠ BẢN CỦA KIẾN TRÚC IA-32 Registers Central Processer Unit ALU CU Clock control bus adsress bus Memory Storage Unit I/O device CPU (central process unit ) bao gồm ghi ( registers ) , đơn vị điều khiển (control unit hay CU ) , đơn vị xử lý tính tốn logic ( arithmetic logic unit hay ALU ) clock tín hiệu đồng hóa xử lý cpu CHƯƠNG : THANH GHI VÀ ĐỊNH ĐỊA CHỈ 3.1 Thanh ghi Trong IA - 32 có 16 ghi gồm loại: ghi đa ( general-purpose data registers ) , ghi đoạn (segment registers), ghi trạng thái điều khiển (status and control registers) Hình 3.1 Các ghi kiến trúc IA-32 vi xử lý 32 bit 3.1.1 Thanh ghi đa : có lưu giữ tốn tử cho tính tốn logic số học, tốn hạng để tính địa trỏ đến nhớ : - EAX : chứa toán hạng liệu kết - EBX : ghi địa chỉ, trỏ tới liệu - ECX : ghi đếm Được sủ dụng biến đếm vòng lặp - EDX : trỏ tới hoạt đông nhập xuất sử dụng phép tính số học - ESI : trỏ tới chuỗi phép toán Thanh ghi thường làm việc vơi chuỗi mảng - ESP: ghi stack pointer lun đến đỉnh ngăn xếp - EBP : ghi dùng để truy cập đến liệu ngăn xếp Nhưng khác với ESP không tới đỉnh ngăn xếp 10 - EDI : trỏ tới đích chuỗi phép tốn Thanh ghi thường làm việc với chuổi mảng Các ghi AX,BX,CX,DX có thẻ chia làm phần thấp (low) cao (high) để ghi liệu bit thấp xong ghi bit cao Các ghi có vi xử lý 16 bit 64 bit sử dụng IA-32 Ở vi xử lý 16 bit (sử dụng kiến trúc IA-32) ghi có tên tương tự 32 bit bỏ E đầu Tương tự vi xử lý 64 bit (sử dụng kiến trúc IA-32e ) ta thay E R 3.1.2 Thanh ghi đoạn : có ghi 16 bit - Stack segment (SS) : lưu địa phân đoạn ngăn xếp - Code segment (CS) : lưu địa phân đoạn mã - Data segment (DS) : lưu địa phân đoạn liệu - Extra segment (ES) : lưu địa phân đoạn liệu - F segment (FS) : lưu địa phân đoạn liệu - G segment (GS) : lưu địa phân đoạn liệu 3.1.4 Thanh ghi EFLAGS : Thanh ghi EFLAGS ghi 32 bit chứa cờ dánh dấu nhóm trạng thái, cờ điều khiển cờ hệ thống ( truy cập thơng qua số lệnh đặc biệt ) Cờ có bit giá trị Cờ bật giá trị Có cờ sau: - CF ( Carry Flag) : Cờ bật có phép tính có sử dụng bit nhớ - ZF (Zero Flag) : Cờ bật phép tính bật - SF ( Sign Flag): Cờ bật kết phép tính có dấu - OF ( Overflow Flag) : Bật phép tính gây tràn số - PF ( Parity Flag) : Bật phép tính có chẵn bit - AF ( Auxilary Flag) : Bật phép tính có sử dụng nhớ phụ - IF (Interrupt Flag) : Bật phép xảy ngắt - DF (Direction Flag) : Bật để giảm số tự động làm việc với mảng hat chuổi ký tự 3.1.5 Thanh ghi EIP Thanh ghi EIP ghi cập nhật có lệnh thực ln trỏ đến câu lệnh Thanh ghi bị tác động trực tiếp nên khơng xem toán hạng ghi khác 3.2 Định địa Trật tự xếp bit byte : IA-32 đánh địa theo “ little endian “ , Least Significant bit (LSB) lưu nhớ có địa nhỏ Most Significant bit (MSB) ln lưu nhớ có địa nhỏ Kiểu liệu : byte bit, word 16 bit, double word 32 bit, quad word 64 bit Địa hóa nhớ : có cách 11 - Kiểu nhớ phẳng ( Flat Memory Model) : nhớ đơn lẻ , kết nối với không gian địa Code, data, procedure stack chứa không gian địa nối tiếp từ đến 2^32-1 - Kiểu nhớ phân đoạn ( Segmented Memory Model) : nhớ thể nhóm độc lập đoạn không gian địa Các code, dât thử tuc ngăn xếp lưu tách rời CHƯƠNG : MỘT SỐ CÂU LỆNH CƠ BẢN CỦA IA-32 4.1 Lệnh IA-32 Lệnh IA -32 bao gồm Opcode : xác định công việc cần làm Nguồn tốn hạng ( Source Operands) : nằm trơng ghi, từ nhớ , từ thiết bị nhập xuất Đích tốn hạng ( Destination Operand) : lưu ghi, nhớ, thiết bị nhâp xuất Cú pháp lệnh ia-32 assembly : Opcode,sourse1,[sourse2,]detination 4.2 Các kiểu lệnh : - Di chuyển liệu - Tính tốn số học - Phép toán luận lý - Điều khiển Để dễ xem xét câu lệnh thông dụng IA-32 assembly vơi cú pháp cảu intel Chúng ta tạm sử dụng quy ước sau Thanh ghi 32 bit (EAX, EBX, ECX, EDX, ESI, EDI, ESP, or EBP) Thanh ghi 16 bit (AX, BX, CX, or DX) Thanh ghi bit (AH, BH, CH, DH, AL, BL, CL, or DL) Bất kỳ ghi Địa nhớ (e.g., [eax], [var + 4], or dword ptr [eax+ebx]) Hằng 32 bit Hằng 16 bit Hằng bit Bất kỳ Hình 4.1 4.3 Một số câu lệnh : 4.3.1 Một số câu lệnh kiểu di chuyển liệu : mov : Là lệnh dich chuyển liệu từ nguồn sang đích Tổng qt : mov , Cú pháp : 12 mov , mov , mov , mov , mov , Ví dụ : mov eax,ebx // di chuyển giá trị từ ghi ebx sang eax push : Là lệnh đặt liệu từ nguồn vào ngăn xếp theo thứ tự từ lên Tổng quát : push Cú pháp : push push push Ví dụ : push eax // đặt liệu ghi eax vào đáy ngăn xếp pop : Là lệnh lấy liêu từ xuống ngăn xếp vào đích Tổng qt : push Cú pháp : pop pop Ví dụ : pop edi // lấy liệu đỉnh ngăn xếp di chuyển vào ghi edit lea : Là lệnh lấy địa toán hạng đặt vào toán hang Tổng quát : lea ,< toán hang 2> Cú pháp : lea , Ví dụ : lea eax,[var] // địa var memori đặt vào eax 4.3.2 Một số câu lệnh kiểu tính tốn số học : add : Câu lệnh cộng hai tốn hạng va sau lưu vào tốn hạng Tốn hạng lưu ghi nhớ số Tổng quát : add toán hạng 1, toán hạng Cú pháp : 13 add , add , add , add , add , Ví dụ : add eax,10 // cộng 10 với liệu eax lưu vào eax sub : Câu lệnh trừ tốn hạng cho tốn hạng sau lưu vào nơi chưa tốn hạng Tốn hạng lưu ghi nhớ số Tổng qt : sub tốn hạng , toán hạng Cú pháp : sub , sub , sub , sub , sub , Ví dụ : sub eax,10 // trừ giá trị lưu ghi eax cho 10 lưu vào ghi eax inc,dec : inc lệnh tăng vào tốn hạng, dec ngược lại giảm mơt giá trị toán hạng Cú pháp : inc inc dec Dec Ví dụ : inc eax //cộng vào toán hạng eax dec eax //trừ vào toán hạng eax imul : Lệnh nhân số có dấu , kết số có dấu Tổng qt : imul Cú pháp : 14 imul imul Nếu toán hạng nguồn bit thực nhân EAL với toán hạng nguồn lưu EAX Nếu toán hạng nguồn 16 bit thực nhân EAX với toán hạng nguồn lưu ghi EDX EAX EDX giữ 16 bit cao, EAX giữ 16 bit thấp Ví dụ : mov eax,16 mul mul : Lệnh nhân số nguyên, kết số nguyên Tổng quát : Mul Cú pháp : mul mul Nếu toán hạng nguồn bit thực nhân EAL với toán hạng nguồn lưu EAX Nếu toán hạng nguồn 16 bit thực nhân EAX với toán hạng nguồn lưu ghi EDX EAX EDX giữ 16 bit cao, EAX giữ 16 bit thấp Ví dụ : mov eax,16 mul div : Lệnh chia số nguyên, kết nguyên Số chia lưu ghi eax số bị chia lưu toán hạng Tổng quát : div Số chia lưu ghi EAXsố bị chia lưu toán hạng Thương số lưu EAL , số dư lưu EAH Cú pháp : div div Ví dụ : mov eax,8 mov edx,2 div edx 15 idiv Lệnh chia số không dấu, kết số không dấu Số chia lưu ghi eax số bị chia lưu toán hạng Tổng quát : idiv Số chia lưu ghi EAXsố bị chia lưu toán hạng Thương số lưu EAL , số dư lưu EAH Cú pháp : idiv idiv Ví dụ : mov eax,8 mov edx,2 idiv edx 4.3.3 Các câu lệnh phép toán luận lý : Các lệnhand, or, xor: Các câu lệnh luận lý thực hiên phép toán luận lý xác định toán hạng lưu chúng toán hạng thứ Tổng quát : and , or , xor , Cú pháp : and , and , and , and , and , or , or , or , or , or , xor , xor , xor , xor , xor , Ví dụ : 16 xor edx,edx // xóa giá trị lưu edx not : Nghich đảo giá trị cửa toán hạng Tổng quát : not Cú pháp : not not Ví dụ : not // nghịch đảo bit ghi eax neg : Đổi dấu giá trị cửa toán hạng Tổng quát : neg Cú pháp : neg neg Ví dụ : neg eax // đổi dấu giá trị ghi eax shl,shr : Là lệnh dịch trái (shift left, shl) lệnh dịch phải (shift right, shr) Ở lệnh dãy bit sẻ dịch bên trái ( phải) bit tai trống thay Tổng quát : shl , shr , Cú pháp : shl , shl , shr , shr , Ví dụ: liệu ghi eax 00000000 00000000 01000000 11111111 shl eax,1 // dich trái dãy số eax bit 00000000 00000000 10000001 11111110 shr eax,1 // dich phải dãy số eax bit 00000000 00000000 00100000 01111111 17 4.3.4 Nhóm lệnh điều khiển jmp : Là lệnh nhảy không điều kiện đến vị trí đích Vị trí đích nhãn lệnh, tên thủ tục ghi, ô nhớ (đã định nghĩa) biến đó, giá trị thường địa ô nhớ đoạn Code Có dạng : near, short, far Cơ chế jmp dựa vào việc thay đổi nội dung ghi ip ghi đoạn cs Dạng near short ko thay đổi liệu cs nên vị trí đích phải nằm đoạn nhớ cịn dạng far ngược lại Cú pháp: jmp Lệnh nhảy có điều kiện Có nguyên lý hoạt động giống jmp phải có điều kiện thay đổi cờ hiệu ghi EFLAG cách dung lênh dịch bit, đảo bit, so sánh (cmp) cmp : Cú pháp : Cmp ,< tốn hạng nguồn> Trong ca khơng thể nhớ Tốn hạng đích khơng thể số Lênh so sánh giá trị nội dung hay tốn hạng, trừ tốn hạng đích cho tốn hạng nguồn nhung khơng làm hay đổi giá trị tốn hạn đích mà làm thay đổi trạng thái cờ hiệu trông ghi EFLAG Các lệnh nhảy có điều kiện : Các lệnh nhảy : je (nhảy bằng) jne ( nhảy không bằng) jz ( nhảy kết cuối 0) jg ( nhảy lớn hơn) jge ( nhảy lớn bằng) jl ( nhảy nhỏ ) jle ( nhảy nhỏ bằng) Ví dụ cmp eax, ebx //so sánh liệu eax với ebx jle done // bé nhay tới nhãn done call : Thực chương trình trả Lệnh đặt địa mã chương trình cần thưc vào ngăn xếp thực hiên lệnh 18 jmp đến địa băng nhãn lưu vị trí để trả kết chương trinh Cú pháp : call < label> ret : Lệnh ret thực hiên chế trả chương trình Lệnh lấy địa mã lệnh phần cưng hỗ trợ từ ngăn xếp Sau thực hiên lệnh jmp đến vị chí lệnh vừa lấy Cú pháp : ret loop : Lệnh dùng để thực vòng lặp với số vòng lặp xác định Cú pháp : loop Khi gặp lệnh chạy vịng lặp vị trí nhãn lệnh trở xuống n với n số lưu cx Ví dụ : mov eax,1 mov ecx,10 label : add eax,1 loop label 19 TÀI LIỆU THAM KHẢO A Guide to Programming Intel IA32 PC Architecture, Kai Li, Princeton University, First draft, 1999 Guide to x86 Assembly, Adam Ferrari, Alan Batson, Mike Lack, Anita Jones, David Evans, University of Virginia x86 Assembly/ x86 Architecture, wikibook.com ...1 TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MƠN TỔ CHỨC MÁY TÍNH Kiến trúc tập lệnh Intel Và số câu lệnh Người hướng dẫn:... 10 CHƯƠNG - MỘT SỐ CÂU LỆNH CƠ BẢN CỦA IA-32 11 4.1 Lệnh IA - 32 11 4.2 Các kiểu lệnh 11 4.3 Một số câu lệnh 11 4.3.1 Một số câu lệnh kiểu di chuyển... TẮT Kiến trúc tập lệnh giao diện phần cứng phần mềm nhìn trừu tượng phần cứng dựa quan điểm phần mềm Có nhiều loại kiến trúc sử dụng phổ biến kiến trúc tập lệnh intel Kiến trúc có ghi có lệnh