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

我的博客

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

[2010-07-17 22:33] 练习:显示文件内容【终结版】

终于搞定啦。 
-------------------------------------------------------
  1 ;cat.asm
  2 ;display file
  3 assume  cs:code,ds:data
  4 data    segment
  5 buffer  dw      4096 dup (?)         
  6 fname   db      11 dup (0),0         
  7 error1  db      'need a filename.$'
  8 error2  db      'Unkown filename!$'
  9 handle  dw      0                   
 10 data    ends
 11 ;
 12 code    segment
 13 start:
 14         mov ax,data
 15         mov ds,ax
 16 ;
 17 ;check filename
 18 ;
 19         mov al,es:[80h]
 20         cmp al,0
 21         jz err2
 22 ;
 23 ;read filename from es:82h to ds:fname
 24 ;
 25         mov si,82h
 26         mov di,offset fname
 27 s:      mov al,es:[si]
 28         cmp al,0dh
 29         jz ok
 30         mov [di],al
 31         inc si
 32         inc di
 33         jmp s
 34 ok:
 35 ;
 36 ;open file
 37 ;
 38         mov ah,3dh
 39         mov dx,offset fname
 40         int 21h
 41         jc err2
 42         mov bx,ax               ;
 43         mov handle,ax           ;Save FileHandle
 44
 45 ;
 46 ;read file into buffer
 47 ;
 48         mov ah,3fh
 49         mov cx,offset fname-offset buffer
 50         mov dx,offset buffer
 51         int 21h
 52 ;
 53 ;display
 54 ;
 55         mov bx,ax               ;ax=file size
 56         mov buffer[bx],24h
 57         mov bx,1
 58         mov cx,ax
 59         mov dx,offset buffer
 60         mov ah,40h
 61         int 21h
 62 ;close file
 63 ;
 64         mov bx,handle
 65         mov ah,3eh
 66         int 21h
 67 ;
 68 over:   mov ah,4ch
 69         int 21h
 70 ;
 71 err1:   mov dx,offset error1
 72         mov ah,9
 73         int 21h
 74         jmp over
 75 err2:   mov dx,offset error2
 76         mov ah,9
 77         int 21h
 78         jmp over
 79 ;
 80 code    ends
 81         end     start
-------------------------------------------------------
评论次数(2)  |  浏览次数(1262)  |  类型(程序与练习) |  收藏此文  | 

[  masmaster   发表于  2010-07-17 22:35  ]

通过几天的反复研究, 才发现一个基本问题,缓冲区中,(0)和(?)是不一样的。

[  游客   发表于  2014-06-16 21:44  ]

我运行的时候直接显示Unkown filename跳出了- -请问怎么改

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