ورود

View Full Version : مشکل با سایز بافر



Collector
پنج شنبه 01 دی 1390, 19:15 عصر
سلام

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


(81) wrong parameters: MOV ECX,657462
(81) probably it's an undefined var: ECX

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


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 ;Path of afile
NAMES DB 'UNIVERSITY OF TEHRAN','$' ;File
NAME2 DB ?; DUP(' '),'$'
NAME3 DB '987','$'
;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 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 ECX,657450 ;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 ECX,657450 ;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, 0
mov dx, 7
mov ah, 42h
int 21h ; seek...
Seek1 ENDP
;-------------------------END OF PROGRAM-------------------------------------

END MAIN