nguyenanhque .asm3

Màu nền
Font chữ
Font size
Chiều cao dòng

;chuong trinh duoi day viet theo cau truc file exe

;hien thi ra man hinh mot cau Hello ! VN-ZOOM PRo !

.model small ;cac ban doc chuong 4 trong sach co the hieu them ve CT 1 Prg

.stack 100h; dinh nghia bo nho dem

.data

msg db 'Hello ! Vn-Zoom Pro !$'

.code

main proc

;khoi tao ds thanh ghi chua du lieu bao gom cac bien cua chuong trinh

mov ax,@data

mov ds,ax

;in ra man hinh cau Hello...

mov dx,offset msg

mov ah,9

int 21h

;ve dos

mov ah,1 ;nhan mot ky tu tu ban phim chu yeu la dung man hinh de xem

mov int 21 ;ket qua

mov ah,4ch;ham ve dos

int 21h

main endp

end main

************

Xin phep giai thích 1 chút về chuơng trình của bạn trimitu.Ở đây trong bộ vi xử lý 8086/8088 có nhiều thanh ghi(vì việc thực hiện 1 lệnh sẽ nhanh hơn nên số lượng thanh ghi càng lớn, tốc độ xử lý càng cao).ở đây mình chỉ nói về 4 thanh ghi:

AXaccumulator register):có chức năng thực hiện các phép toán logic,số học và chuyển dữ liệu.

BX: base register:dóng vai trò ghi địa chỉ.(chứa địa chỉ của 1 số mã lệnh)

CXcount register) thanh ghi đếm, đếm số vòng lặp.ví dụ ta sử dụng vòng lăp while, repeat,....

DXdata register):ghi dữ liệu,sử dụng trong các thao tác vào, ra va nhân, chia.

Trong ví dụ trên ,ta đã sủ dụng thanh ghi ax.

ở dòng đầu tiên: ".model small" lệnh này dùng để xác định kích thước của chương trình cho trình biên dịch.

".stack 100h": định nghĩa bộ nhớ.các bạn để ý 100h, h ở đây là viết tắt của hexa tức bộ đếm 16.

"msg db 'Hello ! Vn-Zoom Pro !$' ":dòng này có 2 điểm đáng chú ý là:1)db (viết tắt của definite byte).2)'Hello ! Vn-Zoom Pro !$'-đây là 1 chuỗi ký tự bất kỳ và phải để trong dấu " " hoặc ' '. Trong as ko phân biêt chữ hoa hay chữ thường trong các câu lệnh.

còn mấy lệnh sau các bạn tham khảo qua sách lập trình của quách tuấn ngọc nhé.

Cố gắng đọc qu

a vì as khá khó, chúng ta sẽ mất rất nhiều thời gian để giải thích.CHúng ta sẽ đi sâu vào phần bài tập ở cuối chuơng.Các bạn thấy thế nào?

*****************

XOR BX,BX

MOV AX,1

MOV CX,40

CONG:

CMP CX,0

JE END_CONG

ADD BX,AX

ADD AX,2

DEC CX

JMP CONG

END_CONG:

Ở đây lệnh XOR BX,BX SẼ XÓA THANH GHI BX HAY BX=0;

BAN ĐẦU AX=1; CX=40;

SAU ĐÓ TA CỘNG:

CMPCOMPARE) SO SÁNH CX VÀ 0(Ở ĐÂY CX=40>0);

JE END_CONG: LỆNH NÀY SẼ NHẢY ĐẾN END_CONG NẾU CX-0=0(TỨC CỜ ZF=0);

ADD BX,AX:THÊM AX VÀO BX DO ĐÓ BX=1;

ADD AX,2:THÊM 2 VÀO AX; AX=1+2;

DEC CX:GIẢM CX-->>CX=39;

JMP CONG :NHẢY ĐẾN CỘNG

THỰC CHẤT ĐÂY LÀ 1 VÒNG LẶP 40 LẦN(DỪNG KHI CX=0);

DO ĐÓ TA CÓ AX=1+40*2=81;

BX=1+3+5+....+81=1681;

Bạn đang đọc truyện trên: Truyen2U.Pro