汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-07-19 12:55] 练习:一个来自键盘输入生成文本文件的程序

图片载入中
前几天做的练习
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=32262&kindLevel=1&kindId=46612&postId=47978&readSg=1
生成的文件没有换行,郁闷了几天, 今天终于搞定啦!
程序很简单。就是把输入的文本一文件的形式保存在磁盘上。
其中有个问题,就是文件的大小总是显示buffer里定义的大小而不是实际的字节数。慢慢再研究吧。
;----------------------------------------------------
  1 assume  cs:code,ds:data
  2 data    segment
  3 buffer  db      1024 dup (?)
  4 fname   db      11 dup (0),0
  5 msg     db      'Named filename:','$'
  6 data    ends
  7 code    segment
  8 start:
  9         mov ax,data
 10         mov ds,ax
 11 ;begin input
 12         mov di,offset buffer
 13 s0:
 14         mov ah,1
 15         int 21h
 16         mov [di],al
 17         cmp al,1bh              ;if press ESC,input finished
 18         je ok
 19         cmp al,0dh              ;if press Enter,newline
 20         jz crlf
 21         jmp continue
 22 crlf:
 23         mov byte ptr [di+1],0ah
 24         mov ah,2
 25         mov dl,0dh
 26         int 21h
 27         mov dl,0ah
 28         int 21h
 29         add di,2
 30         jmp s0
 31 continue:
 32         inc di
 33         jmp s0
 34 ;
 35 ok:
 36         mov ah,2
 37         mov dl,0dh
 38         int 21h
 39         mov dl,0ah
 40         int 21h
 41         mov byte ptr [di],0
 42 ;
 43 ;input filename
 44 ;
 45         mov dx,offset msg
 46         mov ah,9
 47         int 21h
 48         mov cx,11
 49         mov di,offset fname
 50 s1:     mov ah,1
 51         int 21h
 52         cmp al,0dh
 53         jz creat
 54         mov [di],al
 55         inc di
 56         jmp s1
 57 ;
 58 creat:
 59 ;
 60 ;creat file
 61 ;
 62         mov ah,3ch
 63         mov cx,0
 64         mov dx,offset fname
 65         int 21h
 66         mov bx,ax               ;BX=FileHandle
 67 ;
 68 ;write buffer into file
 69 ;
 70         mov ah,40h
 71         mov cx,offset fname-offset buffer
 72         mov dx,offset buffer
 73         int 21h
 74 ;
 75 ;close file
 76 ;
 77         mov ah,3eh
 78         int 21h
 79 ;
 80         mov ah,4ch
 81         int 21h
 82 code    ends
 83 end     start
;----------------------------------------------------
评论次数(1)  |  浏览次数(1566)  |  类型(程序与练习) |  收藏此文  | 

[  游客   发表于  2011-10-26 16:40  ]

你好,我是一个初学者,能不能解释一下每一句的意思啊

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码