1/Chapter3 © DHBK 2005 Nội dung mơn học Giới thiệu chung hệ vi xử lý Bộ vi xử lý Intel 8088/8086 Lập trình hợp ngữ cho 8086 Tổ chức vào liệu Ngắt xử lý ngắt Truy cập nhớ trực tiếp DMA Các vi xử lý thực tế Thiêt kế vi xử lý © DHBK 2005 2/Chapter3 Chương Lập trình hợp ngữ với 8086 3.1 Giới thiệu khung chương trình hợp ngữ 3.2 Cách tạo chạy chương trình hợp ngữ máy IBM PC 3.3 Các cấu trúc lập trình thực hợp ngữ 3.4 Một số chương trình cụ thể 3/Chapter3 © DHBK 2005 Chương Lập trình hợp ngữ với 8086 3.1 Giới thiệu khung chương trình hợp ngữ 3.1.1 Cú pháp chương trình hợp ngữ 3.1.2 Dữ liệu cho chương trình 3.1.3 Biến 3.1.4 Khung chương trình hợp ngữ 3.2 Cách tạo chạy chương trình hợp ngữ máy IBM PC 3.3 Các cấu trúc lập trình thực hợp ngữ 3.4 Một số chương trình cụ thể 4/Chapter3 © DHBK 2005 Chương Lập trình hợp ngữ với 8086 3.1 Giới thiệu khung chương trình hợp ngữ 3.1.1 Cú pháp chương trình hợp ngữ 3.1.2 Dữ liệu cho chương trình 3.1.3 Biến 3.1.4 Khung chương trình hợp ngữ 3.2 Cách tạo chạy chương trình hợp ngữ máy IBM PC 3.3 Các cấu trúc lập trình thực hợp ngữ 3.4 Một số chương trình cụ thể 5/Chapter3 © DHBK 2005 3.1.1 Cú pháp chương trình hợp ngữ .Model Small .Stack 100 .Data MAIN Proc 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 khai báo kiểu kích thước nhớ khai báo đoạn ngăn xếp Tbao DB ‘Chuoi da sap xep:’, 10, 13 MGB DB ‘a’, ‘Y’, ‘G’, ‘T’, ‘y’, ‘Z’, ‘U’, ‘B’, ‘D’, ‘E’, DB ‘$’ Code MOV AX, @Data MOV DS, AX MOV BX, 10 LEA DEC LAP: MOV SI, DX MOV MOV MOV TIMMAX: INC SI CMP JNG MOV MOV TIEP: LOOP TIMMAX CALL DOICHO DEC JNZ MOV LEA INT MOV INT khai báo đoạn mã lệnh ;khoi dau DS ;BX: so phan tu cua mang DX, MGB ;DX chi vao dau mang byte BX ;so vong so sanh phai lam ; SI chi vao dau mang CX, BX ; CX so lan so cua vong so DI, SI ;gia su ptu dau la max AL, [DI] ;AL chua phan tu max ;chi vao phan tu ben canh [SI], AL ; phan tu moi > max? TIEP ;khong, tim max DI, SI ; dung, DI chi vao max AL, [DI] ;AL chua phan tu max ;tim max cua mot vong so ;doi cho max voi so moi BX ;so vong so con lai LAP ;lam tiep vong so moi AH, 9 ; hien thi chuoi da sap xep DX, Tbao 21H AH, 4CH ;ve DOS 21H MAIN Endp DOICHO Proc PUSH AX MOV XCHG MOV POP RET DOICHO Endp END MAIN khai báo đoạn liệu bắt đầu chương trình thích bắt đầu dấu ; kết thúc chương trình AL, [SI] AL, [DI] [SI], AL AX bắt đầu chương trình kết thúc đoạn mã 6/Chapter3 © DHBK 2005 3.1.1 Cú pháp chương trình hợp ngữ • Tên Mã lệnh Các tốn hạng ; giải • Chương trình dịch khơng phân biệt chữ hoa, chữ thường • Trường tên: chứa nhãn, tên biến, tên thủ tục độ dài: đến 31 ký tự tên dấu cách, khơng bắt đầu số dùng ký tự đặc biệt: ? @ _ $ % dấu phải đặt vị trí sử dụng Nhãn kết thúc dấu : Ví dụ: TWO_WORD ?1 two-word @? 1word Let’s_go 7/Chapter3 © DHBK 2005 Chương Lập trình hợp ngữ với 8086 3.1 Giới thiệu khung chương trình hợp ngữ 3.1.1 Cú pháp chương trình hợp ngữ 3.1.2 Dữ liệu cho chương trình 3.1.3 Biến 3.1.4 Khung chương trình hợp ngữ 3.2 Cách tạo chạy chương trình hợp ngữ máy IBM PC 3.3 Các cấu trúc lập trình thực hợp ngữ 3.4 Một số chương trình cụ thể 8/Chapter3 © DHBK 2005 3.1.2 Dữ liệu cho chương trình • Dữ liệu: số hệ số 2: 0011B hệ số 10: 1234 hệ số 16: 1EF1H, 0ABBAH Ký tự, chuỗi ký tự: ‘A’, “abcd” 9/Chapter3 © DHBK 2005 Chương Lập trình hợp ngữ với 8086 3.1 Giới thiệu khung chương trình hợp ngữ 3.1.1 Cú pháp chương trình hợp ngữ 3.1.2 Dữ liệu cho chương trình 3.1.3 Biến 3.1.4 Khung chương trình hợp ngữ 3.2 Cách tạo chạy chương trình hợp ngữ máy IBM PC 3.3 Các cấu trúc lập trình thực hợp ngữ 3.4 Một số chương trình cụ thể 10/Chapter3 © DHBK 2005 3.1.3 Biến • DB (Define Byte): định nghĩa biến kiểu byte • DW (Define Word): định nghĩa biến kiểu từ - byte • DD (Define Double word): định nghĩa biến kiểu từ kép - byte • Biến byte: Tên Ví dụ: DB gia_trị_khởi đầu B1 B1 C1 C1 DB DB DB DB ? ‘$’ 34 MOV AL, B1 LEA BX, B1 MOV AL, [BX] 25/Chapter3 © DHBK 2005 Chương Lập trình hợp ngữ với 8086 3.1 Giới thiệu khung chương trình hợp ngữ 3.2 Cách tạo chạy chương trình hợp ngữ máy IBM PC 3.3 Các cấu trúc lập trình thực hợp ngữ 3.3.1 Cấu trúc lựa chọn 3.3.2 Cấu trúc lặp 3.4 Một số chương trình cụ thể © DHBK 2005 3.3.1 Cấu trúc lựa chọn If-then • If điều_kiện then cơng_việc • Ví dụ 1: Gán cho BX giá trị tuyệt đối AX ; If AX