1. Trang chủ
  2. » Công Nghệ Thông Tin

hoa cuong có thì sử dụng – thích thì lao vào

22 8 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 22
Dung lượng 159,5 KB

Nội dung

 Input : DX= địa chỉ chuỗi ký tự kết thúc bằng $  Output: chuỗi kí tự xuất hiện trên màn hình  function number routine. 2 Single character output[r]

(1)

Lập trình Hợp ngữ

(2)

Tổng quan

 Ngôn ngữ cấp thấp

 Macro Assembler ( MASM) - CPU 8086.  Tập tin hợp ngữ nguồn (.ASM)

 Các phát biểu lệnh hợp ngữ (assembly statement)  Assembly Language Instruction

 Xác định hành động CPU thực

 Dịch sang lệnh mã máy tương ứng

 Assembler directive

(3)

Tổng quan (tt)

 Các thành phần  Bộ ký tự:

 26 chữ thường hoa a-z, A-Z  10 kí tự số 0-9

 Các kí tự dấu:

 ? @ _ $ : [ ] ( ) < > { } + - * / & % ! ‘ ~ “ | \ = # ^ ; ,

 Kí tự ngăn cách

 Khoảng trắng  Tab

(4)

Tổng quan (tt)

 Từ vựng:

 Tên: A-Z a-z 0-9 ? @ _ $

 Duy  Qui tắc đặt tên??

 Từ khóa

 Bắt buộc

 Kiểu số liệu:

 Số:

 Thập phân 110d (mặc định)  Nhị phân 01111b

 Hexa 0FF01h

 Kí tự:

(5)

Cấu trúc lệnh

Name: Operation Operand(s) ;Comment

 [Nhãn] Tên gợi nhớ Tốn hạng(s) Ghi  Kí tự ngăn cách: khoảng trắng, TAB

 START: MOV CX,5 ;khởi tạo ghi CX  MAIN PROC ; tạo thủ tục tên MAIN

Name: tên thay địa câu lệnhOperation: hành động (2-7 kí tự)Operand: liệu để xử lý

 Hằng, ghi, biểu thức, tên tượng trưng  Các dạng định địa chỉ???

Comment: người lập trình hiểu

(6)

Khai báo liệu

 Khai báo

 Chỉ dẫn EQU =  Gán giá trị cho tên

 name EQU <value>  name = <value>

 Khai báo biến

 Loại liệu riêng

 Số, ký tự, chuỗi, biểu thức có trị xác định

 Vùng nhớ xác định

 Tạo biên dịch chương trình

(7)

Chỉ dẫn khai báo kiểu số liệu

 DB define byte

 DW define word (doublebyte)

 DD define doubeword (2 từ liên tiếp)  DQ define quadword (4 từ liên tiếp)

 DT define tenbytes (10 bytes liên tiếp)  Ví dụ:

 alpha DB ; khai báo biến alpha chiều dài

byte có giá trị khởi tạo

 beta DW ? ; khai báo biến beta chiều dài

(8)

Mảng (ARRAY)

 Thực chất loạt byte hay từ nhớ liên tiếp

nhau truy xuất địa thông qua tên biến

 Còn gọi vùng nhớ có tên tổng số byte chiều

dài

 Ví dụ: vùng nhớ B_ARRAY chiều dài byte b_array DB 10h,20h,30h

(9)

Mảng (ARRAY)

 Nếu ASM gán địa offset 0200h cho mảng

B_ARRAY nội dung nhớ sau :

SYMBOL ADDRESS CONTENTS

(10)

Mảng (ARRAY)

 Ví dụ mảng W_ARRAY phần tử

W_ARRAY DW 1000,40,29887,329

 Giả sử mảng bắt đầu 0300h:

SYMBOL ADDRESS CONTENTS

W_ARRAY 300h 1000d W_ARRAY+2 302h 40d

(11)

