各位大哥帮小弟看一下那里错了!!!!

chenyec 2004-07-06 07:46:40
data segment
fname db 'c:\masm\myasm.asm'
filesize dw ?
handle dw ?
buff db 1024 dup (?)
error db 'file error'
tab dw handle,fname,buff,filesize
data ends
stack segment stack 'stack'
dw 100 dup (?)
stack ends
;-------------------------code1--------------------------
code1 segment
assume cs:code1
assume ds:data
assume ss:stack
errorp proc far
mov ah,4ch
int 21h
ret
errorp endp
openfile proc far
push ds
push ax
push dx
pushf
mov ah,3dh
mov al,0
mov di,[tab+2]
mov dx,[di]
int 21h
jnc win
call errorp
win:
mov di,[tab]
mov [di],ax
popf
pop dx
pop ax
pop ds
ret
openfile endp
code1 ends
end
;--------------------code2-----------------------
code2 segment
assume ds:data
assume cs:code2
assume ss:stack
redfile proc far
mov ah,42h
mov al,2
mov di,[tab]
mov bx,[di]
mov cx,0
mov cx,0
int 21h
jnc win2
call errorp
win2:
mov [tab+6],ax
mov ah,3fh
mov di,[tab]
mov bx,[di]
mov di,[tab+6]
mov cx,[di]
mov di,[tab+4]
mov dx,[di]
jnc win21
call errorp
win21:
mov ah,3eh
mov di,[tab]
mov bx,[di]
int 21h
ret
redfile endp
code2 ends
end
;-------------------------code3-----------------------
code3 segment
assume cs:code3
assume ds:data
assume ss:stack
creafile proc far
mov ah,3ch
mov di,[tab+2]
mov cx,0
mov si,'1'
mov [di+13],si
mov dx,[di]
int 21h
jnc win3
call errorp
win3:
mov di,[tab]
mov [di],ax
ret
creafile endp
;---------------------------------------
wifile proc far
mov ah,40h
mov di,[tab]
mov bx,[di]
mov di,[tab+6]
mov cx,[di]
mov di,[tab+4]
mov dx,[di]
int 21h
jnc win4
call errorp
win4:
mov ah,3eh
mov di,[tab]
mov bx,[di]
int 21h
ret
wifile endp
errorp proc far
mov ah,4ch
int 21h
ret
errorp endp
code3 ends
end
;------------------------maincode------------------------
code segment
assume cs:code
assume ds:data
assume ss:stack
main proc far
call openfile
call redfile
call carafile
call wifile
mov ah,4ch
int 21h
ret
main endp
end
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdsjkk 2004-07-10
  • 打赏
  • 举报
回复
data segment
fname db 'c:\masm\myasm.asm',0 ;
filesize dw ?
handle dw ?
buff db 10240 dup (?) ;
error db 'file error',24h ;
tab dw handle,fname,buff,filesize
data ends
stack segment stack 'stack'
dw 100 dup (?)
stack ends
;-------------------------code1--------------------------
code1 segment
assume cs:code1
assume ds:data
assume ss:stack
errorp proc far
mov ah,4ch
int 21h
ret
errorp endp
openfile proc far
push ds
push ax
push dx
pushf
mov ah,3dh
mov al,0
mov di,[tab+2]
mov dx,di ;[di]
int 21h
jnc win
call errorp
win:
mov di,[tab]
mov [di],ax
popf
pop dx
pop ax
pop ds
ret
openfile endp
code1 ends
; end
;--------------------code2-----------------------
code2 segment
assume ds:data
assume cs:code2
assume ss:stack
redfile proc far
mov ah,42h
mov al,2
mov di,[tab]
mov bx,[di]
mov cx,0
mov dx,0 ;cx,0
int 21h
jnc win2
call errorp
win2:
mov di,[tab+6] ;
mov [di],ax ; [tab+6],ax

mov ah,42h ;
mov al,0 ;
mov di,[tab] ;
mov bx,[di] ;
mov cx,0 ;
mov dx,0 ;cx,0 ;
int 21h ;
jnc win20 ;
call errorp ;
win20:

