1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu tìm hiểu về tập lệnh vi xử lý 8086

23 28 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 470,36 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trường ĐH Công Nghiệp Hà Nội Lớp CĐ CNTT1 – K15 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN o0o BÀI TẬP LỚN MÔN KIẾN TRÚC MÁY TÍNH Đề tài Nghiên cứu tìm hiểu về tập lệnh vi xử lý 8086 Giáo viên hướng dẫn T s Nguyễn Thanh Hải Nhóm thực hiện Nhóm 1 Lớp Tin 1 – K 15 Hà Nội 2014 LỜI NÓI ĐẦU Khoa học ngày càng phát triển mạnh mẽ, nhu cầu sử dụng những công nghệ ngày càng cao, yêu cầu độ chính xác và năng suất hoạt động cao Từ yêu cầu đó, con người cần phải sản xuất và ph.

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA: CÔNG NGHỆ THÔNG TIN

-o0o -BÀI TẬP LỚN

MÔN: KIẾN TRÚC MÁY TÍNH

Đề tài:Nghiên cứu tìm hiểu

về tập lệnh vi xử lý 8086

Giáo viên hướng dẫn: T.s Nguyễn Thanh Hải

Nhóm thực hiện: Nhóm 1

Lớp: Tin 1 – K 15

Trang 2

Hà Nội: 2014

LỜI NÓI ĐẦU

Khoa học ngày càng phát triển mạnh mẽ, nhu cầu sử dụng những công nghệ ngày càng cao, yêu cầu độ chính xác và năng suất hoạt động cao Từ yêu cầu đó, con người cần phải sản xuất và phát minh ra những công cụ, sản phẩm ứng dụng và phát triển ngành công ngệ lập trình.

Đi tiên phong thế hệ vi xử lý lập trình theo nhu cầu mong muốn con người, nhà sản xuất chip vi xử lý Intel đã phát triển và chế tạo thành công chip 4004 vào năm

1971 Là bộ vi xử lý 4 bit đầu tiên mở đầu cho kỷ nguyên thế hệ vi xử lý trong máy tính.

Một mốc son quan trọng nhất mà Intel đạt được đó là hãng đã sản xuất ra bộ vi xử

lý mang tên 8086 có độ rộng dữ liệu lên đến 16 bit với 29000 bóng bán dẫn được tích hợp bên trong đây là bộ vi xử lý mở đầu cho họ vi xử lý x86

Bộ vi xử lý 8086 đã mang lại sự bùng nổ công nghệ với sự có mặt trong hầu hết các máy tính ở thời ký này Để hiểu rõ hơn về cấu tạo và cách ghép nối giữa bộ vi

xử lý với các thiết bị ngoại vi, chúng em xin trình bày một số ví dụ cụ thể trong bài báo cáo này.

Trang 3

Nhận xét và đóng góp ý kiến của giáo viên:

Trang 4

Chúng em xin chân thành cảm ơn! Phụ lục: I TỔ CHỨC LỆNH CỦA VI XỬ LÝ 8086……….……….……….…….5

1 Dạng lệnh……… ……… ………….….……5

2 Địa chỉ hiệu dụng……… …5

II CẤU TRÚC BÊN TRONG CỦA VI XỬ LÝ 8086……… … 7

1 Sơ đồ khối……… ………… …… 7

2 Bộ thanh ghi……… ……….9

2.1 Bộ thanh ghi đa dụng……….……… 9

2.2 Bộ thanh đoạn và con trỏ lệnh………9

2.3 Thanh ghi trạng thái……… 10

III CÁC LỆNH THƯỜNG DÙNG CỦA CPU 8086……… … …10

1 Giới thiệu……….….…10

2 Nhóm di chuyển số liệu……… …….11

3 Nhóm lệnh chuyển địa chỉ……… …….12

4 Nhóm lệnh chuyển cờ hiệu (thanh ghi trạng thái)……….……… ….12

5 Nhóm lệnh vào ra ngoại vi……… 12

6 Nhóm lệnh điều khiển……… 13

7 Nhóm lệnh so sánh……… … 14

8 Nhóm lệnh vòng lặp……….………14

