1. Trang chủ
  2. » Thể loại khác

Vi xử lý phkkhanh chuong2

68 117 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 873,35 KB

Nội dung

Vi xử lý phkkhanh chuong2 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực ki...

CHƢƠNG 2: LẬP TRÌNH HỢP NGỮ 8:11 PM Khung chương trình hợp ngữ Tạo thực thi chương trình hợp ngữ Cú pháp lệnh Các cách định địa Tập lệnh hợp ngữ Các cấu trúc Các ngắt 8086 Truyền tham số chương trình Các dụ minh hoạ Chƣơng Khung chƣơng trình hợp ngữ MODEL STACK DATA msg Quy mô sử dụng nhớ Subname PROC ; Định nghĩa chƣơng trình … ; Khai báo đoạn liệu RET DB 'Hello$‘ Subname ENDP ; -; Khai báo đoạn mã END main PROC Kích thƣớc stack CODE main … CALL Subname ; Gọi chƣơng trình … main ENDP ; -8:11 PM Chƣơng 2 Khung chƣơng trình hợp ngữ Quy mô sử dụng nhớ MODEL TINY MODEL SMALL MODEL MEDIUM MODEL COMPACT MODEL LARGE MODEL HUGE 8:11 PM Chƣơng Khung chƣơng trình hợp ngữ Kích thước stack STACK 10 STACK 256 (100h) STACK 1024 8:11 PM Chƣơng Tạo thực thi chƣơng trình hợp ngữ Yêu cầu: chương trình TASM.EXE TLINK.EXE Bước 1: Dùng chƣơng trình soạn thảo văn khơng định dạng (nhƣ NC, Notepad, …) tạo tập tin chứa chƣơng trình hợp ngữ (phần mở rộng tập tin ASM, giả sử TEMP.ASM) Bước 2: Dịch mã máy dạng OBJ: TASM TEMP Bước 3: Chuyển thành file thực thi EXE: TLINK TEMP Nếu khai báo quy mô nhớ TINY: EXE2BIN TEMP TEMP.COM 8:11 PM Chƣơng Có thể thay chương trình TASM.EXE TLINK.EXE MASM.EXE LINK.EXE Tạo thực thi chƣơng trình hợp ngữ Dùng chương trình mơ Emu8086 8:11 PM Chƣơng Cú pháp lệnh Lệnh Tên Lệnh A: MOV Main PROC 8:11 PM Toán hạng Chú thích AH,10h ; Đƣa giá trị 10h vào ghi AH Chƣơng Cú pháp lệnh Khai báo liệu số 1011b ; Số nhị phân 1011 1011d ; Số thập phân ; Số thập phân 1011h 0A4h ; Số thập lục phân ; Số thập lục phân bắt đầu chữ 8:11 PM Chƣơng Cú pháp lệnh Khai báo biến Tên biến Kích thước Msg DB Giá trị ? DB (define byte): byte DW (define word): byte ?: giá trị ngẫu nhiên nhớ DD (define doubleword): byte 1: giá trị số xác định DQ (define quadword): byte ‘A’: kiểu ký tự DT (define ten byte unit): 10 byte DF, DP (define far byte): byte 8:11 PM Dùng toán tử DUP khai báo mảng Chƣơng Cú pháp lệnh Khai báo biến msg msg Hay: 8:11 PM ; Định nghĩa biến mảng (array) gồm có ; phần tử, phần tử dài byte với ; giá trị ban đầu phần tử ; 1,2,3 DB 1,2,3 DW msg DUP(?) DW ?,?,?,?,? ; Khai báo biến mảng gồm phần tử, ; phần tử có chiều dài byte, không cần ; gán giá trị ban đầu Chƣơng 10 Ngắt 21h Hàm 01h, 08h Kiểm tra phím nhấn, có nhấn ESC Lap: MOV AH,01h INT 21h CMP AL,27 ; Mã ASCII phím ESC JNE Lap 8:11 PM Chƣơng 54 Ngắt 21h Hàm 02h Xuất ký tự hình toạ độ trỏ hành DL = mã ASCII ký tự MOV DL,’A’ ; DL chứa ký tự cần xuất MOV AH,02h INT 21h 8:11 PM Chƣơng 55 Ngắt 21h Hàm 02h, 08h Nhập ký tự từ bàn phím, chuyển từ chữ thƣờng thành chữ hoa xuất hình Nếu phím nhấn ESC - Dùng hàm 08h - Nhập ký tự từ bàn phím - Chuyển từ chữ thƣờng thành chữ hoa - Xuất hình 8:11 PM Mã ASCII ký tự phải ≤ ‘z’ - Nếu chữ thƣờng ≥ ‘a’ chuyển - Dùng hàm 02h Chƣơng 56 Ngắt 21h Nhập ký tự từ bàn phím, chuyển từ chữ thƣờng thành chữ hoa xuất hình Nếu phím nhấn ESC Begin Y Ký tự < ‘a’? Dùng hàm 08h nhập ký tự N Ký tự > ‘z’? Ký tự = ESC? Y End 8:11 PM N Y N Chuyển thành chữ hoa Chƣơng Dùng hàm 02h xuất ký tự 57 Ngắt 21h Nhập ký tự từ bàn phím, chuyển từ chữ thƣờng thành chữ hoa xuất hình Nếu phím nhấn ESC .MODEL SMALL CMP AL,’a’ JB next STACK 100h DATA start: exit: MOV AH,4Ch INT 21h Main ENDP END Main CODE CMP AL,’z’ JA next Main PROC SUB AL,20h ; chuyển từ chữ thƣờng thành chữ hoa MOV AH,08h INT 21h CMP AL,27 JE 8:11 exitPM next: MOV DL,AL MOV AH,02h INT 21h JMP startChƣơng 58 Ngắt 21h Hàm 09h Xuất chuỗi ký tự hình toạ độ trỏ hành DS:DX = địa chuỗi cần xuất Lƣu ý: Khi sử dụng hàm 09h yêu cầu chuỗi phải kết thúc ký tự ‘$’ DATA Msg DB ‘Hello$’ CODE LEA DX,msg MOV AH,09h INT 21h ; DX chứa địa chuỗi Main PROC MOV AX,@DATA 8:11 PM MOV DS,AX Chƣơng 59 Ngắt 21h Hàm 0Ah Nhập chuỗi ký tự từ bàn phím, kết thúc q trình nhập Enter DS:DX = địa lƣu chuỗi Chuỗi lƣu nhớ có dạng: -Byte 0: số byte tối đa (kể Enter) DATA -Byte 1: số byte thực tế Msg DB 101,?,101 DUP(?) -Byte trở đi: ký tự nhập 8:11 PM Tối đa 100 ký tựChƣơng Số ký tự thực tế Vị trí lƣu trữ 60 Ngắt 21h Hàm 0Bh Kiểm tra phím nhấn bàn phím Có nhấn phím: AL = 0FFh MOV AH,0Bh Khơng nhấn: AL = INT 21h CMP AL,0 JNE exit 8:11 PM Chƣơng 61 Ngắt 10h Chuyển toạ độ trỏ AH = 02h DX = toạ độ chuyển đến – DH: hàng, DL: cột MOV AH,02h MOV DX,050Ah ; Hàng 5, cột 10 INT 10h Xố hình MOV AX,02h 8:11 PM INT 10h Chƣơng 62 Ngắt 10h Xuất chuỗi Mã hex Màu Black Mã hex Màu Red Mã hex AH = 13h Blue Magenta AL = Green Brown A BH = (số thứ tự trang) Cyan Light Gray B Màu Dark Gray Light Blue Light Green Light Cyan Mã hex C E Màu Light Red Light Magenta Yellow F White D BL = màu (4 bit cao: màu nền; bit thấp: màu chữ) CX = số ký tự xuất DX = toạ độ chuyển đến – DH: hàng, DL: cột ES:BP = địa chuỗi 8:11 PM Chƣơng 63 Ngắt 10h Xuất chuỗi MODEL SMALL STACK 100h DATA Msg DB ‘Hello’ MOV AH,13h MOV AL,0 MOV BH,0 MOV BL,74h ; Màu Light Gray, màu chữ Red MOV CX,5 ; xuất ký tự CODE MOV DH,10 ; hàng 10 Main PROC MOV DL,10 ; cột 10 MOV AX,@DATA LEA BP,Msg MOV DS,AX INT 10h MOV ES,AX main ENDP 8:11 PM END main Chƣơng 64 Truyền tham số chƣơng trình Dùng ghi Hai chƣơng trình trao đổi tham số cách sử dụng chung ghi Yêu cầu: Cộng giá trị ô nhớ 1000h 1001h, kết chứa 1002h (bye cao) 1003h (byte thấp) 8:11 PM Chƣơng 65 Truyền tham số chƣơng trình Dùng ghi MODEL STACK DATA CODE main ; Đƣa giá trị MOV MOV CALL CALL Mov INT main SMALL 100h PROC vào ô nhớ BYTE PTR DS:[1000h],10h BYTE PTR DS:[1001h],0FFh Read Sum AH,4Ch 21h ENDP 8:11 PM Read PROC ; Đọc liệu vào ghi AX MOV AH,DS:[1000h] MOV AL,DS:[1001h] RET Read ENDP Sum next: RET Sum Chƣơng END PROC ADD JNC MOV MOV ENDP main AH,AL next BYTE PTR DS:[1003h],1 DS:[1002h],AH 66 Truyền tham số chƣơng trình Dùng ô nhớ Hai chƣơng trình trao đổi tham số cách sử dụng chung vùng nhớ Cộng giá trị ô nhớ m1 m2, kết chứa AH (byte cao) AL (byte thấp) 8:11 PM Chƣơng 67 Truyền tham số chƣơng trình Dùng nhớ MODEL SMALL STACK 100h DATA m1 DB ? m2 DB ? CODE main PROC MOV AX,@DATA MOV DS,AX CALL Read CALL Sum MOV AH,4Ch INT 21h main ENDP 8:11 PM Read PROC ; Đƣa giá trị vào ô nhớ MOV m1,10h MOV m2,0FFh RET Read ENDP Sum next: PROC MOV ADD JNC MOV RET SumChƣơngENDP END main AL,m1 AL,m2 next AH,1 68 ... chuyển liệu Lệnh IN: đọc liệu từ thiết bị ngoại vi IN AL, port8 IN AL, DX IN AL, 61h MOV DX,378h IN AL, DX Lệnh OUT: xuất liệu thiết bị ngoại vi OUT port8,AL MOV AL,10h OUT 61h,AL OUT DX,AL 8:11... Tập lệnh Nhóm lệnh chuyển điều khiển Sử dụng lệnh nhảy có điều kiện giống lệnh JMP cho phép phạm vi tối đa 256 byte Bộ nhớ Vị trí Tối đa 128 Vị trí hành Tối đa 127 Vị trí 8:11 PM Chƣơng 24 Tập

Ngày đăng: 21/01/2018, 11:49

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN