Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

asm

;-------------------------------

; MACRO HIEN MOT XAU KY TU |

; KET THUC BANG '$' RA MAN HINH |

;-------------------------------

HienString MACRO xau

push AX DX

mov DX,offset xau

mov AH,9

int 21h

pop DX AX

ENDM

;--------------------

; MACRO XOA MAN HINH |

;--------------------

CLRSCR MACRO

push AX

mov AH,0fh

int 10h

mov AH,0

int 10h

pop AX

ENDM

;---------------------------------

; NHAN MOT SO NGUYEN TU BAN PHIM |

; Ket thuc so bang ENTER (0dh) |

; So nhan duoc nam trong AX |

; (khong duoc danh sai va sua) |

;---------------------------------

VAO_SO_N PROC

push BX CX DX SI

mov BX,10 ; Mot so hang nhan

xor CX,CX ; Phan so da vao truoc (luc dau bang 0)

mov SI,CX ; Co dau cua so (luc dau coi nhu so duong)

VSN1:

mov AH,1 ; Cho 1 ky tu tu ban phim

int 21h

cmp AL,0dh ; Ky tu vua vao la phim Enter

je VSN3

cmp AL,'-' ; Ky tu vua vao la dai '-'

jne VSN2 ; Khong phai dau '-' thi nhay

inc SI ; con khong thi co dau len 1

jmp VSN1

VSN2:

sub AL,30h ; Chuyen ky tu vua vao tu ma ASCII sang dang so

xor AH,AH ; AH=0 (AX la so vua vao)

xchg AX,CX ; Doi cheo so vua vao va phan so da vao truoc

mul BX ; Nhan phan so da vao truoc voi 10

add CX,AX ; Cong so vua vao voi phan so da vao sau khi nhan 10

jmp VSN1

VSN3:

and SI,SI ; Dung co ZF (Neu SI#0 thi so vao la am)

jz VSN4 ; So vua vao la duong thi nhay

neg CX ; Bu 2 gia tri vua vao de duoc so am

VSN4:

mov AX,CX

pop SI DX CX BX

ret

VAO_SO_N ENDP

;----------------------------

; HIEN NOI DUNG THANH GHI AX |

; RA MAN HINH DANG CO SO 10 |

;----------------------------

HIEN_SO_N PROC

push AX BX CX DX

mov BX,10 ; BX chua so chia la 10

xor CX,CX ; So lan cat vao stack (luc dau = 0)

and AX,AX ; Dung co dau SF

jns HSN1 ; Neu so can hien la duong thi nhay

push AX ; con khong thi cat AX vao stack

mov AL,'-' ; Hien dau '-' ra man hinh

mov AH,0eh

int 10h

pop AX ; Hoi phuc lai so can hien tu stack vao AX

neg AX ; Bu 2 de lay gia tri tuyet doi

HSN1:

xor DX,DX ; DX=0

div BX ; DX:AX chia cho BX (10)

add DX,30h ; Chuyen so du tu dang so ra dang ASCII

push DX ; Cat vao stack

inc CX ; Tang so lan cat vao stack len 1

and AX,AX ; Dung co ZF (lieu thuong = 0)

jnz HSN1 ; Thuong # 0 thi nhay den tiep tuc qua trinh chia

HSN2: ; Vong lap lay cac gia tri co trong stack hien

pop AX

mov AH,0eh ; Chuc nang hien 1 ky tu dang ASCII o AL ra man hinh

int 10h

loop HSN2

pop DX CX BX AX

ret

HIEN_SO_N ENDP

;----------------------------

; Chuong trinh con nhan |

; ten tep vao tu ban phim |

; Yeu cau : dx=offset buf |

; Phai khai bao trong data : |

; buff db 50 |

; db ? |

; file_name db 50 dup(?) |

;----------------------------

GET_FILE_NAME PROC

push ax bx cx dx

mov ah,0ah ; Chuc nang nhan 1 xau tu

int 21h ; ban phim va de vao buff

mov bx,dx ; bx tro den dau buf

inc bx ; bx tro den byte chua so luong ky tu da vao

mov cl,[bx] ; cl=so luong ky tu thuc te da vao

xor ch,ch ; ch=0 de cx=cl

inc bx ; bx tro den byte dau tien chua ky tu da vao

add bx,cx ; bx tro den byte chua 0dh (Enter)

mov [bx],ch ; Cho byte do bang \0

pop dx cx bx ax

ret

GET_FILE_NAME ENDP

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

Tags: #thu#vien