9 Nhóm lệnh gọi chương trình con……… ………15

10 Nhóm lệnh tính toán số học……….……… 16

11 Nhóm lệnh dịch chuyển và quay……….……… 18

12 Nhóm lệnh logic……….….20

13 Nhóm lệnh xử lý chuỗi……….… 21

Trang 5

14 Các lệnh khác……….23

I TỔ CHỨC LỆNH CỦA VI XỬ LÝ 8086 :

1 Dạng lệnh :

- Một lệnh của vi xử lý 86 có dạng tổng quát như sau :

<Mã gợi nhớ><Toán hạng đích>,<Toán hạng nguồn>

- Mã gợi nhớ giúp cho người sử dụng biết hoạt động của lệnh Mã gợi nhớ thường là cácchữ tiếng anh viết tắt như : MOV là lệnh chuyển, ADD là lệnh cộng, AND là lệnh và luận

lý, JMP là lệnh nhảy

- Toán hạng đích giữ kết quả (nếu có yêu cầu) sau khi thi hành lệnh Toán hạng đích cóthể là thanh ghi hay bộ nhớ

- Toán hạng nguồn có thể là thanh ghi, bộ nhớ hay một số tức thời

- Toán hạng thanh ghi là các thanh ghi của vi xử lý 86 gồm các thanh ghi tổng quát (8 bitlẫn 16 bit) và các thanh ghi đoạn đã biết

- Toán hạng số tức thời có thể là số trong các hệ đếm khác nhau và được viết theo quiđịnh như sau :

- Địa chỉ hiệu dụng là tổ hợp của 3 nhóm sau được đặt trong dấu ngoặc vuông [ ]:

Nhóm thanh ghi chỉ số : SI, DI

Nhóm thanh ghi nền : BX, BP

Trang 6

Địa chỉ trực tiếp : số 16 bit

- Các thanh ghi trong cùng một nhóm không được xuất hiện trong cùng một địa chỉ hiệudụng

- Ví dụ :

- Địa chỉ hiệu dụng hợp lệ :

[1000h], [SI], [DI], [BX], [BP]

[SI+BX], [SI+BP], [DI+BX], [DI+BP], [SI+1000h], [DI+100h], [BX+1], [BP+1]

[SI][BX][1000h], [SI+ BP+1000h], [DI+BX][1000h], [DI+1000h][BP]

- Địa chỉ hiệu dụng không hợp lệ :

[70000], [AX], [SI+DI+1000h], [BX][BP]

- Địa chỉ hiệu dụng chính là thành phần offset của địa chỉ luận lý bộ nhớ

- Segment của địa chỉ hiệu dụng được mặc định như sau :

- Nếu không sử dụng BP trong địa chỉ hiệu dụng thì mặc định theo thanh ghi DS

- Nếu có BP trong địa chỉ hiệu dụng thì mặc định theo thanh ghi SS

- Các hoạt động thực hiện trên bộ nhớ thông qua địa chỉ hiệu dụng chia ra làm 2 trườnghợp : hoạt động 8 bit và hoạt động 16 bit

- Hoạt động bộ nhớ 8 bit làm việc trên 1 byte bộ nhớ ngay vị trí chỉ ra bởi địa chỉ hiệudụng

- Hoạt động bộ nhớ 16 bit sẽ làm việc trên 2 byte bộ nhớ có địa chỉ kế tiếp nhau và nộidung của chúng được ghép lại thành dữ liệu 16 bit theo qui tắc "byte cao địa chỉ cao, bytethấp địa chỉ thấp" như trong hình sau :

- Để thuận tiện trong vấn đề giải thích lệnh, ta qui ước thêm cách diễn tả sau :

- Dữ liệu 8 bit của bộ nhớ : [địa chỉ ]

- Dữ liệu 16 bit của bộ nhớ : [địa chỉ +1,địa chỉ]

Trang 7

- Để xác định rõ hoạt động của bộ nhớ, ta phải dùng thêm toán tử PTR như sau :

- Hoạt động 8 bit : BYTE PTR [1000h] là tham khảo 1 byte bộ nhớ có địa chỉ 1000h

