汇编语言实验之文件内容大小写转换

本实验题目:将一个文件myprog.txt里面的内容中的大写字母全部转化为小写,且不能使用临时文件。

题目实现思路:

1、采用读和写的方式打开myprog.txt文件

2、读取文件的数个内容放入缓冲区BUFF中

3、将BUFF缓冲区中的内容全部转化为小写

4、将指针移动到每一次读取文件的开始位置

5、将BUFF缓冲区中的内容覆盖原位置的内容

6、读取内容和覆盖内容以及大小写转化都可用循环实现

7、关闭文件并退出

源代码如下:

  1. DATA SEGMENT;定义数据段 
  2. MESS DB 'File Handle Error!',07,13,10,'$'
  3. FN1 DB 'myprog.txt',00H;myprog.txt放在工作目录下
  4. FH1 DW ?
  5. BUFF DB 20 DUP(0)
  6. DATA ENDS

  7. SSEG  SEGMENT STACK;定义栈段
  8. DB 256 DUP(?)
  9. TOP LABEL BYTE
  10. SSEG  ENDS

  11. CODE  SEGMENT;定义代码段
  12. ASSUME CS:CODE,DS:DATA,SS:SSEG
  13. MAIN  PROC FAR
  14. START:MOV AX,SSEG;栈初始化
  15. MOV SS,AX
  16. LEA SP,TOP
  17.   
  18. MOV AX,DATA;数据段初始化
  19. MOV DS,AX
  20.   
  21. MOV AH,3DH;以读和写方式打开已存在的文件
  22. LEA DX,FN1
  23. MOV AL,2
  24. INT 21H
  25. JC Error
  26. MOV FH1,AX
  27.   
  28. MOV BX,FH1
  29. LEA DX,BUFF
  30. L1:MOV AH,3FH;读取文件内容,每次读取10字节
  31. MOV CX,10 
  32. INT 21H
  33. JC Error;文件处理错误提示
  34. CMP AX,0
  35. JE ENDFILE
  36.   
  37. PUSH AX
  38. PUSH CX
  39. PUSH DX
  40. PUSH BX
  41. MOV CX,AX
  42. XOR SI,SI
  43.   
  44. TRANL:MOV DL,00100000B;将大写字母转化为小写字母用OR DL 00100000B
  45. OR  BUFF[SI],DL;将小写字母转化为大写字母用AND DL 11011111B             
  46. INC SI
  47. LOOP TRANL
  48.   
  49. POP BX;移动指针到每一次读取文件的地方进行转化后的覆盖
  50. MOV CX,0FFFFH;指针要向前移动,故CX:DX应为负值
  51. NEG AX
  52. MOV DX,AX
  53. MOV AL,1
  54. MOV AH,42H
  55. INT 21H
  56. JC Error
  57.    
  58. POP DX
  59. POP CX
  60. POP AX
  61.   
  62. MOV CX,AX;用转化后的内容覆盖原位置文件内容
  63. MOV AH,40H
  64. INT 21H
  65. JC Error
  66. JMP L1
  67.   
  68. Error:LEA DX,MESS;文件处理错误提示
  69. MOV AH,9
  70. INT 21H
  71. MOV AX,4C00H
  72. INT 21H
  73.   
  74. ENDFILE:MOV BX,FH1;结束操作
  75. MOV AH,3EH
  76. INT 21H
  77. MOV AX,4C00H
  78. INT 21H

  79. MAIN ENDP
  80. CODE ENDS
  81.  END START
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值