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

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

Đ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

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.

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 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 Lớp: Tin – K 15 Bài tập lớn môn kiến trúc máy tính – Nhóm Page1 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Hà Nội: 2014 LỜI NÓI ĐẦU Khoa học ngày phát triển mạnh mẽ, nhu cầu sử dụng công nghệ ngày cao, yêu cầu độ xác suất hoạt động cao Từ yêu cầu đó, người cần phải sản xuất phát minh công cụ, sản phẩm ứng dụng phát triển ngành công ngệ lập trình Đi tiên phong hệ vi xử lý lập trình theo nhu cầu mong muốn người, nhà sản xuất chip vi xử lý Intel phát triển chế tạo thành công chip 4004 vào năm 1971 Là vi xử lý bit mở đầu cho kỷ nguyên hệ vi xử lý máy tính Một mốc son quan trọng mà Intel đạt hãng sản xuất vi xử lý mang tên 8086 có độ rộng liệu lên đến 16 bit với 29000 bóng bán dẫn tích hợp bên vi xử lý mở đầu cho họ vi xử lý x86 Bộ vi xử lý 8086 mang lại bùng nổ cơng nghệ với có mặt hầu hết máy tính thời ký Để hiểu rõ cấu tạo cách ghép nối vi xử lý với thiết bị ngoại vi, chúng em xin trình bày số ví dụ cụ thể báo cáo Bài tập lớn môn kiến trúc máy tính – Nhóm Page2 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Nhận xét đóng góp ý kiến giáo viên: Bài tập lớn môn kiến trúc máy tính – Nhóm Page3 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 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 Dạng lệnh……………………………………… ……………… ………….….……5 Địa hiệu dụng………………………………………………………………… …5 II CẤU TRÚC BÊN TRONG CỦA VI XỬ LÝ 8086………………………… … Sơ đồ khối………………………………………………………… ………… …… Bộ ghi………………………………………………………………… ……….9 2.1 Bộ ghi đa dụng………………………………………………….…………… 2.2 Bộ đoạn 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 Giới thiệu……………………………………………………………………….….…10 Nhóm di chuyển số liệu……………………………………………………… …….11 Nhóm lệnh chuyển địa chỉ…………………………………………………… …….12 Nhóm lệnh chuyển cờ hiệu (thanh ghi trạng thái)…………………….……… ….12 Nhóm lệnh vào ngoại vi………………………………………………………… 12 Nhóm lệnh điều khiển……………………………………………………………… 13 Nhóm lệnh so sánh…………………………………………………………… … 14 Nhóm lệnh vịng lặp………………………………………………….………………14 Nhóm lệnh gọi chương trình con………………………………………… ………15 10 Nhóm lệnh tính tốn số học………………………………………….…………… 16 11 Nhóm lệnh dịch chuyển quay………………………………………….……… 18 12 Nhóm lệnh logic………………………………………………………………….….20 13 Nhóm lệnh xử lý chuỗi………………………………………………………….… 21 Bài tập lớn mơn kiến trúc máy tính – Nhóm Page4 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 14 Các lệnh khác……………………………………………………………………….23 I TỔ CHỨC LỆNH CỦA VI XỬ LÝ 8086 : Dạng lệnh : - Một lệnh vi xử lý 86 có dạng tổng quát sau : , - Mã gợi nhớ giúp cho người sử dụng biết hoạt động lệnh Mã gợi nhớ thường chữ tiếng anh viết tắt : MOV lệnh chuyển, ADD lệnh cộng, AND lệnh luận lý, JMP lệnh nhảy - Tốn hạng đích giữ kết (nếu có u cầu) sau thi hành lệnh Tốn hạng đích ghi hay nhớ - Tốn hạng nguồn ghi, nhớ hay số tức thời - Toán hạng ghi ghi vi xử lý 86 gồm ghi tổng quát (8 bit lẫn 16 bit) ghi đoạn biết - Toán hạng số tức thời số hệ đếm khác viết theo qui định sau : Số hệ : ××××××××B (× bit nhị phân) Ví dụ : 01101101B, 11111111B Số hệ 10 : ××××× , hay ×××××D (× số thuộc hệ 10) Ví dụ : 65535, 1000 Số hệ 16 : ××××H bắt đầu số ( số thuộc hệ 16) Ví dụ : 1A59H, 0E05BH - Toán hạng nhớ dùng tập lệnh vi xử lý 86 sử dụng phương pháp định địa tổng hợp gọi địa hiệu dụng Địa hiệu dụng : - Địa hiệu dụng tổ hợp nhóm sau đặt dấu ngoặc vuông [ ]: Nhóm ghi số : SI, DI Nhóm ghi : BX, BP Bài tập lớn môn kiến trúc máy tính – Nhóm Page5 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Địa trực tiếp : số 16 bit - Các ghi nhóm khơng xuất địa hiệu dụng - Ví dụ : - Địa 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 hiệu dụng không hợp lệ : [70000], [AX], [SI+DI+1000h], [BX][BP] - Địa hiệu dụng thành phần offset địa luận lý nhớ - Segment địa hiệu dụng mặc định sau : - Nếu không sử dụng BP địa hiệu dụng mặc định theo ghi DS - Nếu có BP địa hiệu dụng mặc định theo ghi SS - Các hoạt động thực nhớ thông qua địa hiệu dụng chia làm trường hợp : hoạt động bit hoạt động 16 bit - Hoạt động nhớ bit làm việc byte nhớ vị trí địa hiệu dụng - Hoạt động nhớ 16 bit làm việc byte nhớ có địa nội dung chúng ghép lại thành liệu 16 bit theo qui tắc "byte cao địa cao, byte thấp địa thấp" hình sau : - Để thuận tiện vấn đề giải thích lệnh, ta qui ước thêm cách diễn tả sau : - Dữ liệu bit nhớ : [địa ] - Dữ liệu 16 bit nhớ : [địa +1,địa chỉ] Bài tập lớn môn kiến trúc máy tính – Nhóm Page6 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 - Để xác định rõ hoạt động nhớ, ta phải dùng thêm toán tử PTR sau : - Hoạt động bit : BYTE PTR [1000h] tham khảo byte nhớ có địa 1000h - Hoạt động 16 bit : WORD PTR [1000h] tham khảo đến byte nhớliên tiếp 1000h 1001h II CẤU TRÚC BÊN TRONG CỦA VI XỬ LÝ 8086 Sơ đồ khối : - Các phép toán xử lý bên CPU phép toán thực số nhị phân 16 bit - Tuyến địa có 20 đường nên quản lý lên đến MB nhớ (tầm địa từ 00000h đến FFFFFh) Sơ đồ khối tập lênh 8086 Cho phép sử dụng hệ thống ngắt quãng chế DMA (Direct Memory Access) - Sơ đồ khối vi xử lý 8086 gồm hai phần : khối giao tiếp Bus (BIU:Bus interface unit) khối thực thi (EU:Execution unit) - Khối BIU chịu trách nhiệm lấy lệnh giao tiếp bên để điều khiển nhớ xuất nhập Bài tập lớn mơn kiến trúc máy tính – Nhóm Page7 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 - Khối EU có nhiệm vụ thi hành lệnh, định thì, kiểm tra tín hiệu trạng thái, tín hiệu yêu cầu ngắt quãng, chế DMA, tín hiệu RESET, tín hiệu READY - Các lệnh nhớ khối BIU lấy vào liên tục cất lệnh (có chiều dài byte 8086) Sau khối EU lấy lệnh từ đuôi lệnh để giải mã thi hành - Hoạt động hai khối BIU EU diễn độc lập với nên trình lấy lệnh thi hành lệnh vi xử lý thực đồng thời theo cấu đường ống (pipeline) Điều không làm tăng tốc độ xử lý CPU (giới hạn tần số xung đồng bộ) làm giảm bớt thời gian thi hành chương trình - Hình sau minh họa phân phối thời gian cho hai trình lấy lệnh thi hành lệnh CPU bình thường CPU dùng cấu đường ống - Tuyến địa liệu dùng chung AD15 ÷ AD0 cần có tín hiệu điều khiển ALE để phân biệt lúc địa lúc liệu Chỉ ALE = 1, tín hiệu tuyến chung xem địa Trường hợp cịn lại xem tuyến liệu - Thường phải nhờ mạch cài địa mạch đệm chiều để tách tuyến chung thành hai tuyến phân biệt Bài tập lớn môn kiến trúc máy tính – Nhóm Page8 Trường ĐH Cơng Nghiệp Hà Nội Bộ ghi : 2.1 Bộ ghi đa dụng : - Gồm ghi 16 bit - Các ghi AX, BX, CX, DX dùng phân nửa ghi bit AH, AL, BH, BL, CH, CL, DH, DL - Thanh ghi AH nửa cao ghi AX Thanh ghi AL nửa thấp ghi AX Chẳng hạn AX= 1234h AH=12h AL=34h - AX ghi tích lũy 16 bit (ACC) - AL ghi tích lũy bit - BX ghi (base register) - CX ghi đếm (counter) - DX ghi liệu (data) - SI ghi số nguồn (source index) - DI ghi số đích (destination index) - BP ghi trỏ (base pointer) - SP ghi trỏ chồng (stack pointer) 2.2 Bộ đoạn trỏ lệnh : - Gồm ghi đoạn 16 bit dùng để quản lý nhớ theo phương pháp phân đoạn Bài tập lớn mơn kiến trúc máy tính – Nhóm Page9 Lớp: CĐ CNTT1 – K15 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 - CS ghi đoạn chương trình (code segment) - DS ghi đoạn liệu (data segment) - SS ghi đoạn chồng (stack segment) - ES ghi đoạn mở rộng (extra segment) - IP ghi trỏ lệnh (instruction pointer) 2.3 Thanh ghi trạng thái : - SF cờ dấu (sign flag) - CF cờ nhớ (carry flag) - ZF cờ không (zero flag) - OF cờ tràn (overflow flag) - AF cờ trung gian (auxiliary flag) hay gọi cờ nhớ nửa (half-carry flag) AF = khơng có tràn dung lượng bit AF = có tràn dung lượng bit Ví dụ : phép tốn 00001001 + 00000111 = 00010000 lập cờ AF lên - Cờ AF thường dùng phép toán BCD (là số dùng hệ nhị phân bit để biểu diễn số thập phân từ ÷ 9) - PF cờ kiểm tra chẳn lẻ (parity flag) PF = số bit kết số chẳn PF = số bit kết số lẻ Ví dụ : sau thực (00000101 AND 00000101) PF = - DF cờ định hướng (direction flag) DF = : định hướng giảm địa cho lệnh xử lý chuỗi DF = : định hướng tăng địa cho lệnh xử lý chuỗi - IF cờ ngắt quãng (interrupt enable flag) IF = : cấm ngắt cứng INTR IF = : cho phép ngắt cứng INTR Bài tập lớn môn kiến trúc máy tính – Nhóm Page10 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 - TF cờ bẫy (trap flag) Dùng để chạy bước cần kiểm tra hoạt động CPU III CÁC LỆNH THƯỜNG DÙNG CỦA CPU 8086 Giới thiệu Bộ xử lý 8086 có tập lệnh gồm 111 lệnh, chiều dài lệnh từ byte đến vàibyte Tập lệnh xử lý Intel ngày có nhiều lệnh mạnh phức tạp Bộ xử lý Intel 80386 có 206 lệnh, lệnh có chiều dài từ đến 15 byte, số lệnh cần 1000 chu kỳ xung nhịp để thực Sau đề cập số lệnh thường dùng CPU 8086 Tập lệnh đầy đủ xử lý 8086 nêu phụ lục Tập lệnh xử lý 80386 Pentium khơng đề cập giáo trình q phức tạp Chúng ta dùng qui ước sau: - Reg (register): Thanh ghi - Reg8, Reg16: Thanh ghi bit, 16 bit - Mem (memory): Ô nhớ - Mem8, Mem16: Ô nhớ bit, 16 bit - Immed (immediate): Tức - Immed8, Immed16: Tốn hạng tức bit, 16 bit - Segreg (segment register): Thanh ghi đoạn Nhóm di chuyển số liệu - MOV (move): Di chuyển MOV đích, nguồn Lệnh di chuyển số liệu từ nguồn sang đích Nguồn Reg, Mem, Immed; đích Reg, Mem - PUSH (push): đẩy vào PUSH nguồn Nguồn Reg16, Mem16 Lệnh PUSH giảm trỏ ngăn xếp SP xuống đơn vị - POP (pop: lấy, di chuyển): lấy liệu từ ngăn xếp POP đích Đích Reg16, Mem16 Bài tập lớn môn kiến trúc máy tính – Nhóm Page11 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Lệnh POP tăng trỏ ngăn xếp SP xuống đơn vị Ví dụ: POP BX Lệnh thực chuyển nội dung byte ô nhớ mà SP trỏ tới để đưa vào BX, byte có địa thấp đưa vào BL, byte có địa cao đưa vào BH, đồng thời trỏ SP tăng đơn vị Ghi chú: Qua lệnh PUSH POP, ta thấy ngăn xếp ô nhớ từ nhớ có địachỉ cao, đến nhớ có địa thấp, nghĩa số liệu đưa vào ngăn xếp trước địa chỉcao, số liệu đưa ngăn xếp sau địa thấp Nhóm lệnh chuyển địa - LEA (load effective address): nạp địa hiệu dụng LEA Reg16, Mem16 Chuyển độ dời ô nhớ Mem16 vào thang ghi Reg16 Ví dụ: LEA DX, StringVar Lệnh thực chuyển độ dời biến StringVar vào ghi DX Ta viết (MASM): MOV DX, offset StringVar tương đương lệnh 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ệnh lưu giữ ghi cờ vào ngăn xếp - POPF (pop flag): lấy cờ POPF (khơng có đối) Ví dụ: Để đưa nội dung ghi cờ vào ghi AX ta làm sau: PUSHF POP AX Đây lệnh lấy byte từ ngăn xếp đưa vào ghi cờ Nhóm lệnh vào ngoại vi - IN (in: vào): lấy số liệu từ ngoại vi IN AL, địa cổng 8bit Đây lệnh đưa số liệu lưu giữ ô nhớ đệm ngã cổng vào thanhghi AL Bài tập lớn môn kiến trúc máy tính – Nhóm Page12 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Nếu địa cổng 16bit phải đưa địa cổng vào ghi DX trước sử dụng lệnh IN Ví dụ: IN AL, 3FH ;3FH địa cổng 8bit MOV DX, 3F8H ;3F8H địa cổng 16 bit IN AL, DX - OUT (out: ra): đưa số liệu ngoại vi OUT địa cổng 8bit, AL MOV DX, địa cổng 16 bit OUT DX, AL Nhóm lệnh điều khiển - JMP (jump: nhảy): lệnh nhảy vô điều kiện đến địa chỉkhác - JMP đích Nhảy đến địa đánh dấu nhãn hay số ám chỉđộ dời Nhãn nằm đoạn CS Tuỳ theo khoảng cách đích đến lệnh JMP mà ta có kiểu lệnh JMP near đích Lệnh (cịn viết: JMP đích) nhảy đến đoạn nằm CS JMP short đích Dùng để nhảy đến địa khoảng –128 đến +127 tính từ lệnh JMP JMP far đích Dùng để nhảy khỏi đoạn CS - Lệnh nhảy có điều kiện: Lệnh kiểm tra điều kiện trước nhảy Nếu điều kiện 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 lớn hơn) Nếu cờ CF=ZF=0 nhảy đếnđích - JB (jump if below: nhảy nhỏ hơn) Nếu cờ CF=1 nhảy đến đích Bài tập lớn mơn kiến trúc máy tính – Nhóm Page13 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 - JZ (jump if zero: nhảy 0) Nếu cờ ZF=1 (phép tốn trước đóbằng so sánh nhau) nhảy - JNZ (jump if not zero: nhảy khác 0) Nếu cờ ZF=0 (phép toántrước khác so sánh khác nhau) nhảy Nhóm lệnh so sánh - Lệnh CMP - CMP trái, phải Nếu trái > phải ZF = CF =0 Nếu trái = phải ZF = CF =0 Nếu trái < phải ZF = CF =1 Ví dụ: MOV AX, 1000H CMP AX, 200H JZ NHANDEN ; nhãn đến … … NHANDEN: ADD AX, BX Nhóm lệnh vịng lặp - LOOP (loop: nhảy vòng): Lệnh làm giảm ghi CX xuống 1và nhảy tới nhãn (trong vòng –128 đến 127) CX khác Ví dụ: MOV AH, 02H MOV DL, 48 MOV CX, 10 ; lặp 10 lần BATDAU: INT 21H INC DL LOOP BATDAU Bài tập lớn mơn kiến trúc máy tính – Nhóm Page14 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 … … - LOOPZ (loop if zero: nhảy 0) Nhảy vòng cờ ZF =1 - LOOPNZ (loop if not zero: nhảy khác 0) Nhảy vòng cờ ZF =0 Nhóm lệnh gọi chương trình - CALL (call: gọi): lệnh gọi chương trình CALL Nhản (hoặc tên chương trình con) Lệnh gọi chương trình lệnh đặc biệt trước nhảy tới nhãn CPU tự động lưu địa trở (là địa sau lệnh CALL) vào ngăn xếp - RET (return: trở về) Lệnh kết thúc chương trình Khi gặp lệnh CPU 8086 lấy địa trở ngăn xếp để tiếp tục thi hành lệnh chương trình Ví dụ: Chương trình sau sử dụng Macro, Procedure INCHU Macro mov ah,02 mov dl, 'A' int 21h ENDM dulieu segment thongbao db 'hello!$' dulieu ends malenh1 segment P2 Proc far mov ah,02 mov dl, 'C' int 21h Bài tập lớn môn kiến trúc máy tính – Nhóm Page15 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 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 call p2 ;goi ctrinh mov ah, 4ch int 21h PINCHU Proc near mov ah,02 mov dl, 'B' int 21h ret PINCHU Endp malenh2 ends end batdau 10 Nhóm lệnh tính tốn số học - ADD (add: cộng): cộng số nguyên, lấy nguồn cộng vào đích kếtquả lưu đích ADD đích, nguồn Bài tập lớn mơn kiến trúc máy tính – Nhóm Page16 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Đích Reg, Mem; nguồn Reg, Mem Immed Ví dụ: MOV AL, 02 ADD AL, 06 (Sau lệnh AL = 08 tức AL = 02+06) - INC (increment: tăng) INC đích Đích Reg, Mem Lệnh tăng nội dung đích lên đơn vị Ví dụ: MOV AL, 02 INC AL ;Sau lệnh AL = - SUB (subtract: trừ ra): lấy đích trừ nguồn kết lưu đích SUB đích, nguồn Đích Reg, Mem; nguồn Reg, Mem Immed Ví dụ: MOV AL, 09 SUB AL, 06 (Sau lệnh AL = 03 tức AL = 09-06) - DEC (decrement: giảm) DEC đích Đích Reg, Mem Lệnh giảm nội dung đích xuống đơn vị Ví dụ: MOV AL, 02 DEC AL ;Sau lệnh AL = - MUL (multiplication: phép nhân): nhân số không dấu MUL nguồn Nguồn Reg, Mem Lệnh lấy ghi tích luỹ (AX) nhân chonguồn Nếu nguồn 8bit số nhân AL kết đặt AX Bài tập lớn mơn kiến trúc máy tính – Nhóm Page17 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Nếu nguồn 16 bit, số nhân với AX kết để DX:AX (DX:AX số 32 bit, 16 bit cao DX 16 bit thấp AX) Ví dụ: MOV AL, MOV BL, MUL BL (Sau lệnh AL có giá trị 18) - DIV (division: phép chia): chia số không dấu DIV nguồn Nguồn Reg, Mem Lệnh lấy ghi tích lũy (AX) chia cho nguồn Nếu nguồn 8bit lấy AX chia cho nguồn, kết đặt AL sốdư đặt AH Nếu nguồn 16 bit lấy DX:AX chia cho nguồn Thương số đặt AX, số dư đặt DX Ví dụ: MOV AX, 9520 MOV BL, 100 DIV BL (Sau lệnh AL = 95 AH = 20 9520 : 100 = 95 dư 20) 11 Nhóm lệnh dịch chuyển quay - SHL (logical shift left): dịch trái logic SHL đích, ; dịch trái tốn hạng đích bit (dịch từ bit trở lên phải đặt số lần dịch CL) SHL đích, CL ; dịch trái tốn hạng số bit nội dung CL Trong hình trên, giả sử tốn hạng đích 8bit lệnh SHL đích, làm bít thứ dịch sang bit CF (cờ), bít chuyển sang bit7, bít5 sang bit6,… bit0 qua bit1 số vào bit0 - SHR (logical shift right): dịch phải logic Bài tập lớn môn kiến trúc máy tính – Nhóm Page18 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Lệnh giống SHL dịch phải Trong hình trên, giả sử tốn hạng đích 8bit lệnh SHR đích, làm vào bít7, bit7 sang bít 6,… bit0 dịch sang bit CF (cờ) - SAL (shift arithmetic left): dịch trái số học Giống lệnh SHL bit0 giữ nguyên - SAR (shift arithmetic right): dịch phải số học Giống lệnh SHL bit cao giữ nguyên - ROL (rotate left): quay vịng sang trái ROL đích, ; quay vịng sang trái tốn hạng đích bit (quay vịng sang trái từ bit trở lên phải đặt số lần dịch CL) ROL đích, CL ; dịch trái tốn hạng số bit nội dung CL - ROR (rotate right): quay vòng sang phải (giống quay vòng sang trái sang phải) ROR đích, ROL đích, CL - RCL (rotate through carry left): quay vòng qua bit số giữ sang trái, giống lệnh ROL có tham gia bit số giữ Bài tập lớn mơn kiến trúc máy tính – Nhóm Page19 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 - RCR (rotate through carry right): quay vòng qua bit số giữ sang phải, giống lệnh RCL sang phải 12 Nhóm lệnh logic - AND (and: và): lệnh lấy bit toán hạng đích and với bit tốn hạng nguồn, kết lưu đích AND đích, nguồn Đích Reg, Mem; nguồn Reg, Mem Immed Ví dụ: MOV AL, 01010101B AND AL, 00001111B (Sau lệnh AL = 00000101B) - OR (or: hoặc): lệnh lấy bit tốn hạng đích or với bit tốn hạng nguồn, kết lưu đích OR đích, nguồn Đích Reg, Mem; nguồn Reg, Mem Immed Ví dụ: MOV AL, 01010101B OR AL, 00001111B (Sau lệnh AL = 01011111B) - XOR (xor: loại): lệnh lấy bit tốn hạng đích xor với bit toán hạng nguồn, kết lưu đích XOR đích, nguồn Đích Reg, Mem; nguồn Reg, Mem Immed Ví dụ: MOV AL, 01010101B XOR AL, 00001111B Bài tập lớn môn kiến trúc máy tính – Nhóm Page20 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 (Sau lệnh AL = 01011010B) - NOT (not: đảo): lệnh lấy đảo bit tốn hạng đích NOT đích Đích Reg, Mem Ví dụ: MOV AL, 01010101B NOT AL (Sau lệnh AL = 10101010B) - TEST (test: trắc nghiệm): lệnh giống lệnh AND không lưu giữ kết mà ảnh hưởng đến cờ TEST đích, nguồn 13 Nhóm lệnh xử lý chuỗi - MOVSB (move string byte): di chuyển chuỗi byte - MOVSW (move string word): di chuyển chuỗi 16 bit - CMPSB (compare string byte): so sánh chuỗi byte - CMPSW (compare string word): so sánh chuỗi 16 bit - SCASB (scan string byte): quét chuỗi byte Giáo trình Assembler - SCASW (scan string word): quét chuỗi 16 bit - LODSB (load string byte): nạp chuỗi byte - LODSW (load string word): nạp chuỗi 16 bit - STOSB (store string byte): lưu chuỗi byte - STOSW (store string word): lưu chuỗi 16 bit Cách dùng lệnh giống thường phải qua bước sau: Bước 1: Xác định chiều xử lý chuỗi DF = 0: chuỗi xử lý theo chiều địa tăng DF = 1: chuỗi xử lý theo chiều địa giảm Bước 2: Số lượng phần tử cần xử lý nạp vào ghi đếm CX Bước 3: Đưa địa chuỗi vào vị trí Bài tập lớn mơn kiến trúc máy tính – Nhóm Page21 Trường ĐH Công Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 Địa chuỗi nguồn đưa vào DS:SI Địa chuỗi đích đưa vào ES:DI Bước 4: Chọn vịng lặp thích hợp REP, REPE, REPNE Lệnh REP (repeat: lặp lại): lặp lại lệnh theo sau đến CX=0 Lệnh REPE (repeat if equal: lặp lại nhau): lặp lại lệnh theo sau ZF=1 Lệnh REPNE (repeat if not equal: lặp lại không nhau): lặp lại lệnh theo sau ZF=0 Bước 5: Đặt lệnh xử lý chuỗi thích hợp Ví dụ 1: Chuyển 100 byte từ ô nhớ nguồn đến ô nhớ đích CLD ;DF=0, SI DI tự động tăng sau lần lặp, ;lệnh giới thiệu phần LEA SI, nguồn LEA DI, đích MOV CX, 50 REP MOVSW ; Tự động chuyển 100 byte Ví dụ 2: So sánh 10 byte vùng ô nhớ DS CLD ;DF=0, muốn DF=1 ta dùng lệnh STD PUSH DS PUSH ES MOV SI, 7000H MOV DI, F000H MOV CX, 10 REPE CMPSB JNZ NOTEQ ;NOTEQ nhãn chương trình nhảy ;tới xuất byte khơng giống Ví dụ 3: Tìm chữ 'A' chuỗi 100 ký tự Bài tập lớn môn kiến trúc máy tính – Nhóm Page22 Trường ĐH Cơng Nghiệp Hà Nội Lớp: CĐ CNTT1 – K15 CLD ;DF=0, muốn DF=1 ta dùng lệnh STD MOV CX, 100 Trang 15 LEA DI, chuỗi MOV AL, 'A' REPNE SCASB ;so sánh byte chuỗi với ký tự 'A' JCXZ NOTE ;NOTE nhãn chương trình nhảy ;tới khơng tìm thấy 'A' ;(jump if CX equal zero) 14 Các lệnh khác - CLC (clear carry flag): xóa cờ zero - CF - CLD (clear direction flag): xóa cờ hướng - DF - CLD (clear interrupt flag): xóa cờ ngắt - IF - CMC (complement carry flag): đổi ngược cờ CF - HLT (halt): dừng, CPU ngưng hoạt động - INT (interrupt): gọi ngắt - IRET (return from interrupt): trở chương trình từ chương trình phục vụ ngắt - LOCK: khoá bus hệ thống - NOP (no operation): khơng có tác vụ - WAIT: đợi có xung chân TEST CPU 8086 Bài tập lớn mơn kiến trúc máy tính – Nhóm Page23 ... III CÁC LỆNH THƯỜNG DÙNG CỦA CPU 8086 Giới thiệu Bộ xử lý 8086 có tập lệnh gồm 111 lệnh, chiều dài lệnh từ byte đến vàibyte Tập lệnh xử lý Intel ngày có nhiều lệnh mạnh phức tạp Bộ xử lý Intel... mà Intel đạt hãng sản xuất vi xử lý mang tên 8086 có độ rộng liệu lên đến 16 bit với 29000 bóng bán dẫn tích hợp bên vi xử lý mở đầu cho họ vi xử lý x86 Bộ vi xử lý 8086 mang lại bùng nổ cơng... 80386 có 206 lệnh, lệnh có chiều dài từ đến 15 byte, số lệnh cần 1000 chu kỳ xung nhịp để thực Sau đề cập số lệnh thường dùng CPU 8086 Tập lệnh đầy đủ xử lý 8086 nêu phụ lục Tập lệnh xử lý 80386

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 Xem tại trang 8 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan