运行书上的程序时,我不确定数据是否写到了软盘里。因此,改变中断例程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