8086汇编,dosbox用int13中断读写不出来数据?
以下代码把第一张显示存入硬盘中assume cs:code
code segment
start:
mov ax,0b800h
mov es,ax
mov bx,0
mov al,8
mov ch,0
mov cl,1
mov dl,80h
mov dh,0
mov ah,3
int 13h
mov ax,4c00h
int 21h
code ends
end start
把数据从硬盘中读取到0:200h的位置
assume cs:code
code segment
start:
mov ax,0
mov es,ax
mov bx,200h
mov al,8
mov ch,0
mov cl,1
mov dl,80h
mov dh,0
mov ah,2
int 13h
mov ax,4c00h
int 21h
code ends
end start
因为我不会看硬盘中的数据所以用的是再读取的方式,而我这里得到的结果是0:200h位置的数据没有改变 打听了一下,好像是dosbox不能用这个中断,不知道对不对。不过人说XP好像可以 本帖最后由 jackz007 于 2019-7-15 19:39 编辑
楼主,知道自己在干啥吗?你的代码把ds:0 处开始的连续 1000h 字节的内容写入第一个硬盘的0柱面,第1磁道,第1扇区~第8扇区,这个区域是整个磁盘的 MBR 的所在,也就是记录了磁盘分区表和主引导记录的扇区。这些信息一旦被破坏,你的硬盘就会丢掉分区信息,无法引导操作系统,甚至无法正常识别硬盘的格式信息,说白了,就是会丢掉整个硬盘上所有的数据。
你真的想清楚了,一点都不在乎? jackz007 发表于 2019-7-15 18:58
楼主,知道自己在干啥吗?你的代码把ds:0 处开始的连续 1000h 字节的内容写入第一个硬盘的0柱面 ...
嗯 那个 我用的是虚拟机 应该不会影响到真实的硬盘吧
页:
[1]