老坚果 发表于 2019-7-15 17:53:45

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位置的数据没有改变

老坚果 发表于 2019-7-15 18:42:17

打听了一下,好像是dosbox不能用这个中断,不知道对不对。不过人说XP好像可以

jackz007 发表于 2019-7-15 18:58:51

本帖最后由 jackz007 于 2019-7-15 19:39 编辑

      楼主,知道自己在干啥吗?你的代码把ds:0 处开始的连续 1000h 字节的内容写入第一个硬盘的0柱面,第1磁道,第1扇区~第8扇区,这个区域是整个磁盘的 MBR 的所在,也就是记录了磁盘分区表和主引导记录的扇区。这些信息一旦被破坏,你的硬盘就会丢掉分区信息,无法引导操作系统,甚至无法正常识别硬盘的格式信息,说白了,就是会丢掉整个硬盘上所有的数据。

      你真的想清楚了,一点都不在乎?

老坚果 发表于 2019-7-17 15:45:08

jackz007 发表于 2019-7-15 18:58
楼主,知道自己在干啥吗?你的代码把ds:0 处开始的连续 1000h 字节的内容写入第一个硬盘的0柱面 ...

嗯 那个 我用的是虚拟机 应该不会影响到真实的硬盘吧
页: [1]
查看完整版本: 8086汇编,dosbox用int13中断读写不出来数据?