- Hoạt động 16 bit : WORD PTR [1000h] là tham khảo đến 2 byte bộ nhớliên tiếp 1000h

và 1001h

II CẤU TRÚC BÊN TRONG CỦA VI XỬ LÝ 8086

1 Sơ đồ khối :

- Các phép toán xử lý bên trong CPU là phép toán thực hiện trên số nhị phân 8 và 16 bit

- Tuyến địa chỉ có 20 đường nên có thể quản lý lên đến 1 MB bộ nhớ (tầm địa chỉ từ00000h đến FFFFFh)

Sơ đồ khối tập lênh 8086Cho phép sử dụng hệ thống ngắt quãng và cơ chế DMA (Direct Memory Access)

- Sơ đồ khối vi xử lý 8086 gồm hai phần chính : khối giao tiếp Bus (BIU:Bus interfaceunit) và khối thực thi (EU:Execution unit)

- Khối BIU chịu trách nhiệm lấy lệnh và giao tiếp ra bên ngoài để điều khiển bộ nhớ vàxuất nhập

Trang 8

- Khối EU có nhiệm vụ thi hành lệnh, định thì, kiểm tra các tín hiệu trạng thái, các tínhiệu yêu cầu ngắt quãng, cơ chế DMA, tín hiệu RESET, tín hiệu READY.

- Các lệnh trong bộ nhớ được khối BIU lấy vào liên tục và cất trong đuôi lệnh (có chiềudài 6 byte đối với 8086) Sau đó khối EU lấy lệnh từ đuôi lệnh ra để giải mã và thi hành

- Hoạt động của hai khối BIU và EU diễn ra độc lập với nhau nên quá trình lấy lệnh vàthi hành lệnh được vi xử lý thực hiện đồng thời theo cơ cấu đường ống (pipeline) Điềunày tuy không làm tăng tốc độ xử lý của CPU (giới hạn bởi tần số xung đồng bộ) nhưnglàm giảm bớt thời gian thi hành của cả chương trình

- Hình sau minh họa về sự phân phối thời gian cho hai quá trình lấy lệnh và thi hành lệnhcủa CPU bình thường và của CPU dùng cơ cấu đường ống

- Tuyến địa chỉ dữ liệu dùng chung AD15 ÷ AD0 cần có tín hiệu điều khiển ALE để phânbiệt lúc nào là địa chỉ lúc nào là dữ liệu Chỉ khi ALE = 1, tín hiệu trên tuyến chung đượcxem là địa chỉ Trường hợp còn lại xem là tuyến dữ liệu

- Thường thì phải nhờ một mạch cài địa chỉ và một mạch đệm 2 chiều để tách tuyếnchung ra thành hai tuyến phân biệt

Trang 9

2 Bộ thanh ghi :

2.1 Bộ thanh ghi đa dụng :

- Gồm 8 thanh ghi 16 bit

- Các thanh ghi AX, BX, CX, DX có thể dùng

phân nửa như các thanh ghi 8 bit AH, AL, BH,

BL, CH, CL, DH, DL

- Thanh ghi AH là nửa cao của thanh ghi AX

Thanh ghi AL là nửa thấp của thanh ghi AX

Chẳng hạn nếu AX= 1234h thì AH=12h và

AL=34h

- AX là thanh ghi bộ tích lũy 16 bit (ACC)

- AL là thanh ghi bộ tích lũy 8 bit

- BX là thanh ghi nền (base register)

- CX là thanh ghi bộ đếm (counter)

- DX là thanh ghi dữ liệu (data)

- SI là thanh ghi chỉ số nguồn (source index)

- DI là thanh ghi chỉ số đích (destination index)

- BP là thanh ghi con trỏ nền (base pointer)

- SP là thanh ghi con trỏ chồng (stack pointer)

2.2 Bộ thanh đoạn và con trỏ lệnh :

- Gồm 4 thanh ghi đoạn 16 bit dùng để quản lý bộ

nhớ theo phương pháp phân đoạn

Trang 10

- CS là thanh ghi đoạn chương trình (code segment).

