mehrdad1261
شنبه 07 دی 1387, 16:03 عصر
سلام دوستان
می خواستم یه رشته را درون یک فایل ذخیره کنم.
دنبال وقفه ها گشتم (int 21h) ولی چیز زیادی دسگیرم نشد .
اگر از دوستان کسی مثالی داره کمک کنه .
Open-Source
شنبه 07 دی 1387, 16:41 عصر
; this sample gets a string from a user, then it prints it out.
; this example uses dos interrupt: 21h
name "int21"
org 100h
jmp start
; when no file path is specified the default file path is:
; c:\emu8086\MyBuild
; if path is specified, it is emulated in:
; c:\emu8086\vdrive\
; for example, c:\test.txt is c:\emu8086\vdrive\c\test.txt
; this is done to prevent disasters and accidental overwriting of valuable files.
; relative paths such as "c:\mydir\..\autoexec.bat" are disabled for the same reasons.
; declarations:
; buffers hold ascii chars for INT 21h/0Ah input function,
; first byte is its maximum size, second byte: actual size.
; format of INT 21h/0Ah input buffer:
; -byte-offset- -number-of-bytes- -description-
; 00 1 buffer size
; 01 1 number of characters actually read (excluding cr).
; 02 1 to buffer-size actual buffer contents (including cr).
s1 db 100,?, 100 dup(' ')
t2 db 100,?, 100 dup(' ')
filename db 30,?, 30 dup(' ') ; file name should be in 8.3 - dos compatible format.
; file handle:
handle dw 0
; set segment registers to code:
start: mov ax, cs
mov ds, ax
mov es, ax
jmp m1
msg1 db "enter any text: $"
m1: mov dx, offset msg1
mov ah, 9
int 21h
; input a string:
mov dx, offset s1
mov ah, 0ah
int 21h
jmp m2
msg2 db 0Dh,0Ah,"enter file name: $"
m2: mov dx, offset msg2
mov ah, 9
int 21h
; input filename:
mov dx, offset filename
mov ah, 0ah
int 21h
; set 0 to the end of the filename:
xor bx, bx
mov bl, filename[1] ; get actual size.
mov filename[bx+2], 0
; create new file:
mov cx, 0
mov ah, 3ch
mov dx, offset filename+2
int 21h
jc error
mov handle, ax
; write buffer to file:
mov ah, 40h
mov bx, handle
mov dx, offset s1+2
xor cx, cx
mov cl, s1[1]
int 21h
jc error
; close file
mov bx, handle
mov ah, 3eh
int 21h
jc error
; open existing file:
mov al, 0 ; read.
mov ah, 3dh
mov dx, offset filename+2
int 21h
jc error
mov handle, ax
; read bytes from file
mov ah, 3fh
mov bx, handle
xor cx, cx
mov cl, t2[0]
mov dx, offset t2[2]
int 21h
jc error
mov t2[1], al
; close file
mov bx, handle
mov ah, 3eh
int 21h
jc error
jmp m3
msg3 db 0Dh,0Ah,"read from file: $"
m3: mov dx, offset msg3
mov ah, 9
int 21h
; set '$' to the end of the buffer:
xor bx, bx
mov bl, t2[1] ; get actual size.
mov t2[bx+2], '$'
; print the buffer:
mov dx, offset t2[2] ; skip 2 control bytes.
mov ah, 9
int 21h
jmp ok
; print error message:
error: jmp m5
msg5 db 0Dh,0Ah,"error...",0Dh,0Ah,'$'
m5: mov dx, offset msg5
mov ah, 9
int 21h
ok:
jmp m4
msg4 db 0Dh,0Ah,"press any key...",0Dh,0Ah,'$'
m4: mov dx, offset msg4
mov ah, 9
int 21h
mov ah, 0
int 16h
; exit to the operating system:
mov ah, 4ch
int 21h
اینم یه نمونه کد.امیدوارم که به دردت بخوره
mehrdad1261
شنبه 07 دی 1387, 19:12 عصر
سلام
دستت درد نکنه.
یه کم توضیح میدی. اون فایل رو کجا میسازه . بعد اگر خواستم برنامه رو ببندم بعد باز کنم و اون فایل رو به خونم چی کار باید بکنم . راستش می خوام اون رشته رو ذخیره کنم . (save,open)
Open-Source
شنبه 07 دی 1387, 20:34 عصر
هر کجا که فایل exe اجرا بشه در کنارش فایل رو میسازه(البته فایل پسوند نداره)که میتونی با notepad باز کنی وببینی.
ویه خورده خودت فعالیت کن اگه به مشکل خوردی سوال بپرس.(آخه الان وقت و حوصله کد نوشتن ندارم).
یاحق.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.