06 bo lenh x86 32 bit Giao Trinh KHTN

99 4 0
06 bo lenh x86 32 bit Giao Trinh KHTN

Đ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

Quá trình phát triển và một số nét đặc trưng của các thế hệ máy tính ¨ Định luật Moore ¨ Một số thành phần cơ bản của máy tính cá nhân ngày nay ¨ Giải thích các khái niệm wafer, chip, chipset ¨ Mô hình abstraction layers

HỆ THỐNG MÁY TÍNH 04 – Bộ lệnh X86-32 bit Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên • Mơ tả tập lệnh 8086 • Lập trình hợp ngữ 8086 Bộ vi xử lý Intel 8088/8086 • Cấu trúc bên q Sơ đồ khối q Các ghi đa q Các ghi đoạn q Các ghi trỏ số q Thanh ghi cờ q Hàng đợi lệnh • Mơ tả tập lệnh 8086 • Lập trình hợp ngữ 8086 Sơ đồ khối 8088/8086 Các ghi đa Các ghi trỏ số AX BX CX DX SP BP SI DI EU bus địa 20 bit Các ghi đoạn trỏ lệnh å CS DS SS ES IP Bus liệu ALU 16 bit Bus Khối điều khiển EU Hàng đợi lệnh Thanh ghi cờ Bus CPU 16 bit liệu 20 bit địa Logic điều khiển bus Các ghi tạm thời ALU BIU Các ghi đa 8088/8086 bit cao bit thấp •8088/8086 đến 80286 : 16 bits • • • • AX AH AL BX BH BL CX CH CL DX DH DL •80386 trở lên: 32 bits EAX, EBX, ECX, EDX Thanh ghi chứa AX (accumulator): chứa kết phép tính Kết bit chứa AL Thanh ghi sở BX (base): chứa địa sở, ví dụ bảng dùng lệnh XLAT (Translate) Thanh ghi đếm CX (count): dùng để chứa số lần lặp lệnh lặp (Loop) CL dùng để chứa số lần dịch quay lệnh dịch quay ghi Thanh ghi liệu DX (data): AX chứa liệu phép tính nhân chia số 16 bit DX cịn dùng để chứa địa cổng lệnh vào liệu trực tiếp (IN/OUT) Các ghi đoạn • Tổ chức nhớ Mbytes q Đoạn nhớ (segment) ð 216 FFFFFH bytes =64 KB ð Đoạn 1: địa đầu 00000 H ð Đoạn 2: địa đầu 00010 H ð Đoạn cuối cùng: FFFF0 H q Ô nhớ đoạn: ð địa lệch: offset ð Ô 1: offset: 0000 ð Ô cuối cùng: offset: FFFF q Địa vật lý: ð Segment : offset Địa vật lý=Segment*16 + offset Chế độ thực (real mode) 1FFFFH 1F000H 10000H Offset=F000 1000 Thanh ghi đoạn 00000H Các ghi đoạn • Ví dụ: Địa vật lý 12345H Địa đoạn Điạ lệch 1000 H 2345H 1200 H 0345H 1004 H ? 0300 H ? • Ví dụ: Cho địa đầu đoạn: 49000 H, xác định địa cuối Các ghi đoạn • Các ghi đoạn: chứa địa đoạn FFFFF 58FFF 49000 43FFF 34000 30000 2FFFF 20000 1FFFF 10000 00000 Đoạn liệu phụ extra segment Đoạn ngăn xếp Stack segment 4900 3400 ES SS Đoạn mã Code segment Đoạn liệu Data segment 2000 CS 1000 DS Các ghi đoạn • Các đoạn chồng FFFFF s t a c k d a t a c o d e 0A480 0A47F 0A280 0A27F 0A0F0 0A0EF 090F0 00000 Stack 0A28 SS Data 0A0F DS 090F CS Code Bộ vi xử lý Intel 8088/8086 • Các chế độ địa 8086 q Chế q Chế q Chế q Chế q Chế q Chế q Chế độ độ độ độ độ độ độ địa địa địa địa địa địa địa chỉ chỉ chỉ ghi tức trực tiếp gián tiếp qua ghi tương đối sở tương đối số tương đối số sở • Cách mã hố lệnh 8086 Chế độ địa ghi (Register Addressing Mode) • Dùng ghi toán hạng • Tốc độ thực lệnh cao • Ví dụ: q MOV q MOV q MOV q MOV q MOV BX, DX AL, BL AL, BX ES, DS CS, AX ; Copy nội dung DX vào BX ; Copy nội dung BL vào AL ; khơng hợp lệ ghi có kích thước khác ; khơng hợp lệ (segment to segment) ; khơng hợp lệ CS khơng dùng làm ghi đích q ADD AL, DL ; Cộng nội dung AL DL đưa vào AL Chế độ địa tức (Immediate Addressing Mode) • Tốn hạng đích ghi nhớ • Tốn hạng nguồn số • Dùng để nạp số vào thi (trừ ghi đoạn cờ) vào ô nhớ đoạn liệu DS • Ví dụ: q MOV q MOV q MOV q MOV q MOV q MOV BL, 44 ; Copy số thập phân 44 vào ghi BL AX, 44H ; Copy 0044H vào ghi AX AL, ‘A’ ; Copy mã ASCII A vào ghi AL DS, 0FF0H ; không hợp lệ AX, 0FF0H ; DS, AX ; q MOV [BX], 10 ; copy số thập phân 10 vào ô nhớ DS:BX Chế độ địa trực tiếp (Direct Addressing Mode) • Một tốn hạng địa nhớ chứa liệu • Tốn hạng ghi • Ví dụ: q MOV AL, [1234H] ; Copy nội dung ô nhớ có địa DS:1234 vào AL q MOV [ 4320H ], CX ; Copy nội dung CX vào ô nhớ liên tiếp DS: 4320 DS: 4321 Chế độ địa gián tiếp qua ghi (Register indirect Addressing Mode) • Một tốn hạng ghi chứa địa nhớ liệu • Tốn hạng ghi • Ví dụ: q MOV AL, [BX] ; Copy nội dung ô nhớ có địa DS:BX vào AL q MOV [ SI ], CL ; Copy nội dung CL vào nhớ có địa DS:SI q MOV [ DI ], AX ; copy nội dung AX vào ô nhớ liên tiếp DS: DI DS: (DI +1) Chế độ địa tương đối sở (Based relative Addressing Mode) • Một tốn hạng ghi sở BX, BP số biểu diễn giá trị dịch chuyển • Tốn hạng ghi • Ví dụ: q MOV CX, [BX]+10 ; Copy nội dung ô nhớ liên tiếp có địa DS:BX+10 DS:BX+11 vào CX q MOV CX, [BX+10] ; Cách viết khác lệnh q MOV AL, [BP]+5 ; copy nội dung ô nhớ SS:BP+5 vào ghi AL Chế độ địa tương đối số (Indexed relative Addressing Mode) • Một tốn hạng ghi số SI, DI số biểu diễn giá trị dịch chuyển • Tốn hạng ghi • Ví dụ: q MOV AX, [SI]+10 ; Copy nội dung ô nhớ liên tiếp có địa DS:SI+10 DS:SI+11 vào AX q MOV AX, [SI+10] ; Cách viết khác lệnh q MOV AL, [DI]+5 ; copy nội dung ô nhớ DS:DI+5 vào ghi AL Chế độ địa tương đối số sở ( Based Indexed relative Addressing Mode) • Ví dụ: q MOV AX, [BX] [SI]+8 ; Copy nội dung ô nhớ liên tiếp có địa DS:BX+SI+8 DS:BX+SI+9 vào AX q MOV AX, [BX+SI+8] ; Cách viết khác lệnh q MOV CL, [BP+DI+5] ; copy nội dung ô nhớ SS:BP+DI+5 vào ghi CL Tóm tắt chế độ địa Chế độ địa Toán hạng Thanh ghi đoạn ngầm định Thanh ghi Thanh ghi Tức Dữ liệu Trực tiếp [offset] DS Gián tiếp qua ghi [BX] [SI] [DI] DS DS DS Tương đối sở [BX] + dịch chuyển [BP] + dịch chuyển DS SS Tương đối số [DI] + dịch chuyển [SI] + dịch chuyển DS DS Tương đối số sở [BX] + [DI]+ dịch chuyển [BX] + [SI]+ dịch chuyển [BP] + [DI]+ dịch chuyển [BP] + [SI]+ dịch chuyển DS DS SS SS Bỏ chế độ ngầm định ghi đoạn (Segment override) • Ví dụ: q MOV AL, [BX]; Copy nội dung nhớ có địa DS:BX vào AL q MOV AL, ES:[BX] ; Copy nội dung nhớ có địa ES:BX vào AL Bộ vi xử lý Intel 8088/8086 • Các chế độ địa 8086 • Cách mã hố lệnh 8086 Cách mã hoá lệnh 8086 Opcode 1-2 byte MOD-REG-R/M 0-1 byte Dịch chuyển 0-2 byte Tức 0-2 byte • Một lệnh có độ dài từ đến byte D Opcode W W=0 liệu byte W=1 liệu byte D=1 liệu đến ghi cho bit REG D=0 liệu từ ghi cho bit REG Cách mã hoá lệnh 8086 MOD 00 01 10 11 khơng có dịch chuyển dịch chuyển bit dịch chuyển 16 bit R/M ghi REG R/M Thanh ghi W=1 AX BX CX DX SP DI BP SI W=0 AL BL CL DL AH BH CH DH Mã 000 011 001 010 100 111 101 110 MOD 11 Mã Chế độ địa 000 001 010 011 100 101 110 111 DS:[BX+SI] DS:[BX+DI] SS:[BP+SI] SS:[BP+DI] DS:[SI] DS:[DI] SS:[BP] DS:[BX] Cách mã hố lệnh 8086 • Ví dụ: chuyển lệnh MOV CL, [BX] sang mã máy q opcode MOV: 100010 q Dữ liệu byte: W=0 q Chuyển tới ghi: D=1 q Khơng có dịch chuyển: MOD=00 q [BX] nên R/M=111 q CL nên REG=001 0 MOV 1 D W 0 MOD 0 CL Ví dụ 2: chuyển lệnh MOV [SI+F3H], CL sang mã máy 1 [BX]

Ngày đăng: 10/04/2023, 17:24

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

  • Đang cập nhật ...

Tài liệu liên quan