- DS là thanh ghi đoạn dữ liệu (data segment)

- SS là thanh ghi đoạn chồng (stack segment)

- ES là thanh ghi đoạn mở rộng (extra segment)

- IP là thanh ghi con trỏ lệnh (instruction pointer)

2.3 Thanh ghi trạng thái :

- SF là cờ dấu (sign flag)

- CF là cờ nhớ (carry flag)

- ZF là cờ không (zero flag)

- OF là cờ tràn (overflow flag)

- AF là cờ trung gian (auxiliary flag) hay còn gọi là cờ nhớ nửa (half-carry flag)

AF = 0 khi không có sự tràn về dung lượng 4 bit

AF = 1 khi có sự tràn về dung lượng 4 bit

Ví dụ : phép toán 00001001 + 00000111 = 00010000 sẽ lập cờ AF lên 1.

- Cờ AF thường được dùng trong các phép toán BCD (là các số dùng hệ nhị phân 4bit để biểu diễn số thập phân từ 0 ÷ 9)

- PF là cờ kiểm tra chẳn lẻ (parity flag)

PF = 1 nếu số bit 1 của kết quả là số chẳn

PF = 0 nếu số bit 1 của kết quả là số lẻ

Ví dụ : sau khi thực hiện (00000101 AND 00000101) thì PF = 1

- DF là cờ định hướng (direction flag)

DF = 0 : định hướng giảm địa chỉ cho các lệnh xử lý chuỗi

DF = 1 : định hướng tăng địa chỉ cho các lệnh xử lý chuỗi

- IF là cờ ngắt quãng (interrupt enable flag)

IF = 0 : cấm ngắt cứng INTR

IF = 1 : cho phép ngắt cứng INTR

Trang 11

- TF là cờ bẫy (trap flag) Dùng để chạy từng bước khi cần kiểm tra hoạt động của CPU.

III CÁC LỆNH THƯỜNG DÙNG CỦA CPU 8086

1 Giới thiệu

Bộ xử lý 8086 có tập lệnh gồm 111 lệnh, chiều dài của lệnh từ 1 byte đến vàibyte

Tập lệnh của bộ xử lý Intel ngày càng có nhiều lệnh mạnh và phức tạp Bộ xử lý Intel

80386 có 206 lệnh, các lệnh có chiều dài từ 1 đến 15 byte, một số lệnh cần 1000 chu kỳxung nhịp để thực hiện

Sau đây chúng ta chỉ đề cập một số lệnh thường dùng của CPU 8086 Tập lệnh đầy đủcủa bộ xử lý 8086 được nêu ở phụ lục Tập lệnh của bộ xử lý 80386 và Pentium không đềcập trong giáo trình này vì quá phức tạp

Chúng ta dùng các qui ước sau:

- Reg (register): Thanh ghi

- Reg8, Reg16: Thanh ghi 8 bit, 16 bit

- Mem (memory): Ô nhớ

- Mem8, Mem16: Ô nhớ 8 bit, 16 bit

- Immed (immediate): Tức thì

- Immed8, Immed16: Toán hạng tức thì 8 bit, 16 bit

- Segreg (segment register): Thanh ghi đoạn

2 Nhóm di chuyển số liệu

- MOV (move): Di chuyển.

MOV đích, nguồn Lệnh này di chuyển số liệu từ nguồn sang đích Nguồn có thể là Reg,

Mem, Immed; đích có thể là Reg, Mem

- PUSH (push): đẩy vào.

PUSH nguồn

Nguồn có thể là Reg16, Mem16

Lệnh PUSH là giảm con trỏ ngăn xếp SP xuống 2 đơn vị

- POP (pop: lấy, di chuyển): lấy dữ liệu ra từ ngăn xếp.

POP đích

Đích có thể là Reg16, Mem16

Trang 12

Lệnh POP là tăng con trỏ ngăn xếp SP xuống 2 đơn vị.

Ví dụ: POP BX

Lệnh trên thực hiện chuyển nội dung 2 byte ô nhớ mà SP trỏ tới để đưa vào BX, byte cóđịa chỉ thấp đưa vào BL, byte có địa chỉ cao đưa vào BH, đồng thời con trỏ SP tăng 2 đơnvị

Ghi chú: Qua 2 lệnh PUSH và POP, ta thấy ngăn xếp ô nhớ đi từ ô nhớ có địachỉ cao,

đến ô nhớ có địa chỉ thấp, nghĩa là số liệu đưa vào ngăn xếp trước thì địa chỉcao, số liệuđưa và ngăn xếp sau thì ở địa chỉ thấp hơn

3 Nhóm lệnh chuyển địa chỉ

- LEA (load effective address): nạp địa chỉ hiệu dụng

LEA Reg16, Mem16

Chuyển độ dời của ô nhớ Mem16 vào thang ghi Reg16

Ví dụ: LEA DX, StringVar

Lệnh trên thực hiện chuyển độ dời của biến StringVar vào thanh ghi DX Ta cũng có thể

viết (MASM): MOV DX, offset StringVar tương đương lệnh trên

4 Nhóm lệnh chuyển cờ hiệu (thanh ghi trạng thái)

- PUSHF (push flag): lưu giữ cờ.

PUSHF (không có đối)

Đây là lệnh lưu giữ thanh ghi cờ vào ngăn xếp

- POPF (pop flag): lấy cờ ra.

POPF (không có đối)

Ví dụ: Để đưa nội dung của thanh ghi cờ vào thanh ghi AX ta làm như sau:

PUSHF

POP AX

Đây là lệnh lấy 2 byte từ ngăn xếp đưa vào thanh ghi cờ

5 Nhóm lệnh vào ra ngoại vi

- IN (in: vào): lấy số liệu từ ngoại vi.

IN AL, địa chỉ cổng 8bit

Đây là lệnh đưa số liệu lưu giữ ở ô nhớ đệm ngã ra của cổng vào thanhghi AL

Trang 13

Nếu địa chỉ của cổng là 16bit thì phải đưa địa chỉ của cổng này vào thanh ghi DX trướckhi sử dụng lệnh IN.

Ví dụ:

IN AL, 3FH ;3FH là địa chỉ của cổng 8bit

MOV DX, 3F8H ;3F8H là địa chỉ cổng 16 bit

IN AL, DX

- OUT (out: ra): đưa số liệu ra ngoại vi

OUT địa chỉ cổng 8bit, AL

MOV DX, địa chỉ cổng 16 bit

Dùng để nhảy ra khỏi đoạn CS hiện tại

- Lệnh nhảy có điều kiện: Lệnh này kiểm tra điều kiện trước khi nhảy

Nếu điều kiện đúng thì nhảy tới đích, ngược lại thi hành lệnh kế đó mộtcách bình thường

- JA (jump if above: nhảy nếu lớn hơn) Nếu 2 cờ CF=ZF=0 thì nhảy đếnđích.

- JB (jump if below: nhảy nếu nhỏ hơn) Nếu cờ CF=1 thì nhảy đến đích.

Trang 14

