nguyenanhque .asm3
;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: AzTruyen.Top