intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Vi Xử Lý và Cấu Trúc Máy Tính chương 03

Chia sẻ: Nguyễn Duy Tân | Ngày: | Loại File: PDF | Số trang:14

104
lượt xem
15
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo bài thuyết trình 'vi xử lý và cấu trúc máy tính chương 03', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Vi Xử Lý và Cấu Trúc Máy Tính chương 03

  1. Nội dung: 1. Giới thiệu VI XỬ LÝ & CẤU TRÚC MÁY TÍNH 2. Các chế độ địa chỉ của 80x86 ĐH CNKT ĐIỆN TỬ TRUYỀN THÔNG K5 3. Một số hàm của ngắt 21h Giảng viên: Kiều Xuân Thực Khoa Điện tử Đại học công nghiệp Hà Nội 4. Tập lệnh của 8086 5. Ngăn xếp và thủ tục Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY 1. Giới thiệu  Hợp ngữ (Assembly): ngôn ngữ lập trình bậc thấp, sử dụng chính các câu lệnh trong tập lệnh của VXLđể viết nên một chương trình CHƯƠNG 3  Ưu điểm của lập trình hợp ngữ: chương trình viết LẬP TRÌNH ASSEMBLY CHO 8086 bằng hợp ngữ chạy nhanh và chiếm ít bộ nhớ hơn so với các chương trình viết bằng các ngôn ngữ bậc cao do: Trình dịch chỉ cần qua một bước là có thể biên dịch các chương trình  này ra mã máy Lập trình hợp ngữ cho phép đọc hoặc ghi trực tiếp vào các ô nhớ,  thanh ghi hay các cổng vào/ra dễ dàng.  Nhược điểm: Chương trình dài nên khó kiểm soát lỗi, khó bảo trì hơn so với chương  trình tương tự viết bằng ngôn ngữ bậc cao Chương trình viết bằng hợp ngữ chỉ chạy được trên hệ thống tương  ứng, không thể thực thi trên hệ thống có kiến trúc và tập lệnh khác. 4 Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  2. Cú pháp của hợp ngữ  Trường mã lệnh: các ký hiệu gợi nhớ biểu thị chức năng  Một chương trình hợp ngữ bao gồm các dòng lệnh, thao tác như MOV, ADD, SHL... mỗi lệnh được viết trên một dòng.  Trường toán hạng: toán hạng xác định dữ liệu sẽ được các  Một dòng lệnh có thể là: lệnh tác động lên. Một lệnh có thể không có, có 1 hoặc có 2 toán hạng. Ví dụ:  Lệnh thật:được hợp ngữ dịch ra mã máy NOP  Hướng dẫn biên dịch: không được dịch ra mã máy DEC CX  Mỗi một lệnh bao gồm có 4 trường: MOV AX,1 Tên: Mã_lệnh Toán_hạng; Chú_giải  Chú ý:  Các trường phải được cách nhau ít nhất một ký tự • Lệnh có 2 toán hạng phải cách nhau bởi dấu phảy (,). Toán trống hoặc TAB. hạng đầu là toán hạng đích (nơi chứa kết quả), toán hạng thứ hai là toán hạng nguồn, các lệnh thường không làm thay  Một lệnh không nhất thiết phải có đủ 4 trường, VD đổi toán hạng nguồn. trường tên hoặc trường chú giải có thể bỏ qua nhưng • Các toán hạng của lệnh phải có cùng độ lớn hay cùng kiểu thì các trường phải xuất hiện theo đúng theo thứ tự. mới hợp lệ  Ví dụ: NHAP: MOV AX,0; Chuyển 0 vào thanh ghi AX  Ví dụ: MOV AX,BX MOV AX,BL 5 7 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY  Trường chú giải: sử dụng để giải thích mục đích sử  Trường tên: sử dụng làm nhãn lệnh, tên các thủ tục và dụng lệnh của chương trình giúp người đọc dễ hiểu. tên biến. Tên sẽ được chương trình dịch gán bằng các Lời giải thích cách với trường toán hạng dấu chấm địa chỉ cụ thể của ô nhớ. phảy (;) Chương trình dịch bỏ qua khi dịch đến dấu ;  Trường tên cách với trường mã lệnh bởi dấu (:)  VD:  Các quy định khi đặt tên: ; MOV CX,DX Không được dài quá 31 ký tự.  MOV CX,5; Khởi tạo đếm bằng 5 Bao gồm các chữ cái, chữ số và một số ký tự đặc biệt (!@% _$).  Không được bắt đầu bằng một chữ số.  Không chứa khoảng trống hoặc dấu gạch ngang.  Nếu có dấu (.) thì phải đặt ở vị trí đầu tiên của tên.  Không phân biệt chữ thường, chữ hoa.  6 8 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  3. Dữ liệu chương trình  Hằng: Các hằng trong hợp ngữ có thể là kiểu số hay  Qui ước: kiểu ký tự và được gán tên bởi toán tử EQU (equate)  1 số thuộc hệ nhị phân là 1 chuỗi các bit kết thúc bằng chữ ‘B’ hay ‘b’  1 số thuộc hệ hexa là một chuỗi các số bắt đầu là một số thập Tên_hằng_số EQU Giá_trị phân và kết thúc bằng chữ ‘H’ hay ‘h’. Ví dụ: 0AH hoặc 12C5H.  VD: Nếu một số bắt đầu bằng một chữ cái thì phải thêm 0 vào trước số đó để chương trình dịch không nhầm sang một tên CR EQU 0DH hay một nhãn.  Riêng đối với một số thuộc hệ thập phân có thể kết thúc số đó PI EQU 3.14159 bằng chữ ‘D’ hay ‘d’ (hoặc không có). Ví dụ: 12 hay 12D là như nhau.  Các ký tự hoặc chuỗi ký tự phải được đặt trong dấu nháy đơn hoặc nháy kép. Ví dụ: ‘a’, “Chao ban”. Các ký tự sẽ được dịch ra mã ASCII của chúng, chương trình dịch sẽ không phân biệt giữa “A” với 41H, 1000001B hoặc 65. 9 11 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Khung của một chương trình hợp ngữ title Tên_chương_trình (có thể bỏ qua)  Biến: một biến được định nghĩa như sau .model Kiểu_bộ_nhớ Tên_biến Kiểu_biến G iá_trị_khởi_tạo .stack Dung_lượng_ngăn_xếp  Tên biến: đặt theo qui ước .data  Kiểu biến: ; khai báo các hằng, biến … .code main proc ; các lệnh chương trình chính …  Giá trị khởi tạo: đặt giá trị ban đầu cho biến, nếu main endp không muốn đặt giá trị đầu cho biếnđể ? ; các hàm và thủ tục  VD: Khoa DB 5; … Lop DB ‘DHDT1$’ end main 10 12 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  4. 2. Các chế độ địa chỉ của 80x86 .model Kiểu_bộ_nhớ 1. Chế độ địa chỉ thanh ghi (Register Addressing Mode) 2. Chế độ địa chỉ tức thời (Immediate Addressing Mode) 3. Chế độ địa chỉ trực tiếp (Direct Addressing Mode) 4. Chế độ địa chỉ gián tiếp qua thanh ghi (Register Direct Addressing Mode) 5. Chế độ địa chỉ tương đối cơ sở (Based Relative Addressing Mode) 6. Chế độ địa chỉ tương đối chỉ số (Indexed Relative Addressing Mode) 7. Chế độ địa chỉ tương đối chỉ số cơ sở (Based Indexed Relative .stack Dung_lượng_ngăn_xếp Addressing Mode)  VD: .stack 100h tạo ngăn xếp kích thước 256byte  Nếu không khai báo thì chương trình tự gán 1Kbyte cho ngăn xếp 13 15 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Chế độ địa chỉ thanh ghi .model small MOV AX,BX ;Chuyển nội dung của BX vào AX .stack 100H .data MOV DL,AL ;Chuyển nội dung của AL vào DL message DB "I am student!$“ Hiển thị dòng chữ .code “I am student!" MOV SI,DX ;Chuyển nội dung của DX vào SI main proc lên màn hình bằng mov AX,@data hàm số 9 của ngắt MOV SP,BP ;Chuyển nội dung của BP vào SP mov DS,AX 21h mov AH,9 ADD AL,BH ;Cộng nội dung của BH với AL,kết quả lưu trong AL mov DX,message int 21H mov AH,4CH MOV CL,BX ;Lệnh này sẽ báo lỗi vì đích và nguồn không cùng kiểu int 21H main endp end main 14 16 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  5. Chế độ địa chỉ tức thời Chế độ địa chỉ gián tiếp qua thanh ghi MOV AH,12; chuyển 12 vào thanh ghi AH MOV AX,[BX]; Chuyển nội dung của hai ô nhớ có địa chỉ ;DS:[BX]và DS:[BX+1]vào AX MOV DL,0AH; chuyển 10 (0AH) vào thanh ghi DL MOV AL,[BX]; Chuyển nội dung của ô nhớ có địa chỉ DS:[BX] vào AL MOV [BP],AL; Chuyển nội dung của AL vào ô nhớ có địa chỉ SS:[BP] MOV AH,01000010B; chuyển 66 vào thanh ghi AH MOV CL,A ; chuyển 65 vào thanh ghi CL MOV [BX],100; chuyển 100 vào ô nhớ có địa chỉ DS:BX 17 19 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Chế độ địa chỉ trực tiếp Chế độ địa chỉ tương đối cơ sở MOV [BP+2],AL; MOV AL, [012H];chuyển nội dung ô nhớ DS:[012H]vào AL Chuyển nội dung của AL vào ô nhớ có địa ; chỉ SS:[BP+2] MOV AL, ES:[22];chuyển nội dung ô nhớ ES:[012H]vào AL MOV AX,[BX+4]; Chuyển nội dung của hai ô nhớ có địa chỉ MOV [16H], AX ;chuyển nội dung của AX vào hai ô nhớ ; DS:[BX+4]và DS:[BX+5]vào AL và AH ;liên tiếp có địa chỉ DS:[16H] và DS:[17H] Lệnh này có thể viết như sau: MOV BX,[5678H]; chuyển nội dung của hai ô nhớ có địa MOV AX,[BX]+4 ;chỉ DS:[5678H]và DS:[5679h]vào BX 18 20 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  6. 3. Một số hàm của ngắt 21h Chế độ địa chỉ tương đối chỉ số Ví dụ: MOV AX,[DI+4];  Cách gọi một hàm của ngắt 21h của DOS: MOV AH, Số_hiệu_hàm; Ý nghĩa: chuyển nội dung của hai ô nhớ có địa chỉ INT 21H DS:[DI+4]và DS:[DI+5]vào AX 21 23 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Hàm 4C Chế độ địa chỉ tương đối chỉ số cơ sở Ví dụ:  Cách gọi: MOV AH,[BX+SI+disp]; disp là hằng số MOV AH,4CH INT 21H  Chức năng: thoát khỏi chương trình, trở về DOS 22 24 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  7. Hàm 01 Ví dụ minh họa mov AH,2 .model small  Chức năng: nhập 1 ký tự từ bàn phím mov DL,0AH  Cách gọi: .stack 100H int 21H .data MOV AH,1 Nhập vào một ký mov DL,0DH INT 21H .code tự rồi hiển thị ký  Trả về: AL chứa mã ASCII của ký tự nhập vào; AL = 0 int 21H main proc tự đó ở đầu dòng nếu một phím điều khiển hay một phím chức năng mov DL,BL tiếp theo! mov AH,1 được nhấn. int 21H int 21H mov AH,4CH mov BL,AL int 21H main endp end main 25 27 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Hàm 02 Hàm 09  Chức năng: xuất 1 ký tự ra màn hình  Chức năng: hiểm thị 1 chuỗi ký tự ra màn hình, địa chỉ  Cách gọi: của chuỗi ký tự DS:DX  Cách gọi: MOV DL,Mã_ASCII_của_ký_tự; MOV AH,2 MOV AX,@DATA INT 21H MOV DS,AX; nhập địa chỉ đoạn dữ liệu vào DS  Trả về: AL chứa mã ASCII của ký tự. LEA DX,Tên_của_chuỗi_ký_tự; nhập địa chỉ lệch của chuỗi vào DX  Chú ý: Nếu DL chứa mã ASCII của ký tự điều khiển, MOV AH,9 hàm 2 sẽ thi hành các chức năng điều khiển INT 21H  Ví dụ:  Chú ý: @data trả về địa chỉ đoạn dữ liệu được định mov AH,2 nghĩa bởi .data ở đầu chương trình. mov DL,’A’ ; mov DL,7 int 21H 26 28 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  8. Ví dụ Nhóm lệnh dịch chuyển dữ liệu mov AH,1  Lệnh MOV (MOVE): .model small int 21H .stack 100H MOV đích, nguồn mov BL,AL .data sub BL,20h mov AH,9 tb1 DB “Moi ban nhap vao 1 ky tu thuong:$” Toán hạng đích Thanh Thanh ghi Ô nhớ Hằng số LEA DX,tb2 ghi đa đoạn tb2 DB 10,13,“Doi thanh chu hoa la:$” int 21H năng .code Toán hạng nguồn mov AH,2 Thanh ghi đa năng Có thể Có thể Có thể Không thể main proc mov DL,BL Thanh ghi đoạn Có thể Không thể Có thể Không thể mov AX,@data int 21H Ô nhớ Có thể Có thể Không thể Không thể mov Hằng số Có thể Không thể Có thể Không thể mov DS,AX AH,4CH mov AH,9 MOV DS,ES int 21H LEA DX,tb1 main endp MOV DS,0AH int 21H end main 29 31 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY 4. Tập lệnh của 8086  Lệnh OUT 1. Nhóm lệnh dịch chuyển dữ liệu Dạng lệnh: OUT cổng,thanh_ghi_chứa 2. Nhóm lệnh số học Thao tác: Lệnh OUT xuất dữ liệu từ thanh ghi chứa (AL) ra cổng 3. Nhóm lệnh điều khiển rẽ nhánh  Lệnh IN 4. Nhóm lệnh xử lý bit Dạng lệnh: IN thanh_ghi_chứa, cổng Thao tác: Lệnh IN đọc dữ liệu từ cổng vào thanh 5. Nhóm lệnh xử lý điều khiển ghi (AL). 6. Nhóm lệnh xử lý chuỗi 30 32 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  9. Nhóm lệnh số học  Lệnh MUL (MULtiply)  Lệnh ADD, SUB  Dạng lệnh: MUL nguồn  Dạng lệnh: ADD đích, nguồn  Thao tác: Lệnh MUL nguồn thực hiện nhân nội dung của AL với SUB đích, nguồn nguồn nếu nguồn là một byte, tích mặc định chứa trong AX;  Lệnh ADD/SUB thực hiện cộng/trừ nội dung của toán hoặc nhân nội dung của AX với nguồn nếu toán hạng nguồn là một word, tích mặc định chứa trong DX: AX. hạng đích với toán hạng nguồn, kết quả lưu vào toán  Nguồn không được là hằng số. hạng đích, nguồn không thay đổi.  Ví dụ: mov AL,3 mov BL,5 Toán hạng đích Thanh ghi Ô nhớ Hằng số mul BL đa năng Toán hạng nguồn mov DX,AX Thanh ghi đa năng Có thể Có thể Không thể mov AL,6 Ô nhớ Có thể Không thể Không thể mov Bl,8 Hằng số Có thể Có thể Không thể mul BL add AX,DX 33 35 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY  Lệnh DIV (DIVide)  Lệnh DEC (DECrement)  Thực hiện phép chia không dấu.  Dạng lệnh: DEC đích  Dạng lệnh: DIV nguồn  Thao tác: Giảm đích đi 1.  Thao tác: Số chia là nguồn có thể là một ô nhớ hay  Tương đương với lệnh SUB đích,1. thanh ghi.  Lệnh INC (INCrement )  Trong phép chia cho byte (nguồn là 8 bit), số bị chia là chứa trong AX, kết quả thương số chứa trong AL  Dạng lệnh: INC đích và số dư trả về trong AH.  Thao tác: Tăng đích thêm 1.  Khi thực hiện phép chia cho word (nguồn là 16 bit),  Tương đương với lệnh ADD đích,1. số bị chia 32 bit chứa trong DX:AX. Kết quả thương số chứa trong AX và số dư trả về trong DX. 34 36 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  10. Nhóm lệnh điều khiển rẽ nhánh  Lệnh nhảy không có điều kiện: JMP Nhãn_lệnh  Nhảy ngay đến Nhãn_lệnh mà không cần điều kiện gì  Nhóm lệnh nhảy có điều kiện  Với các lệnh nhảy có điều kiện thì khi gặp lệnh nhảy, nếu như điều kiện của lệnh nhảy được thoả mãn thì Nhãn_lệnh được thi hành còn nếu ngược lại thì thực hiện lệnh nằm ngay sau lệnh nhảy. Nhãn_lệnh có thể đặt trước hoặc sau lệnh nhảy.  Phạm vi của lệnh nhảy có điều kiện trong khoảng 128 byte trước lệnh nhảy và 127 byte sau lệnh nhảy  Dạng lệnh: Lệnh_nhảy Nhãn_lệnh  Điều kiện: dùng lệnh so sánh CoMPare: CMP đích, nguồn CMP: Trừ đích cho nguồn và thiết lập các cờ theo kết quả của phép tính, 2 toán hạng vẫn thay đổi giá trị. 37 39 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Hiển thị các số từ 0 đến 8 trên màn hình! Hiển thị các số từ 0 đến 9 trên ? màn hình 38 40 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  11. Nhóm lệnh xử lý bit  Các lệnh logic: AND, OR, XOR  Ứng dụng: xóa bit, thiết lập bit, đảo giá trị bit trong 1 byte/word bằng cách AND, OR, XOR với mặt nạ  Ví dụ: and AL,0DFH; xoá bit 5 của AL OR AH,81H; thiết lập bit 0 và bit 3 của AH XOR AH,81H; đảo bit 0 và bit 3 của AH 41 43 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Bài tập  Các lệnh dịch: SHL và SHR  Tính tổng: 1+2+…+100, lưu kết quả ở BX  Tính tổng: 1+3+…+101, lưu kết quả ở DX  Tính 7!, lưu kết quả ở BX 42 44 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  12. VD: nhập 16 bit, lưu vào BX  Các lệnh quay: ROL và ROR Dùng hàm 01 của ngắt 21h để đọc bàn phím. Nhập 0: Al chứa 30H; Nhập 1: AL chứa 31H 45 47 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Bài tập  Các lệnh quay qua cờ CF: RCL và RCR  Nhập tối đa 16 bit để lưu vào BX, dừng nhập khi nhấn Enter. 46 48 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  13. BT: xuất 16 bit của BX ra màn hình VD nhập 4 số có 1 chữ số, tính tổng Dùng hàm 02 của ngắt 21h để xuất ra màn hình. Xuất 0: DL chứa 30H; xuất 1: DL chứa 31H 49 51 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY 5. Ngăn xếp & thủ tục Thủ tục  Ngăn xếp: lưu trữ dữ liệu tạm thời kiểu LIFO  Cất vào ngăn xếp: PUSH  Lấy ra: POP  Ví dụ Mov ax, 3 Mov bx,5 Mul bl Push ax Mov ax, 4 Mov bx,6 Mul bl Pop bx Add ax,bx 50 52 Faculty of Electronic Engineering Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
  14. HOMEWORK  Làm các BT cuối chương 3 của Giáo trình.  Đọc trước Chương 4 của Giáo trình. 54 Faculty of Electronic Engineering HANOI UNIVERSITY OF INDUSTRY Printed with FinePrint trial version - purchase at www.fineprint.com
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2