اطلاعیه

Collapse
No announcement yet.

نوشتن در انتهای فایل با اسمبلی

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • نوشتن در انتهای فایل با اسمبلی

    سلام

    این برنامه باید یک فایل را باز کند و در انتهای آن یک متن را اضافه کند.اما درست این کار را انجام نمیدهد.

    در ضمن بعد میخواهم این متن را بخوانم.


    کد PHP:
    TITLE  'disk_prg.asm'  disk programming
    ;-----------------------------------------------
          .
    MODEL SMALL
          
    .STACK 64
    ;-------------------DATA SEGMENT----------------
          .
    DATA
    HANDLE   DW  
    ?     ;File handle
    PATHNAM  DB  
    '1.txt',00H    ;Path of file
    NAMES    DB  
    'UNIVERSITY OF TEHRAN','$' ;File
    NAME2    DB  20 DUP
    (' '),'$'
    ;-------------------MAIN PROCEDURE--------------
          .
    CODE
    MAIN    PROC   FAR
        MOV  AX
    ,@data   ;1-Initialize segment
        MOV  DS
    ,AX      ;2registers
    ;----------------------     
        
        
    CALL OPEN1
        CALL WRITE1 
        CALL CLOSE1        
                 

    ;            Clear screen
            MOV AX
    ,0700H    ;9-AL=7H  
        MOV BH
    ,07H    ;10-White on black 
            MOV CX
    ,0000    ;11-Up left corner
        MOV DX
    ,18F8H    ;12-Right down corner
            INT 10H        
    ;13-Invoke interrupt
    ;          Write new file on monitor    
            LEA DX
    ,NAME2    ;14-DXNAME2 
            MOV AH
    ,09H      ;15-AH=09H  
            INT 21H        
    ;16-Invoke interrupt
    ;
        
    MOV AX,4C00H    ;17-End of
        INT 21H        
    ;18-  processing
    MAIN      ENDP
    ;--------------------- Open file-------------------------------
    OPEN1   PROC   NEAR
        MOV AH
    ,3DH      ;Request open
        MOV AL
    ,01       ;  normal file
        LEA DX
    ,PATHNAM    ;DX point to ASCIIZ
        INT 21H        
    ;Invoke interrupt
        MOV HANDLE
    ,AX   ;Save handle,
        
    RET        ;Return
    OPEN1   ENDP    
    ;-----------------------Write disk record-------
    WRITE1  PROC     NEAR
        MOV AH
    ,40H      ;Request write
        MOV BX
    ,HANDLE    ;Use HANDLE
        MOV CX
    ,20       ;Number of characters
        LEA DX
    ,NAMES    ;DX point to buffer NAMES 
        INT 21H        
    ;Invoke interrupt
        RET        
    ;Return
    WRITE1  ENDP
    ;-----------------------Close disk file-----------------------------
    CLOSE1  PROC     NEAR
        MOV AH
    ,3EH      ;Request close
        MOV BX
    ,HANDLE    ;Use HANDLE
        INT 21H        
    ;Invoke interrupt
        RET        
    ;Return
    CLOSE1  ENDP
    ;-------------------------END OF PROGRAM-------------------------------------
         
    END MAIN 
    Last edited by Black_Eagle; 12-21-2011, 08:56 AM.

  • #2
    کد:
    [LEFT].model small
    
    comment ~
    
    Just a little asm code by CryptO! ;)
    
    ~
    
    .code
    org 100h
    
    start:
    
    jmp main
    
    hFile            dw 0
    szPath           db "test.txt", 0
    readbuffer       db 25 dup(0), "$" ; buffer for first run
    logo             db "ut.ac.ir" ; data to append
    OpenErrorMsg     db 13, 10, "OpenFile failed ... $"
    AppendErrorMsg   db 13, 10, "Unable to write file ...$"
    ReadErrorMsg     db 13, 10, "ReadFile failed ... $" 
    
    main proc near
    
    	call OpenFile
    	jnb proceed
    	
    	mov dx, offset OpenErrorMsg
    	call print
    	jmp _leave
    	
    proceed:
    
    	call AppendFile ; file size is growing
    	jnb _readfile
    	
    	mov dx, offset AppendErrorMsg
    	call print
    	jmp _closehandle
    	
    _readfile:
    
    	call ReadFile
    	jnb _printfile
    	
    	mov dx, offset ReadErrorMsg
    	call print
    	jmp _closehandle
    	
    _printfile:
    	
    	mov dx, offset readbuffer
    	call print
    	
    _closehandle:
    
    	call CloseHandle
    
    _leave:
    
    	int 20h
    	
    main endp
    
    OpenFile proc
    
    	mov ax, 3D02h
    	mov dx, offset szPath
    	int 21h
    	mov hFile, ax 
    	ret
    	
    OpenFile endp
    
    AppendFile proc
    
    	push bx
    	
    	mov bx, ax ; hFile
    	mov ax, 4202h
    	xor cx, cx
    	and dx, cx
    	int 21h
    	
    	mov ah, 40h
    	mov cx, OpenErrorMsg - logo
    	mov dx, offset logo
    	int 21h
    	
    	pop bx
    	ret
    	
    AppendFile endp
    
    ReadFile proc
    	
    	push bx
    	
    	mov bx, hFile
    	mov ax, 4200h
    	xor cx, cx
    	mov dx, cx
    	int 21h
    	
    	mov ah, 3Fh
    	mov cx, 25 ; according to readbuffer!
    	mov dx, offset readbuffer
    	int 21h
    	
    	pop bx
    	ret
    	
    ReadFile endp
    
    CloseHandle proc
    
    	push bx
    	
    	mov bx, hFile
    	mov ah, 3Eh
    	int 21h
    	
    	pop bx
    	ret
    	
    CloseHandle endp
    
    print proc
    
    	mov ah, 09h
    	int 21h
    	ret
    	
    print endp
    
    end start[/LEFT]
    Last edited by CryptO; 01-21-2012, 03:02 AM.

    Comment


    • #3
      تشکر

      من میخوام همون متنی که به فایل اضافه شده فقط همون رو بخونم

      اصل برنامه ای که میخوام بنویسم این هست

      یک متن رو در فایل BMP مخفی کنم و اون رو بخونم.

      این هم سورس برنامه

      من رجیستر ها را 32 بیت کردم ولی بازم مشکل حل نشد.

      کد:
      TITLE  'disk_prg.asm'  disk programming
      ;-----------------------------------------------
      	  .MODEL SMALL 	  
      	  .STACK 64
      ;-------------------DATA SEGMENT----------------
      	  .DATA
      HANDLE   DW  ?     ;File handle
      PATHNAM  DB  'a:\1.bmp',00H    ;Path of file  
      PATHNAM2  DB  'a:\2.bmp',00H    ;Path2 of afile
      NAMES    DB  'UNIVERSITY OF TEHRAN','$' ;File
      NAME2    DB ? ;DUP(' '),'$'  
      ;NAME3    DB  '987','$'  
      
      ;NAME2    DD 1000 DUP(' ')
      ;data_size = $-offset NAME2
          
        ; 657462 
          
      ;File
      ;-------------------MAIN PROCEDURE--------------
      	  .CODE
      MAIN	PROC   FAR
      	MOV  AX,@data   ;1-Initialize segment
      	MOV  DS,AX  	;2- registers
      ;---------------------- 
      
          ;CALL CREAT1  	 ;3-Call creat file	
      	;CALL WRITE1     ;4-Call write records
      	;CALL CLOSE1     ;5-Call close file
            	
      	CALL OPEN1       ;6-Call open file
      	;Call Seek1
      	CALL READ1       ;7-Call read records  	
      	CALL CLOSE1      ;8-Call close file  	
      	
      	CALL OPEN2 	
      	CALL WRITE1  
      	Call WRITE2
      	CALL CLOSE1
      	        
      
              ; Clear screen     
              
              ;MOV AX,0700H;9-AL=7H  
      	    ;MOV BH,07H	;10-White on black 
              ;MOV CX,0000	;11-Up left corner
      	    ;MOV DX,18F8H;12-Right down corner
              ;INT 10H		;13-Invoke interrupt 
              
              ; Write new file on monitor
              	
              ;LEA DX,NAME2;14-DX= NAME2 
              ;MOV AH,09H  ;15-AH=09H  
              ;INT 21H		;16-Invoke interrupt
              
      	    MOV AX,4C00H;17-End of
      	    INT 21H		;18-  processing    
      	
      MAIN      ENDP
      
       ;--------------------- Open file2-------------------------------
      OPEN2   PROC   NEAR
      	MOV AH,3DH      ;Request open
      	MOV AL,01       ;normal file
      	LEA DX,PATHNAM2	;DX point to ASCIIZ
      	INT 21H		;Invoke interrupt
      	MOV HANDLE,AX   ;Save handle,
      	RET		;Return
      OPEN2   ENDP
      
      ;--------------------- Open file-------------------------------
      OPEN1   PROC   NEAR
      	MOV AH,3DH      ;Request open
      	MOV AL,00       ;normal file
      	LEA DX,PATHNAM	;DX point to ASCIIZ
      	INT 21H		;Invoke interrupt
      	MOV HANDLE,AX   ;Save handle,
      	RET		;Return
      OPEN1   ENDP
      ;----------------------Read disk record---------
      READ1   PROC    NEAR
      	MOV AH,3FH      ;Request read
      	MOV BX,HANDLE	;Use HANDLE
      	MOV CX,657462   ;Number of characters 
      	LEA DX,NAME2    ;DX point to buffer NAME2
      	INT 21H		;Invoke interrupt
      	RET		;Return
      READ1   ENDP
      ;-----------------------Create disk file-------------
      CREAT1  PROC     NEAR
      	MOV AH,3CH      ;Request create
      	MOV CX,00       ;Normal
      	LEA DX,PATHNAM	;DX point to ASCIIZ
      	INT 21H		;Invoke interrupt
      	MOV HANDLE,AX   ;Save handle
      	RET		;Return
      CREAT1  ENDP                                      
      ;-----------------------Write1 disk record-----------
      WRITE1  PROC     NEAR
      	MOV AH,40H      ;Request write
      	MOV BX,HANDLE	;Use HANDLE
      	MOV CX,657462        ;Number of characters
      	LEA DX,NAME2    ;DX point to buffer NAME2
      	INT 21H		    ;Invoke interrupt
      	RET		        ;Return
      WRITE1  ENDP       
      
      ;-----------------------Write2 disk record-------
      WRITE2  PROC     NEAR
      	MOV AH,40H      ;Request write
      	MOV BX,HANDLE	;Use HANDLE
      	MOV CX,20       ;Number of characters 	
      	LEA DX,NAMES    ;DX point to buffer NAMES   
      	INT 21H	     	;Invoke interrupt
      	RET		        ;Return
      WRITE2  ENDP
      
      ;-----------------------Close disk file-----------------------------
      CLOSE1  PROC     NEAR
      	MOV AH,3EH      ;Request close
      	MOV BX,HANDLE	;Use HANDLE
      	INT 21H		;Invoke interrupt
      	RET		;Return
      CLOSE1  ENDP
      
      ;-----------------------Seek disk file-----------------------------
      ;Seek1  PROC     NEAR
      ;    mov al, 1
       ;   mov bx, handle
       ;   mov cx, 2
       ;   mov dx, 7
       ;   mov ah, 42h
          ;int 21h ; seek...
      ;Seek1  ENDP    
      ;-------------------------END OF PROGRAM-------------------------------------
      
      	 END MAIN

      Comment


      • #4
        خب اشاره گر فايل رو بيار از هر جا دوست داري بخون. من اشاره گر رو اول فايل ست كردم تا كل فايل رو بخونه. به اندازه تعداد بايتهايي كه رايت ميكني اشاره گر رو بكش عقب! تابع اپند كه من نوشتم تعداد بايتهاي رايت شده رو برميگردونه. اين عدد رو از موقعيت فعلي اشاره گر فايل كم كن.

        Comment


        • #5
          نوشته اصلی توسط crypto نمایش پست ها
          خب اشاره گر فايل رو بيار از هر جا دوست داري بخون. من اشاره گر رو اول فايل ست كردم تا كل فايل رو بخونه. به اندازه تعداد بايتهايي كه رايت ميكني اشاره گر رو بكش عقب! تابع اپند كه من نوشتم تعداد بايتهاي رايت شده رو برميگردونه. اين عدد رو از موقعيت فعلي اشاره گر فايل كم كن.
          این اشاره گر کدوم خط هست.

          اگر ممکنه در مورد سایز بافر هم راهنمایی کنید.

          Comment


          • #6
            من ديشب سورس شما رو اصلا نيگا نكردم الان كه داشتم ميديدم يه سري نكات خيلي مهم رو اصلا رعايت نكردي.

            اولين مورد اينه كه وقتي مدل حافظه شما اسمال هست سگمنت ديتا بيشتر از 64 كيلو نميتونه باشه! شما 657462 بايت رو چطوري ميخوايي رزرو كني؟ هر چند كه ظاهرا بعدش اومدي درست كردي و شده 4 كيلو ولي هنوز تو كد از اين 657462 استفاده كردي.

            دوم اختصاص همين عدد به رجيستر 16 بيتي هست!

            سومي كه مهمترينه! هميشه براي آي او ميان از بافر استفاده ميكنن نه اينكه همه داده ها رو يه جا بخونن. تو حالت ريل مد كه داس هم با همين حالت سي پي يو كار ميكنه حافظه كل سيستم خيلي محدوده برا خوندن و نوشتن 600 كيلو ديتا بافر حتما لازمه و بايد تو يه حلقه اين تعداد بايت رو بخوني.

            يه سري هم پيشنهاد دارم مثلا يه عدد 32 بيتي رو آخر فايل بعنوان نشانگر تعداد بايتهايي كه به فايل اصلي اضافه كردي قرار بدي. اينجوري موقع خوندن هم راحت ميشه فهميد كه چند بايت مربوط به داده هاي جديده. دوم اينكه يه انكدينگ ساده برا داده هاي جديد اعمال كني تا چيزي كه به فايل اضافه كردي مستقيما و بدون ديكد شدن قابل خوندن با چشم نباشه.

            نهايتا اينكه اگه خواستي بگو كدش رو بنويسم.

            Comment


            • #7
              نوشته اصلی توسط crypto نمایش پست ها
              من ديشب سورس شما رو اصلا نيگا نكردم الان كه داشتم ميديدم يه سري نكات خيلي مهم رو اصلا رعايت نكردي.

              اولين مورد اينه كه وقتي مدل حافظه شما اسمال هست سگمنت ديتا بيشتر از 64 كيلو نميتونه باشه! شما 657462 بايت رو چطوري ميخوايي رزرو كني؟ هر چند كه ظاهرا بعدش اومدي درست كردي و شده 4 كيلو ولي هنوز تو كد از اين 657462 استفاده كردي.

              دوم اختصاص همين عدد به رجيستر 16 بيتي هست!

              سومي كه مهمترينه! هميشه براي آي او ميان از بافر استفاده ميكنن نه اينكه همه داده ها رو يه جا بخونن. تو حالت ريل مد كه داس هم با همين حالت سي پي يو كار ميكنه حافظه كل سيستم خيلي محدوده برا خوندن و نوشتن 600 كيلو ديتا بافر حتما لازمه و بايد تو يه حلقه اين تعداد بايت رو بخوني.

              يه سري هم پيشنهاد دارم مثلا يه عدد 32 بيتي رو آخر فايل بعنوان نشانگر تعداد بايتهايي كه به فايل اصلي اضافه كردي قرار بدي. اينجوري موقع خوندن هم راحت ميشه فهميد كه چند بايت مربوط به داده هاي جديده. دوم اينكه يه انكدينگ ساده برا داده هاي جديد اعمال كني تا چيزي كه به فايل اضافه كردي مستقيما و بدون ديكد شدن قابل خوندن با چشم نباشه.

              نهايتا اينكه اگه خواستي بگو كدش رو بنويسم.
              ممنون میشم این ها را با کد بگید.
              در مورد سایز
              و خواندن ازمکانی که نوشته شده فایل

              Comment


              • #8
                نوشته اصلی توسط Black_Eagle نمایش پست ها
                این اشاره گر کدوم خط هست.

                اگر ممکنه در مورد سایز بافر هم راهنمایی کنید.
                کد:
                [LEFT]
                AppendFile proc
                
                	push bx
                	
                	mov bx, ax ; hFile
                	mov ax, 4202h
                	xor cx, cx
                	and dx, cx
                	int 21h
                
                ...[/LEFT]
                وقتي فايلي رو باز يا ايجاد ميكني به طور پيش فرض اشاره گر فايل به اول فايل اشاره ميكنه. من تو اين قسمت از كد كه بالا گذاشتم اومدم اشاره گر رو بردم آخر فايل البته با فرض اينكه سايز فايل بزرگتر از صفر هست. اگه اين كار رو نكنم برنامه مياد داده هاي جديد رو رو داده هاي اصلي رو نويسي ميكنه. يعني اگه فايل من رو در نظر بگيري اين قسمت TEST BY CRYPTO!! تا بايت هشتمش رونويسي ميشه.

                به ازاي هر بايتي هم كه از فايل ميخوني يا به فايل مينويسي اشاره گر فايل تغيير ميكنه. يعني قبلا كه فايل 17 بايتي بود انتهاي فايل با آفست 16 مشخص ميشد و اشاره گر فايل رو برده بودم آفست 16 ام! وقتي من 8 بايت به فايل اضافه كردم الان اشاره گر فايل اومده آفست 24 ام! آفست ها از 0 شروع ميشن يعني الان فايل ما شده 25 بايت و من چون همه فايل رو ميخوام بخونم بافر 25 بايتي در نظر گرفتم كه با علامت دلارش ميشه 26 بايت. البته اين مقدار بافر براي بار اول اجراست يعني اگه شما برنامه رو چند بار اجرا كني هر بار 8 بايت به فايل اضافه ميشه ولي برنامه طبق تنظيمات من فقط 25 بايت اول رو ميخونه(يعني ممكنه طول فايل برسه به 33 يا 41 و بيشتر).

                راجع به خوندن از فايل: من تو تابع خوندن فايل اشاره گر رو از آخر فايل بردم به اول فايل تا هم محتواي قديم (TEST BY CRYPTO!! ) و هم جديد (ut.ac.ir) رو بخونه. اگه ميخواستم فقط متن تازه اضافه شده رو بخونم كافي بود اشاره گر فايل رو كه آخر فايل قرار داشت 8 بايت ببرم عقب تر! اميدوارم توضيحاتم واضح باشه. راجع به بافر هر كجا رو خواستي بگو توضيح بدم.

                Comment


                • #9
                  ممکنه ساده تر توضیح بدید
                  من میام در این کد رو به صورت زیر تغییر میدم فقط 5 بایت اول فایل رو میخونه
                  من میخوام به همون اندازه که آخر فایل نوشتم به همون اندازه بخونم.

                  من که متوجه نشدم چطوری میتونم بگم مثلا از کاراکتر پنجم بخونه


                  کد:
                  ReadFile proc
                  	
                  	push bx
                  	
                  	mov bx, hFile
                  	mov ax, 4200h
                  	xor cx, cx
                  	mov dx, cx
                  	int 21h
                  	
                  	mov ah, 3Fh
                  	mov cx, 5 ; according to readbuffer!
                  	mov dx, offset readbuffer
                  	int 21h
                  	
                  	pop bx
                  	ret
                  	
                  ReadFile endp
                  Last edited by Black_Eagle; 12-22-2011, 03:20 AM.

                  Comment


                  • #10
                    چند تا سوال فقط:

                    شما يه چيزي به فايل گرافيكي اضافه ميكني. حالا اين كه اضافه ميكني فقط متن هست ديگه درسته؟

                    اگه برنامه رو چند بار اجرا كني هر بار يه متن رو به انتهاي فايل اضافه ميكنه. من ميخوام اين حالت پيش نياد يعني اگه 3 بار اين برنامه رو يه گرافيكي اجرا بشه دفعات دوم و سوم يه متن تكراري ته فايل اضافه نشه! پيشنهاد من اينه كه از يه سيگنچر استفاده كنيم برا اينكه بدونيم فايل تا الان چيزي بهش اضافه شده يا نه اگه نشده اضافه كنيم و اگه شده قبلي رو پاك كنيم(رونويسي) و جديد رو جاش بنويسيم. اگه خواسته شما غير اينه توضيحاتش رو خودت بده.

                    Comment


                    • #11
                      نوشته اصلی توسط crypto نمایش پست ها
                      چند تا سوال فقط:

                      شما يه چيزي به فايل گرافيكي اضافه ميكني. حالا اين كه اضافه ميكني فقط متن هست ديگه درسته؟

                      اگه برنامه رو چند بار اجرا كني هر بار يه متن رو به انتهاي فايل اضافه ميكنه. من ميخوام اين حالت پيش نياد يعني اگه 3 بار اين برنامه رو يه گرافيكي اجرا بشه دفعات دوم و سوم يه متن تكراري ته فايل اضافه نشه! پيشنهاد من اينه كه از يه سيگنچر استفاده كنيم برا اينكه بدونيم فايل تا الان چيزي بهش اضافه شده يا نه اگه نشده اضافه كنيم و اگه شده قبلي رو پاك كنيم(رونويسي) و جديد رو جاش بنويسيم. اگه خواسته شما غير اينه توضيحاتش رو خودت بده.

                      من فقط میخوام به انتهای یک فایل گرافیکی بیت مپ یک متن رو اضافه کنم
                      و به صورتی که برای فایل گرافیکی هیچ اتفاقی نیفته
                      و بعد اون متنی رو که مخفی کردم رو بخونم. همین
                      مسلما من فقط میخوام یک متن رو اضافه کنم (برای این کار هم میتونیم یه متنی رو بعد از انتهای فایل قرار بدیم که بیایم بعد از اون رو بخونیم)

                      ممنون میشم با کد راهنمایی کنید

                      Comment


                      • #12
                        راجع به سوالي كه 5 بايت ميخواستي بخوني! اين كد رو ببين:

                        کد:
                        [LEFT]
                        ReadFile proc
                        	
                        	push bx
                        	
                        	mov bx, hFile
                        	mov ax, 4200h
                        	sub cx, cx ; (High word of the offset)
                        	mov dx, 17 ; initial size (Low word of the offset)
                        	int 21h
                        	
                        	mov ah, 3Fh
                        	mov cx, 8
                        	mov dx, offset readbuffer
                        	int 21h
                        	
                        	pop bx
                        	ret
                        	
                        ReadFile endp[/LEFT]
                        فايل اوليه من 17 بايت بود و 8 تا آخرش نوشتم الان شده 25 بايت! اشاره گر فايل رو ميارم آفست 17 تا اين 8 بايت جديد رو بخونم(يعني از 17 تا 25 رو). اين 17 همون سايز اصلي فايل قبل از تغيير هست و از يه ديدگاه ديگه آفست فعلي اشاره گر (25) منهاي بايتهاي تازه نوشته شده(8) هست كه من از ديشب هي ميگم به اندازه بايتهاي نوشته شده اشاره گر رو بيار عقب منظور همينه.

                        راجع به فايل گرافيكي نميدونم وقتي چيزي تهش اضافه ميكني فايل خراب ميشه يا نه! با اين جور چيزا من هيچ وقت ور نميرم! علاقه اصليم روت كيت و نوشتن اكسپلويت برا كرنل ويندوزه. باز اگه سوالي هست خوشحال ميشم كمك كنم.

                        Comment


                        • #13
                          نوشته اصلی توسط crypto نمایش پست ها
                          راجع به فايل گرافيكي نميدونم وقتي چيزي تهش اضافه ميكني فايل خراب ميشه يا نه! با اين جور چيزا من هيچ وقت ور نميرم! علاقه اصليم روت كيت و نوشتن اكسپلويت برا كرنل ويندوزه. باز اگه سوالي هست خوشحال ميشم كمك كنم.
                          ممنون مشکل خواندن اون متن حل شد

                          من امتحان کردم اگر در آخر فایل بیت مپ بنویسیم مشکلی پیش نمیاید.
                          حالا مشکل با سایز فایل هست.

                          اگر لطف کنید بگید برای سایز باید چه کار کنم.

                          Comment


                          • #14
                            منظورت از مشكل با سايز فايل رو دقيق نگرفتم. يعني ميخوايي متن اضافه كني و سايز فايل دست نخورده بمونه و تغييري نكنه يا منظورت يه چيز ديگه ست؟

                            Comment


                            • #15
                              نوشته اصلی توسط CryptO نمایش پست ها
                              منظورت از مشكل با سايز فايل رو دقيق نگرفتم. يعني ميخوايي متن اضافه كني و سايز فايل دست نخورده بمونه و تغييري نكنه يا منظورت يه چيز ديگه ست؟
                              منظورم این هست که اگر در کد زیر بیایم اشاره گر رو 60000 قرار بدیم سایزش جواب نمیده

                              کد:
                              ReadFile proc
                              	
                              	push bx
                              	
                              	mov bx, hFile
                              	mov ax, 4200h
                              	sub cx, cx ; (High word of the offset)
                              	mov dx, 10000 ;Size File 
                              	;initial size (Low word of the offset)
                              	int 21h
                              	
                              	mov ah, 3Fh
                              	mov cx, 08  ;Size Read
                              	mov dx, offset readbuffer
                              	int 21h
                              	
                              	pop bx
                              	ret
                              	
                              ReadFile endp
                              به نظر من یه کار دیگه هم میشه کرد ما بیایم از آخر فایل مثلا 8 تا کاراکتر که نوشتیم رو بخونیم.
                              آیا این کار میشه

                              اگر سایز فایل را 657462 انتخاب کنم. این ارور را نشان میدهد.

                              کد:
                              (104) cannot be evaluated: 657462
                              (104) undefined variable or over 16 bits
                              Last edited by Black_Eagle; 12-22-2011, 05:30 AM.

                              Comment

                              Working...
                              X