alquimista
جمعه 27 خرداد 1390, 11:30 صبح
سلام
این کد مشخصات شخص رو دریافت کرده و در فایل ذخیره می کند اما مشکل اینجاست که فقط رشته آخری را ذخیره می کند ، لطف کنید این کد رو برای من کامل کنید اگر برای شما مقدور بود می خواستم قسمت جست و جو نیز به این کد اضافه شود .
; 1- Define stack segment
; -----------------------
STACKSG SEGMENT STACK 'STACK'
db 256 DUP(0)
STACKSG ENDS ; End of segment
;-----------------------------------------------
; 2- Define data segment
; ----------------------
DATASG SEGMENT PARA 'DATA'
; add your data here!
MSG1 DB 'Please enter yout code: ',"$"
MSG2 DB 'Please enter your name: ',"$"
MSG3 DB 'Please enter your family: ',"$"
filename db 'D:\EXAMPLE.txt',00h
ohandle dw ?
e_creat db "error1","$"
str label byte
max DB 255
len DB ?
st_name DB 45 dup(' '),"$";,0dh,0ah
DATASG ENDS ; End of segment
;-----------------------------------------------
; 3- Define code segment
; ----------------------
;
CODESG SEGMENT PARA 'CODE'
ASSUME DS:DATASG,CS:CODESG,SS:STACKSG
START PROC FAR
MOV AX,DATASG ;1-Initialize DS
MOV DS,AX ;2- register
MOV ES,AX
; Main program
; ------------
; ------------------- write program here
call create_file ;1
mov ohandle,ax
call close_file
MOV AH,2H ;CURSOR
MOV DH,10 ;ROW
MOV DL,30 ;COLUMN
MOV BH,0 ;PAGE NUMBER
INT 10H
;2
LEA DX,MSG1 ;address massage ;3
MOV AH,9H ;number function
INT 21H
CALL GET_NAME
MOV AH,2H ;CURSOR
MOV DH,12 ;ROW
MOV DL,30 ;COLUMN
MOV BH,0 ;PAGE NUMBER
INT 10H
LEA DX,MSG2
MOV AH,9H
INT 21H
CALL get_name1
MOV AH,2H ;CURSOR
MOV DH,14 ;ROW
MOV DL,30 ;COLUMN
MOV BH,0 ;PAGE NUMBER
INT 10H
LEA DX,MSG3
MOV AH,9H
INT 21H
lea dx,str ;number interrupt
call get_name ;4
cmp len,00
jz fin
mov bx,ohandle
call w_file
;5
call get_name
fin:
end1:
;--------------------------- end of program
; Come back to operating system
; ---------------------------------
MOV AX,4C00H ;9- End of
INT 21H ;10- processing
START ENDP ;11- End of procedure
create_file proc
lea dx,filename
mov ah,3ch
mov cx,00;file mamoli
int 21h
jc error1
ret
error1:
LEA DX,e_creat;address massage
MOV AH,9H;number function
INT 21H;number interrupt
create_file endp
;************************************************* ********
get_name proc
mov ah,0ah
;lea dx,str
int 21h
ret
get_name endp
;************************************************* ********
;************************************************* ********
w_file proc
mov ah,40h
lea dx,st_name
mov cx,37
int 21h
ret
w_file endp
;************************************************* ********
;************************************************* ********
;************************************************* ******
;************************************************* ******
close_file proc
mov ah,3eh
int 21h
ret
close_file endp
CODESG ENDS ;12- End of segment
END START ;13- End of program
این کد مشخصات شخص رو دریافت کرده و در فایل ذخیره می کند اما مشکل اینجاست که فقط رشته آخری را ذخیره می کند ، لطف کنید این کد رو برای من کامل کنید اگر برای شما مقدور بود می خواستم قسمت جست و جو نیز به این کد اضافه شود .
; 1- Define stack segment
; -----------------------
STACKSG SEGMENT STACK 'STACK'
db 256 DUP(0)
STACKSG ENDS ; End of segment
;-----------------------------------------------
; 2- Define data segment
; ----------------------
DATASG SEGMENT PARA 'DATA'
; add your data here!
MSG1 DB 'Please enter yout code: ',"$"
MSG2 DB 'Please enter your name: ',"$"
MSG3 DB 'Please enter your family: ',"$"
filename db 'D:\EXAMPLE.txt',00h
ohandle dw ?
e_creat db "error1","$"
str label byte
max DB 255
len DB ?
st_name DB 45 dup(' '),"$";,0dh,0ah
DATASG ENDS ; End of segment
;-----------------------------------------------
; 3- Define code segment
; ----------------------
;
CODESG SEGMENT PARA 'CODE'
ASSUME DS:DATASG,CS:CODESG,SS:STACKSG
START PROC FAR
MOV AX,DATASG ;1-Initialize DS
MOV DS,AX ;2- register
MOV ES,AX
; Main program
; ------------
; ------------------- write program here
call create_file ;1
mov ohandle,ax
call close_file
MOV AH,2H ;CURSOR
MOV DH,10 ;ROW
MOV DL,30 ;COLUMN
MOV BH,0 ;PAGE NUMBER
INT 10H
;2
LEA DX,MSG1 ;address massage ;3
MOV AH,9H ;number function
INT 21H
CALL GET_NAME
MOV AH,2H ;CURSOR
MOV DH,12 ;ROW
MOV DL,30 ;COLUMN
MOV BH,0 ;PAGE NUMBER
INT 10H
LEA DX,MSG2
MOV AH,9H
INT 21H
CALL get_name1
MOV AH,2H ;CURSOR
MOV DH,14 ;ROW
MOV DL,30 ;COLUMN
MOV BH,0 ;PAGE NUMBER
INT 10H
LEA DX,MSG3
MOV AH,9H
INT 21H
lea dx,str ;number interrupt
call get_name ;4
cmp len,00
jz fin
mov bx,ohandle
call w_file
;5
call get_name
fin:
end1:
;--------------------------- end of program
; Come back to operating system
; ---------------------------------
MOV AX,4C00H ;9- End of
INT 21H ;10- processing
START ENDP ;11- End of procedure
create_file proc
lea dx,filename
mov ah,3ch
mov cx,00;file mamoli
int 21h
jc error1
ret
error1:
LEA DX,e_creat;address massage
MOV AH,9H;number function
INT 21H;number interrupt
create_file endp
;************************************************* ********
get_name proc
mov ah,0ah
;lea dx,str
int 21h
ret
get_name endp
;************************************************* ********
;************************************************* ********
w_file proc
mov ah,40h
lea dx,st_name
mov cx,37
int 21h
ret
w_file endp
;************************************************* ********
;************************************************* ********
;************************************************* ******
;************************************************* ******
close_file proc
mov ah,3eh
int 21h
ret
close_file endp
CODESG ENDS ;12- End of segment
END START ;13- End of program