文件代号下的文件管理

data segment
Pgsize dw ?
buf_size db 80
s_buf db ?
buf db 200 dup(?)
cur dw ?
handle dw ?
mess_getname db 0dh,0ah," Please input filename:$"
mess_err1 db 0ah,0dh," Illegal filename ! $"
mess_err2 db 0ah,0dh," file not found ! $"
mess_err3 db 0ah,0dh," file read err! $"
········
data ends

上面的
buf_size db 80
s_buf db ?
buf db 200 dup(?)
看起来很奇怪,通过做这个实验,我明白了buf_size和实际的buf大小是可以不同的,源代码中的buf_size为了增加可读性,改为filename_buf_size可能会更好一些,因为它定义为80,仅仅是为了约束输入的文件名不能超过79个字符(加上回车一共最多80个字符),而后面读取文件内容时,用到了DOS中的ah=3fh的功能,它可以一次读取200的字符到缓冲区中,然后再慢慢一行一行显示在屏幕上。
(当一个buf有两种以上不同的用途时,或者存放字符或者字符串的最大长度不同时,尤其是约束输入的字符串不能长于某个个数而buf作另外的用途可以容纳更多字符是,实际定义的buf大小就会比声明的输入缓冲区长度要大)
本例子中,buf作为键盘输入缓冲区,最大为80,作为读入文件数据缓冲区时,最大为200.
;-------------------------------------------------------------------------
getline proc near
push ax
push bx
push cx
push dx
mov dx,offset mess_getname
mov ah,09h
int 21h
mov dx,offset buf_size
mov ah,0ah
int 21h ;读入文件名,文件名本身不超过79字符
mov dx,offset crlf
mov ah,09h
int 21h
mov bl,s_buf
mov bh,0
mov [buf+bx],0
pop dx
pop cx
pop bx
pop ax
ret
getline endp
;---------------------------------------------------------------------

;-------------------------------------------------------------------------
read_block proc near
push bx
push cx
push dx
cmp cur,200
jnz back

mov cx,200
mov bx,handle
mov dx,offset buf
mov ah,3fh
int 21h ;读文件内容,一次读入200个字节到buf中
mov cur,0
mov ax,1
jnc back
mov cur,200
mov ax,0
back:
pop dx
pop cx
pop bx
ret
read_block endp
;-----------------------------------------------

字符串输入功能调用(0AH号功能调用)

格式:
MOV DX,已定义缓冲区的偏移地址
MOV AH, 0AH
INT 21H
功能:从键盘接收字符,并存放到内存缓冲区。
在使用0AH号功能调用时,应当注意以下问题。.
①执行前先定义一个输入缓冲区,缓冲区内第一个字节定
义为允许最多输入的字符个数,字符个数应包括回车符
0DH在内,不能为“0” 值。第二个字节保留,在执行程
序完毕,后存入输入的实际字符个数。从第三个字节开始存
入从键盘上接收字符的ASCII码。若实际输入的字符个数
少于定义的最大字符个数,则缓冲区其他单元 自动清0.
若实际输入的字符个数大于定义的字符个数,其后输入的
字符丢弃不用,且响铃示警,直到输入回车键为止。整
个缓冲区的长度等于最大字符个数再加2。

0A中断会向保存在dx中的地址存放来自键盘的输入。

[dx]是缓冲区最大容量,也就是从键盘最多能够输入的字符数,需要提前告诉程序。

返回值[dx+1]是你实际输入的字符个数,dx+2是字符串首。

汇编实验4.1文件代号下的文件管理中为什么buf_size为80而buf可以容纳200个字节,矛盾吗?(不矛盾)相关推荐

  1. 在windows的某个文件夹下运行WSL中的docker容器

    首先在你想运行的文件夹内进入windows的命令行, 然后输入:wsl.exe -d Ubuntu-18.04 就进入了这个文件夹下的WSL系统 或者直接在该文件夹下按住shift + 右键==> ...

  2. Ubuntu 在文件夹下查找文本文件中的关键字

    有时候在 Ubuntu 的命令行里,需要在一堆文本文件中查找特定的关键字, 一个一个文件打开找很麻烦的,这里介绍一个在文件夹下查找关键字的命令. find path -name 'file_name' ...

  3. python遍历文件夹下所有文件名中含有指定_Python 遍历目录找出包含指定字符串的文件夹...

    题目:编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径 题目不难,但是初接触Python,对函数不够熟悉,犯了不少错误.总结如下: os.path. ...

  4. vue中src文件夹下各文件_Win10下与虚拟机中的linux共享文件夹

    Win10主机和Vmware linux共享文件夹 1.首先确保虚拟机中的linux能ping通主机,证明虚拟机是可以访问到的主机的(这个不会可百度) 2.右击你想要共享的文件夹选择'属性',点击'共 ...

  5. matlab文件夹内文件数目_【笔记】MATLAB遍历文件夹下的文件

    做测试,离不开的是数据的整理和归档.最近在做相机底片辐射定标的时候得到的一组测试结果,为了测试结果的整齐,测试人员(算我一个)把结果分装在了200多个子文件夹,而这200多个子文件夹又分装在5个不同的 ...

  6. 如何将PDF文件或图片或网页中的公式变为可编辑的--mathpix快速输入公式

    说在前面: PDF文件或图片或网页中的公式,有自己写文章或者做PPT需要的,如果公式很复杂,或者你就是懒.若是用latex写文章,就想直接把公式变为可编辑的latex格式,是用word写文章或者做PP ...

  7. 中断和异常,陷阱的区别和联系

    查看全文 http://www.taodudu.cc/news/show-401540.html 相关文章: 汇编中的扫描码.ASCII码(也称字符码).扩展码.虚拟键码 的区别 键盘I/O中断调用( ...

  8. Intel Optane(tm) Memory Pinning 无法加载DLLiaStorAfsServiceApi.dll:找不到指定模块。(异常来自HRESULT:0x8007007E)。

    查看全文 http://www.taodudu.cc/news/show-401547.html 相关文章: Ubnutu虚拟机怎么修改开机密码?(在已知旧密码的情况下,开机后设置新的密码的方法) 笔 ...

  9. 汇编实验 用表格形式显示字符(附源码详细注释和相关注意的知识)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_40774175/article/ ...

最新文章

  1. coverity代码检测工具介绍_FOREPOST:一种使用反馈驱动学习软件测试的性能检测工具...
  2. 火狐浏览器书签(收藏夹)全部消失,历史记录也消失,如何恢复
  3. 吴恩达 coursera AI 第二课总结+作业答案
  4. EMNLP 2021 | ST-ToD:小样本场景下的任务型对话预训练
  5. SAP在Kubernetes上打造的Kyma到底是个什么东东
  6. C# 基于事件的异步模式
  7. 分布式6大核心专题_分布式Session
  8. mysql like_MySQL LIKE:模糊查询
  9. HTML+CSS+JS实现 ❤️酷炫彩虹旋转隧道特效❤️
  10. python time timeit_python运行时间计算之timeit
  11. doc.update
  12. SQL优化--使用内连接(inner join)代替外连接(left join,right join) (转)
  13. matlab中std2的公式,STD函数的内部计算公式
  14. LABVIEW详细介绍:LABVIEW是什么软件?都可以干什么?
  15. 领取敬业福或新春红包
  16. iOS 调整图片尺寸和大小的两个方法
  17. ThreadPoolExecutor(五)——线程池关闭相关操作
  18. 最新计算机毕业设计选题推荐 - 毕设选题建议
  19. Linux 内存管理。
  20. sleep() 和 wait() 有什么区别

热门文章

  1. 文件流下载到本地 - 待完成
  2. 一套简约漂亮的响应式博客园主题皮肤分享给你们(一)
  3. 洛谷3933 Chtholly Nota Seniorious 二分答案+贪心
  4. BIRCH聚类算法原理
  5. oschina代码仓库远程push,pull免密实操总结
  6. theano 安装杂记
  7. servlet向ajax传递list数据类型,ajax向servlet传递array数据类型
  8. c/c++对象模型大总结:第5-8章、数据成员的存取与布局
  9. 【Android 逆向】修改 Android 的 apk 安装包内的文件并重新打包 ( apktool_2.6.0.jar 下载和使用 | zipalign 文件对齐 | apksigner 签名 )
  10. 【MATLAB】基本绘图 ( text 函数 | annotation 函数 | 绘制图像示例 )