⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file.asm

📁 汇编语言程序
💻 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 + -