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ếế DMA p Các vi xử lý thực tế 2/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ấế trúc lập trình thực hợp ngữ u 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ữ • Cách tạo chạy chương trình hợp ngữ máy IBM PC • Các cấu trúc lập trình thực hợp ngữ • 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ữ Dữ liệu cho chương trình Biến Khung chương trình hợp ngữ • Cách tạo chạy chương trình hợp ngữ máy IBM PC • Các cấu trúc lập trình thực hợp ngữ • 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 khai báo kiểu kích thước nhớ khai báo đoạn ngăn xếp 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 Tbao DB ‘Chuoi da sap xep:’, 10, 13 MGB DB ‘a’, ‘Y’, ‘G’, ‘T’, ‘y’, ‘Z’, ‘U’, ‘B’, ‘D’, ‘E’, DB ‘$’ Code LAP: MOV MOV MOV LEA DEC MOV MOV MOV MOV khai báo đoạn mã lệnh AX, @Data ;khoi dau DS DS, AX BX, 10 ;BX: so phan tu cua mang DX, MGB ;DX chi vao dau mang byte BX ;so vong so sanh phai lam SI, DX ; 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 TIMMAX: TIEP: khai báo đoạn liệu INC SI CMP JNG MOV MOV LOOP TIMMAX CALL DOICHO DEC JNZ MOV LEA INT MOV INT ;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 lai LAP ;lam tiep vong so moi AH, ; 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 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 • Chương trình dịch khơng phân biệt chữ hoa, chữ thường • Trường tên: Mã lệnh Các toán hạng ; giải chứa nhãn, tên biến, tên thủ tục độ dài: đến 31 ký tự tên khơng có 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ữ Cú pháp chương trình hợp ngữ 3.1.2 Dữ liệu cho chương trình Biến Khung chương trình hợp ngữ • Cách tạo chạy chương trình hợp ngữ máy IBM PC • Các cấu trúc lập trình thực hợp ngữ • 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ữ Cú pháp chương trình hợp ngữ Dữ liệu cho chương trình 3.1.3 Biến Khung chương trình hợp ngữ • Cách tạo chạy chương trình hợp ngữ máy IBM PC • Các cấu trúc lập trình thực hợp ngữ • Một số chương trình cụ th 10/Chapter3 â DHBK 2005 3.1.3 Bin v hng ã DB • DW (Define Word): định nghĩa biến kiểu từ - byte • DD • Biến byte: (Define Byte): định nghĩa biến kiểu byte (Define Double word): định nghĩa biến kiểu từ kép - byte Tên Ví dụ: B1 B1 C1 C1 DB gia_trị_khởi đầu DB DB DB DB ? ‘$’ 34 21/Chapter3 © DHBK 2005 3.1.4 Khung chương trình hợp ngữ • Chương trình Hello.COM Model Tiny Code ORG 100H START: JMP CONTINUE CRLF DB 13,10,’$’ MSG DB ‘Hello! $’ CONTINUE: MAIN Proc ;về đầu dòng dùng hàm INT 21H MOV AH,9 LEA DX, CRLF INT 21H ;Hiển thị lời chào dùng hàm INT 21H MOV AH,9 LEA DX, MSG INT 21H ;về đầu dòng dùng hàm INT 21H MOV AH,9 LEA DX, CRLF INT 21H ;trở DOS INT 20H MAIN Endp END START 22/Chapter3 © DHBK 2005 3.1.4 Khung chương trình hợp ngữ Stack chương trình 100h PSP COM SS CS DS ES chương trình PSP EXE 100h 23/Chapter3 © DHBK 2005 Chương Lập trình hợp ngữ với 8086 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 Các cấu trúc lập trình thực hợp ngữ Một số chương trình cụ thể 24/Chapter3 © DHBK 2005 3.2 Cách tạo chương trình hợp ngữ Tạo tệp văn chương trình *.asm Dùng MASM để dịch mã máy *.obj Dùng LINK để nối tệp obj thành *.exe Dịch com? không Dùng exe2bin để dịch *.exe thành *.com chạy chương trình 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ụ: Gán cho BX giá trị tuyệt đối AX CMP JNL End_if: NEG MOV AX, End_if ; ; AX ; BX, AX ; If AX