80x86汇编题目
题目描述:编写一个程序,将当前目录下文件 FIE10.TXT 的所有小写字母改为大写字母,然后拷贝到当前目录文件 FILE20.TXT。
思路:
1,分别打开两个文件,保存文件句柄
2,读取FILE10文件的一个字节到BUF内存中。
3,判断是否为小写。非小写字母直接写入到FILE20文件中,小写字母转换后写入到FILE20文件中
4,全部扫描之后,关闭两个文件。
5,在文件操作时,遇到错误会返回CF标志位为1,每次文件操作都应该带上JC ERR,进行对应的错误处理。本程序为了方便,所有都跳转到了ERR,实际上要分开错误类型处理。
DATAS SEGMENT
FN1 DB 'FILE10.TXT',0
FH1 DW ?
FN2 DB 'FILE20.TXT',0
FH2 DW ?
BUFF DB 10 DUP(?)
ERRSTR DB 'SOMETHING ERROR!','$'
DATAS ENDS
STACKS SEGMENT
DW 30H DUP(0)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP ;初始化
OPEN:
MOV AH,3CH
MOV CX,0
LEA DX,FN2
INT 21H
JC ERR
MOV FH2,AX
MOV AH,3DH
MOV AL,0
LEA DX,FN1
INT 21H
JC ERR
MOV FH1,AX
READ:
MOV AH,3FH
MOV BX,FH1
MOV CX,1
LEA DX,BUFF
INT 21H
JC ERR
CMP AX,0
JE CLSF
CHANGE:
MOV AL,[BUFF]
CMP AL,61H
JB WRITE
CMP AL,7AH
JA WRITE
SUB AL,20H
MOV [BUFF],AL
WRITE:
MOV AH,40H
MOV BX,FH2
MOV CX,1
INT 21H
JMP READ
CLSF:
MOV AH,3EH
MOV BX,FH1
INT 21H
JC ERR
MOV AH,3EH
MOV BX,FH2
INT 21H
JC ERR
JMP EXIT
ERR:
LEA DX,ERRSTR
MOV AH,9
INT 21H
EXIT:
MOV AH,4CH
INT 21H
CODES ENDS
END START