📄 file.asm
字号:
DATAS SEGMENT
file1 db 'e:\file1.txt', 0 ;文件名
file2 db 'e:\file2.txt', 0
buf1 db 256 dup(0) ;文件内容暂存区
buf2 db 256 dup(0)
hand1 dw ? ;保存文件号
hand2 dw ?
begin dw ?
last dw ?
count dw ?
row1 db 0ah,0dh,'please input the row of beginning:$'
row2 db 0ah,0dh,'please input the row of ending:$'
file3 db 0ah,0dh,'the content of new text is:$'
message db 0ah,0dh, 'ok !$' ;操作成功后的提示
error db 0ah,0dh, 'error !$' ;出错时的提示
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
mov dx,offset file1
mov al,0
mov ah,3dh
int 21h ;打开文件
jc err1 ;若打开出错,转err1
mov hand1,ax ;保存文件号
mov bx,ax
mov cx,255
mov dx,offset buf1
mov ah,3fh
int 21h ;从文件中读255字节→buf1
jc err1 ;若读出错,转err1
mov bx,ax ;实际读到的字符数送入bx
mov buf1[bx],'$' ;在文件结束处放置一“$”符
mov dx,offset buf1
mov ah,9
int 21h
mov dx,offset row1
mov ah , 9
int 21h
mov bx,0
newchar1:
mov ah,1 ;输入复制的起始行
int 21h
sub al,30h ;将输入的十进制数转换为二进制数
jl exit1 ;输入的不是数字则跳出
cmp al,9
jg exit1 ;输入的不是数字则跳出
and ax,0ffh
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp newchar1
exit1:
mov begin,bx
jmp continue
err1:
mov dx , offset error
mov ah , 9
int 21h ;输出错误信息
jmp end1
continue:
mov dx , offset row2
mov ah , 9
int 21h
mov bx,0
newchar2: ;输入复制的截止行
mov ah,1
int 21h ;将输入的十进制数转换为二进制数
sub al,30h
jl exit2 ;输入的不是数字则跳出
cmp al,9d
jg exit2 ;输入的不是数字则跳出
cbw
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp newchar2
exit2:
mov last,bx
mov ax,begin
dec ax
mov cx,22 ;每行字符规定为20个
mul cx
mov dx,ax
mov al,00
mov bx,hand1 ;保存文件号
mov cx,00
mov ah,42h
int 21h ;定位文件指针
jc err2 ;出错,转err2处
mov ax,last
sub ax,begin
inc ax ;ax中存入复制的行数
mov cx,22d
mul cx
mov cx,ax
mov count,ax ;count中存入复制的字节数
mov bx,hand1 ;保存文件号
mov dx,offset buf2
mov ah , 3fh
int 21h ;从文件中读相应字节→buf
jc err2 ;若读出错,转err2
mov bx,ax ;实际读到的字符数送入bx
mov buf2[bx],'$' ;在文件结束处放置一“$”符
mov bx , hand1 ;保存文件号
mov ah , 3eh
int 21h
jc err2 ;关闭文件1出错,转err2处
mov dx , offset file2
mov cx , 0
mov ah , 3ch
int 21h ;创建文件,若磁盘上原有此文件,则覆盖
jc err2 ;创建出错,转err2处
mov hand2 , ax ;保存文件号
mov bx , ax
mov cx , count
mov dx , offset buf2
mov ah , 40h
int 21h
jc err2 ;写出错,转err2处
mov bx , hand2
mov ah , 3eh
int 21h ;关闭文件
jc err2 ;关闭文件出错,转err2处
mov dx , offset message
mov ah , 9
int 21h ;操作成功后显示提示
mov dx , offset file3
mov ah , 9
int 21h
mov dx , offset buf2 ;输出复制的具体内容
mov ah , 9
int 21h
jnc end1
err2:
mov dx , offset error
mov ah , 9
int 21h ;显示错误提示
end1:
MOV AH,4CH
INT 21H
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -