查看完整版本: 【求助】关于int 13(2)

sdbzlh 2008-8-10 22:46

【求助】关于int 13(2)

我是汇编初学者,遇到一个问题,向大家请教:  
以下代码用于实现从软盘的第二个扇区读取数据到0x3000处:  (nasm)
  在实模式下:
%define Init32SectionBaseAddr 003000h;  
;---------------------------------------------------------------------------  
; 将相关内容加载到内存中去:内容放到后面几个扇区中,这里先加载第二个扇区  
mov ax,Init32SectionBaseAddr; 先将扇区01的数据存放的缓冲段地址传递给AX  
mov es,ax; 通过AX,再缓冲段地址传递给ES  
mov bx, 0; 缓冲偏移地址为0  
mov dl, 0; 要读取的驱动器号为0h,为A软驱  
mov dh, 0; 要读取的磁头号为0  
mov ch, 0; 要读取的磁道号为0  
mov cl, 2; 要读取的扇区号为2(1~17)  
mov al, 1; 要读取的扇区数为1,暂时为一(1~128)  
mov ah, 2; 调用int 13 的一种  
int 13h  
;---------------------------------------------------------------------------  
  
用winhex看软盘映像如图,可以看到第二个扇区(200h处开始)至少是有代码的。  
执行完上述代码后bochs调试结果如图,从ax数值可以看出此次读扇区成功了,读了一个扇区。  
图:[url=http://forum.byr.edu.cn/wForum/bbscon.php?bid=46&id=28879&ap=1259][color=#800080]http://forum.byr.edu.cn/wForum/bbscon.php?bid=46&id=28879&ap=1259[/color][/url]
但是用bochs看内存如图,0x3000处全是0.程序执行到这一部分也出现错误(必然的,呵呵)。  
图:[url=http://forum.byr.edu.cn/wForum/bbscon.php?bid=46&id=28879&ap=1524632][color=#800080]http://forum.byr.edu.cn/wForum/bbscon.php?bid=46&id=28879&ap=1524632[/color][/url]
我想请教大家这是为什么?谢谢!
页: [1]
查看完整版本: 【求助】关于int 13(2)