mov ah,3fh
mov di,[tab]
mov bx,[di]
mov di,[tab+6]
mov cx,[di]
mov di,[tab+4]
mov dx,di ;[di]
int 21h ;
jnc win21
call errorp
win21:
mov ah,3eh
mov di,[tab]
mov bx,[di]
int 21h
ret
redfile endp
code2 ends
; end
;-------------------------code3-----------------------
code3 segment
assume cs:code3
assume ds:data
assume ss:stack
creafile proc far
mov ah,3ch
mov di,[tab+2]
mov cx,0
mov si,'1'
mov [di+13],si
mov dx,di ;[di]
int 21h
jnc win3
call errorp
win3:
mov di,[tab]
mov [di],ax
ret
creafile endp
;---------------------------------------
wifile proc far
mov ah,40h
mov di,[tab]
mov bx,[di]
mov di,[tab+6]
mov cx,[di]
mov di,[tab+4]
mov dx,di ;[di]
int 21h
jnc win4
call errorp
win4:
mov ah,3eh
mov di,[tab]
mov bx,[di]
int 21h
ret
wifile endp
;errorp proc far
; mov ah,4ch
; int 21h
; ret
;errorp endp
code3 ends
; end
;------------------------maincode------------------------
code segment
assume cs:code
assume ds:data
assume ss:stack
main proc far
mov ax,data ;
mov ds,ax ;
call openfile
call redfile
call creafile ;
call wifile
mov ah,4ch
int 21h
ret
main endp
code ends ;
end main

SDFDSAC 2004-07-10
  • 打赏
  • 举报
回复
谢谢
programfanny 2004-07-10
  • 打赏
  • 举报
回复
我没的说了。先试试啦。
dunkel 2004-07-09
  • 打赏
  • 举报
回复
打开那个文件; 读入到内存里, 关闭文件; 创建一个文件; 将刚才读入的写到该文件, 关闭之
SDFDSAC 2004-07-09
  • 打赏
  • 举报
回复
上面这个程序的功能是什么?
dunkel 2004-07-06
  • 打赏
  • 举报
回复
; 错误不少, 注释后带 '*' 的 (';*') 的行是改动的, 删除, 或是新增的. 楼主自己对着看一下吧:

data segment
fname db 'c:\masm\myasm.asm', 0 ;* 文件名须以 00 结尾
filesize dw ?
handle dw ?
buff db 1024 dup (?)
error db 'file error'
tab dw handle,fname,buff,filesize
data ends
stack segment stack 'stack'
dw 100 dup (?)
stack ends
;-------------------------code1--------------------------
code1 segment
assume cs:code1
assume ds:data
assume ss:stack

errorp proc far
mov ah,4ch
int 21h
ret
errorp endp

openfile proc far
push ds
push ax
push dx
pushf
mov ah,3dh
mov al,0
mov dx,[tab+2] ;*
; mov dx,[di] ;*
int 21h
jnc win
call errorp
win:
mov di,[tab]
mov [di],ax
popf
pop dx
pop ax
pop ds
ret
openfile endp
code1 ends
; end ;*
;--------------------code2-----------------------
code2 segment
assume ds:data
assume cs:code2
assume ss:stack
redfile proc far
mov ah,42h
mov al,2
mov di,[tab]
mov bx,[di]
mov cx,0
mov dx,0 ;*
int 21h
jnc win2
call errorp
win2:
mov [tab+6],ax
mov ax, 4200h ;* 重回到文件开头
int 21h ;*
mov ah,3fh
mov di,[tab]
mov bx,[di]
mov cx,[tab+6] ;*
; mov cx,[di] ;*
mov dx,[tab+4] ;*
; mov dx,[di] ;*
int 21h ;*
jnc win21
call errorp
win21:
mov ah,3eh
mov di,[tab]
mov bx,[di]
int 21h
ret
redfile endp
code2 ends
; end ;*
;-------------------------code3-----------------------
code3 segment
assume cs:code3
assume ds:data
assume ss:stack
creafile proc far
mov ah,3ch
mov di,[tab+2]
mov cx,0
mov si,'1'
mov [di+13],si
mov dx,di ;*
int 21h
jnc win3
call errorp
win3:
mov di,[tab]
mov [di],ax
ret
creafile endp
;---------------------------------------
wifile proc far
mov ah,40h
mov di,[tab]
mov bx,[di]
mov cx,[tab+6] ;*
; mov cx,[di] ;*
mov dx,[tab+4] ;*
; mov dx,[di] ;*
int 21h
jnc win4
call errorp
win4:
mov ah,3eh
mov di,[tab]
mov bx,[di]
int 21h
ret
wifile endp

;errorp proc far ;*
; mov ah,4ch ;*
; int 21h ;*
; ret ;*
;errorp endp ;*

code3 ends
; end ;*
;------------------------maincode------------------------
code segment
assume cs:code
assume ds:data
assume ss:stack
main proc far
mov ax, data ;*
mov ds, ax ;*
call openfile
call redfile
call creafile
call wifile
mov ah,4ch
int 21h
ret
main endp
code ends ;*
end main ;*

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