Khai báo liệu

 Chuỗi kí tự

 Mảng giá trị mã ASCII

 msg DB ‘HELLO’, 0AH, 0DH, ‘$’

tương đương

 msg DB 48H,45H,4CH,4Ch,4FH,0AH,0DH,24H  Toán tử DUP

 Lặp lại số lần giá trị liệu cần khởi tạo

 result DB 100 DUP (‘?’) ; chuỗi 100 dấu ?

(12)

Cấu trúc chương trình ASM

 Cú pháp khai báo toàn phần:

 Chỉ dẫn SEGMENT ENDS  Tự tham khảo

 Chương trình ASM gồm phần  đoạn

 CODE  DATA

 STACK

 Chỉ dẫn kiểu nhớ: xác định kích thước đoạn

.model memory_type

(13)

Đoạn liệu – DATA Segment

 Cú pháp

 DATA

 ;khai báo tên hằng, biến, mảng

 Ví dụ

.DATA

WORD1 DW WORD2 DW

(14)

Đoạn ngăn xếp – Stack Segment

 Cú pháp:

.STACK size

 Mặc định 1KB  Ví dụ:

(15)

Đoạn mã- Code segment

 Đoạn chứa mã lệnh chương trình

 Bắt đầu CODE, bên chứa mã

lệnh thủ tục

 Cú pháp khai báo thủ tục

name PROC

; body of the procedure name ENDP

(16)

Ví dụ:

 MODEL SMALL ;1 đoạn code đoạn liệu  STACK 100h ; dành 256 byte cho stack  DATA

; định nghĩa liệu

 CODE

MAIN PROC

; thân thủ tục MAIN MAIN ENDP

; thủ tục khác có

 END MAIN ; kết thúc chương trình bắt đầu

(17)

Các lệnh bản

 MOV, XCHG

 ADD, SUB, INC , DEC,NEG

 Chuyển ngôn ngữ cấp cao sang hợp ngữ

 Mệnh đề B=A

MOV AX,A ; đưa A vào AX MOV B,AX ; đưa AX vào B

 Mệnh đề A=B-2*A

(18)

Các lệnh vào ra

 CPU thông tin với cổng ngoại vi I/O

lệnh IN OUT

 Không dùng trực tiếp Tại sao???

 Dùng chương trình phục vụ I/O

 BIOS ( Basic Input Output System)  Do hệ điều hành cung cấp

 Trình phục vụ ngắt INT

INT interrupt_number

(19)

INT 21h

function number routine

9 String input

 Input : DX= địa chuỗi ký tự kết thúc $  Output: chuỗi kí tự xuất hình  function number routine

2 Single character output

 Input :

 AH=2

 DL=ASCII code of the the display character or control

character  Output:

 AL= ASCII code of the the display character or control

(20)

Chương trình đầu tiên

 Đọc ký tự in dòng mới  .MODEL SMALL

 .STACK 100H  .CODE

 MAIN PROC

 ; dấu nhắc  MOV AH,2

(21)

Chương trình đầu tiên

 ; nhập ký tự

 MOV AH,1 ; hàm nhập ký tự

 INT 21H ; ký tự nhập vào AL  MOV BL,AL ; cất ký tự vào BL

 ; chuyển xuống dòng cách xuất kí tự  ; xuống hàng kí tự đầu hàng

 MOV AH,2 ; hàm xuất ký tự

 MOV DL,0DH ; ký tự carriage return

 INT 21H ; thực xuất kí tự carriage return  MOV DL,0AH ; kí tự line feed

(22)

Chương trình đầu tiên

 ; xuất kí tự nhập cất BL

 MOV DL,BL ; đưa liệu cất BL vào DL  INT 21H ; thực xuất kí tự

 ; trở DOS

 MOV AH,4CH ; hàm thoát DOS  INT 21H ; thực exit to DOS

Ngày đăng: 20/04/2021, 01:56

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

TÀI LIỆU LIÊN QUAN

w