05 lap trinh hop ngu

71 180 0
05 lap trinh hop ngu

Đ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

Trong máy tính IBM-PC/XT (BVXL 8088/8086) - Các vi mạch sau có chức gì? + Vi mạch 8288 + Vi mạch 74LS373 + Vi mạch 74LS245 + Vi mạch 8284 BÀI LẬP TRÌNH HỢP NGỮ ASSEMBLY Giới thiệu lập trình hợp ngữ Chương trình COM, EXE Tập lệnh BVXL 8086/8088 Mô tả cấu trúc lệnh if, while, for… lệnh hợp ngữ Vào/ra bàn phím, hình với ngắt 21h Các ví dụ minh họa demo Emu8086 Giới thiệu • Ngơn ngữ máy (Machine language): Là tập lệnh BVXL biểu diễn dạng nhị phân (hoặc hex) - mã máy, nạp trực tiếp vào nhớ để BVXL thực • Hợp ngữ (Assembly language): Là ngôn ngữ bậc thấp, chương trình viết hợp ngữ bao gồm chuỗi lệnh BVXL biểu diễn cú pháp dễ nhớ mà dịch trình dịch hợp ngữ, chúng có khả nạp vào nhớ đồng thời thực thi BVXL Gii thiu Từ gợi nhớ (Mnemonic) tơng đơng 1-1 với lệnh CPU Chơng trình biên dịch (Assembler) dùng để biên dịch từ dạng ký hiệu sang mã máy MacroAssembler cđa Microsoft TurboAssembler cđa Borland Sư dơng MacroAssembler Bớc 1: Sử dụng trình soạn thảo ASCII để viết chơng trình nguồn đặt tên mở rộng ASM Bớc 2: Sử dụng chơng trình MASM.exe để dịch chơng trình nguồn ASM thành chơng trình OBJ Cách viết: masm sourcefile Bớc 3: Sử dụng chơng trình link để liên kết tệp tin mã máy dạng OBJ thành tệp tin thi hành đợc dạng EXE Cách viết: LINK objectfile VD: link chao Nếu chơng trình COM sử dụng exe2bin.exe để chuyển đổi tƯp tin EXE thµnh tƯp tin COM VD: exe2bin chao chao.com • Trình dịch hợp ngữ (Assembler): Là chương trình dịch bậc thấp, dịch chương trình hợp ngữ thành mã máy, nạp vào nhớ đồng thời thực thi VD trình dịch Emu8086 Mã máy (Hex) Lệnh hợp ngữ ORG 100h B412 B023 02C4 BE3412 8A1C CD20 MOV AH,12H MOV AL,23H ADD AL,AH MOV SI,1234H MOV BL,[SI] INT 20H END Ghi Chỉ thị dẫn hướng cho trình dịch đặt mã lệnh từ đ/c 100h Gán AH=12H Gán AL=23H AL=AL+AH Gán SI=1234H Đọc ô nhớ có đ/c 1234h vào BL Lệnh gọi ngắt 20h kết thúc C/T Từ khóa kết thúc C/T hợp ngữ db 0B4h,12h,0B0h,23h,02h,0C4h,0BEh,34h,12h,8Ah,1Ch,0CDh,20h Cú pháp câu lệnh hợp ngữ • Một lệnh hợp ngữ đầy đủ gồm thành phần sau: [Tên nhãn:] [Các tốn hạng] [;Chú thích] Vdụ Next: MOV AH, 12h ; gán AH = 12h • Trong đó: + [Tên nhãn:]: Là dãy kí tự đứng trước câu lệnh (kết thúc (:)), cho biết địa câu lệnh sau tên nhãn, tên nhãn dùng câu lệnh lặp, lệnh nhảy, tên chương trình Do đó, sử dụng cần - Trong chương trình hợp ngữ khơng thể có hai tên nhãn hai vị trí trùng tên + : Cho người dùng biết hoạt động lệnh thường chữ tiếng anh viết tắt MOV, ADD(Addition), SUB(subtract), INC, DEC - Lệnh hợp ngữ không phân biệt chữ hoa/thường Trong chương trình hợp ngữ dòng chứa lệnh lệnh phải đặt trên1 dòng + [Các tốn hạng]: Là đối tượng mà lệnh tác động vào Một lệnh hợp ngữ 8088/8086 khơng có tốn hạng, có tốn hạng, có hai tốn hạng Nếu có hai tốn hạng tốn hạng đứng trước gọi [Tốn hạng đích], tốn hạng đứng sau gọi [Tốn hạng nguồn] [Tốn hạng đích] khơng thể số + [;Chú thích]: Lời giải thích người viết chương trình, trình biên dịch bỏ qua thích này, thường dùng để làm rõ ý nghĩa câu lệnh Lời giải thích phải nằm sau dấu chấm phảy (;) Dưới đoạn chương trình hợp ngữ: mov CX, ; gán cx=5, hai TH Mov BX, 100 ; gán bx=100, hai TH BACK: DEC BX ; giảm bx đơn vị, TH NOP ; lệnh khơng có TH LOOP BACK ;Tên nhãn BACK ; lệnh lặp Hàm 09: Hiện xâu kí tự kết thúc „$‟ lên hình: Chức AH = 09; DX = địa offset xâu kí tự; ngắt 21h mov ah, 09h lea dx, str int 21h int 20h str db "Xin chao cac ban hoc vien$" Các ví dụ minh họa •Ví dụ 1: Các lệnh sau tính tổng nội dung 100 ô nhớ (100 byte nhớ) nhớ, bắt đầu địa 0A00:0120 Kết lưu vào word nhớ trước vùng nhớ Ví dụ 1: Các lệnh sau tính tổng nội dung 100 ô nhớ (100 byte nhớ) nhớ, bắt đầu địa 0A00:0120 Kết lưu vào word nhớ trước vùng nhớ Mov Ax, 0A00h Mov DS, Ax Mov SI, 0120h; trỏ DS:SI tới nguồn 0A00:0120 Mov DI, SI ; trỏ DS:DI tới nguồn 0A00:0120 Sub DI,2 ; trỏ DS:DI word trước vùng nhớ nguồn Mov Cx, 100 Mov Dx, ; DX chứa tổng TTong: Add Dx, byte PTR [SI] ;cộng vàoDX Inc SI ; trỏ vào ô nhớ tiếp Loop TTong Mov Word PTR [DI], DX Ví dụ 2: Copy tồn 16 kí tự từ biến Xau1 vào biến Xau2 Giả sử Xau1 Xau2 khai báo trước sau: Xau DB "Khoa KTDK HVKTQS" Xau2 DB 18 Dup ('') Lea SI, Xau1 Lea DI, Xau2 Mov Cx, 18 Lap_Copy: Mov Al, [SI] Mov [DI], Al Inc SI Inc DI Loop Lap_Copy Ví dụ 3: Viết chương trình dạng COM: Nhập vào kí tự thường, chương trình in kí tự in hoa tương ứng ORG 100h Mov Ah, 09h ; xuất thông báo Lea Dx, TB1 Int 21h Mov Ah, 01 ; chờ nhập ký tự Int 21h Mov Bl, Al Mov Ah, 09h ; xuất thông báo Lea Dx, TB2 Int 21h Mov Ah, 02 ; xuất k/tự chuyển in hoa Mov Dl, Bl Sub Dl, 20h Int 21h Int 20h TB1 DB 'Nhap vao mot ki tu thuong: $' TB2 DB 0Ah,0Dh,'Ki tu hoa tuong ung: $' end Ví dụ 4: Viết chương trình dạng COM: Nhập vào hai số (số thứ nhất: nhỏ 5; số thứ hai: nhỏ 5), sau in tổng hai số vừa nhập ORG 100h Jmp Main TBN1 DB 'Nhap so hang thu nhat (nho hon 5): $' TBN2 DB 0Ah,0Dh,'Nhap so hang thu hai (

Ngày đăng: 15/02/2020, 16:52

Từ khóa liên quan

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

Tài liệu liên quan