汇编第三版(王爽著)--“编程:将当前屏幕的内容保存在磁盘上。”

运行书上的程序时,我不确定数据是否写到了软盘里。因此,改变中断例程int 13的参数,去读写入到某一块扇区的数据,看是否能成功读写出来。先把源码贴上。
向0面0道1扇区写入一个扇区,即512byte的数据。

assume cs:code

data segment
	db 'welcome to masm!'
data ends

code segment
start:
	mov ax,data
	mov es,ax	
	mov bx,0
	
	mov al,1
	mov ch,0
	mov cl,1
	mov dl,0
	mov dh,0
	mov ah,3
	int 13h
	
	mov ax,4c00h
	int 21h
	
code ends
end start

读取刚才扇区的数据到es:bx

assume cs:code

data segment
	;db 'here save data   '
	db 512 dup(0)
data ends
code segment
start:
	mov ax,data
	mov es,ax	
	mov bx,0
	
	mov al,1
	mov ch,0
	mov cl,1
	mov dl,0
	mov dh,0
	mov ah,2
	int 13h
	
	mov cx,10
	mov ax,4c00h
	int 21h
	
code ends
end start
  • 运行遇到的错误

报错
报上面图片的错误的原因是,我想把数据读取到声明的data segment中,但是声明的数据大小太小,存不下512bytes的数据,因此会报上面的错误。如果将数据声明为db 512 dup(0)
程序就可以成功地访问到写到软盘里的数据。下图是成功访问到软盘数据的运行截图:
在这里插入图片描述
总结:就是int 13h读取数据,需要考虑数据的大小,一个扇区大小是512bytes,如果想放到某一个数据区域,该数据区域大小必须大于等于512bytes

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值