- JZ (jump if zero: nhảy nếu bằng 0) Nếu cờ ZF=1 (phép toán trước đóbằng 0 hoặc so

Nếu trái > phải thì ZF = 0 và CF =0

Nếu trái = phải thì ZF = 1 và CF =0

Nếu trái < phải thì ZF = 0 và CF =1

Trang 15

9 Nhóm lệnh gọi chương trình con

- CALL (call: gọi): lệnh gọi chương trình con.

CALL Nhản (hoặc tên chương trình con)

Lệnh gọi chương trình con là một lệnh đặc biệt vì trước khi nhảy tới nhãn thì CPU tựđộng lưu địa chỉ trở về (là địa chỉ sau lệnh CALL) vào ngăn xếp

- RET (return: trở về) Lệnh kết thúc chương trình con.

Khi gặp lệnh này thì CPU 8086 lấy địa chỉ trở về ở ngăn xếp để tiếp tục thi hành lệnh ởchương trình chính

Ví dụ: Chương trình sau sử dụng Macro, Procedure

Trang 16

ret

P2 Endp

malenh1 ends

malenh2 segment

malenh group malenh1, malenh2

assume cs: malenh, ds: dulieu

batdau: mov ax, dulieu

mov ds, ax ;khoi dong

lea dx, thongbao ; in thong bao nhap chuoi

mov ah, 09h

int 21h

inchu ;goi macro

call pinchu ;goi ctrinh con

call p2 ;goi ctrinh con

Trang 17

Đích là Reg, Mem; nguồn là Reg, Mem hoặc Immed.

INC AL ;Sau 2 lệnh này AL = 3

- SUB (subtract: trừ ra): lấy đích trừ nguồn và kết quả lưu ở đích.

DEC AL ;Sau 2 lệnh này AL = 1

- MUL (multiplication: phép nhân): nhân số không dấu.

MUL nguồn

Nguồn là Reg, Mem Lệnh này lấy thanh ghi tích luỹ (AX) nhân chonguồn

Nếu nguồn 8bit thì số này được nhân AL và kết quả đặt trong AX

Trang 18

Nếu nguồn là 16 bit, số này được nhân với AX và kết quả để trong

DX:AX (DX:AX là một số 32 bit, 16 bit cao trong DX và 16 bit thấp trong AX)

Ví dụ:

MOV AL, 9

MOV BL, 2

MUL BL

(Sau 3 lệnh này AL có giá trị bằng 18)

- DIV (division: phép chia): chia số không dấu.

DIV nguồn

Nguồn là Reg, Mem Lệnh này lấy thanh ghi tích lũy (AX) chia cho nguồn

Nếu nguồn 8bit thì lấy AX chia cho nguồn, kết quả đặt trong AL và sốdư đặt trong AH.Nếu nguồn là 16 bit thì lấy DX:AX chia cho nguồn Thương số đặt trong AX, số dư đặttrong DX

- SHL (logical shift left): dịch trái logic.

SHL đích, 1 ; dịch trái toán hạng đích 1 bit (dịch từ 2 bit trở lên

phải đặt số lần dịch trong CL)

SHL đích, CL ; dịch trái toán hạng số bit bằng nội dung của CL

Trong hình trên, giả sử toán hạng đích là 8bit thì lệnh SHL đích, 1 làm bít thứ 7 dịch sangbit CF (cờ), bít 6 chuyển sang bit7, bít5 sang bit6,… bit0 qua bit1 và số 0 vào bit0

- SHR (logical shift right): dịch phải logic.

Trang 19

Lệnh này giống như SHL nhưng bây giờ dịch phải

Trong hình trên, giả sử toán hạng đích là 8bit thì lệnh SHR đích, 1 làm 0 vào bít7, bit7sang bít 6,… bit0 dịch sang bit CF (cờ)

- SAL (shift arithmetic left): dịch trái số học.

Giống như lệnh SHL nhưng bit0 được giữ nguyên

- SAR (shift arithmetic right): dịch phải số học.

Giống như lệnh SHL nhưng bit cao nhất được giữ nguyên

- ROL (rotate left): quay vòng sang trái.

ROL đích, 1 ; quay vòng sang trái toán hạng đích 1 bit (quay vòng sang trái từ 2 bit trởlên phải đặt số lần dịch trong CL)

ROL đích, CL ; dịch trái toán hạng số bit bằng nội dung của CL

- ROR (rotate right): quay vòng sang phải (giống như quay vòng sang trái nhưng bây giờ

sang phải)

ROR đích, 1

ROL đích, CL

- RCL (rotate through carry left): quay vòng qua bit số giữ sang trái, giống như lệnh ROL

nhưng có sự tham gia của bit số giữ

Ngày đăng: 08/04/2022, 22:13

HÌNH ẢNH LIÊN QUAN

- Hình sau minh họa về sự phân phối thời gian cho hai quá trình lấy lệnh và thi hành lệnh của CPU bình thường và của CPU dùng cơ cấu đường ống. - Nghiên cứu tìm hiểu về tập lệnh vi xử lý 8086
Hình sau minh họa về sự phân phối thời gian cho hai quá trình lấy lệnh và thi hành lệnh của CPU bình thường và của CPU dùng cơ cấu đường ống (Trang 8)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w