安装一个新的int 7ch中断例程,实现通过逻辑扇区号对软盘进行读写。
参数说明:
(1)用AH寄存器传递功能号:0表示读,1表示写;
(2)用DX寄存器传递要读写的扇区的逻辑扇区号;
(3)用EX:BX指向存储读出数据或写入数据的内存区。
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset chstart
mov ax,0
mov es,ax
mov di,200h
mov cx,offset chend - offset chstart
cld
rep movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
chstart:
push cx
cmp ah,2
jnb over
add ah,2 ;功能号
push ax
mov ax,dx
mov dx,0
mov cx,1440
div cx
push dx
mov dx,ax
mov dh,dl;得到面号
mov dl,0 ;置驱动器号为0,表示读软驱
pop cx
mov ax,cx
push dx
mov dl,18
div dl
mov ch,al;磁道号
mov cl,ah
inc cl;扇区号
pop dx
pop ax
int 13h
over:
pop cx
ret
chend:nop
code ends
end start
总觉得这个程序有点烦,可能是心烦的原因,因此好长时间不敢去碰它了。今天终于踏下新来,把它搞定了,心情舒畅了很多,我用虚拟机进行了测试,不知什么原因,在读取或写入1面扇区(逻辑扇区>=1440)时,虚拟机就会死机,然后再重启虚拟机就起不来了,暂时还没找到原因.
- [qiansanshi] 熟悉的ID,熟悉的事,祝朋友们学习工作愉快 11/04 19:22
- [mywiil] 这里曾经给我们带来了那么多回忆,却不曾想,慢慢的被我们遗忘。 没事的时候,回来看看吧,这里有我 08/31 09:41
- [rotapple] 知道了,这是书后面的实验章节。我还没看到那边 08/29 16:14
- [rotapple] 这是什么书? 08/29 14:54
- [tomato] 怎么都这么伤感! 08/29 09:12
- [tomato] 怎么都这么伤寒! 08/29 09:12
- [rotapple] 感觉只要理解了跳转的过程及ip修改的方式。就不难理解了。 08/16 15:00
- [游客] add al,80h CF=1;OF=1;SF=0;ZF=1;PF=1 你 07/13 16:47
- [游客] 谢谢 很有用 06/23 18:06
- [游客] 你向下跳转的例子显然不符合题意,用7ch向下跳转那就相当与jmp指令的效果了(没有循环),要知道lo 03/26 20:51
- [sgiceleo] 谢谢一直关注我的作业 ,虽说有很多很多不懂的 ,但是看到那么多编程前辈们的鼓励 ,我有信心继续努力! 02/15 10:02
- [oldmtn] 我好久没上了,看到了你的留言. 讨教你一下,你想过深入学习汇编没有,现在搞汇编人很少啊 大多数人 09/28 14:36
- [ym3823078] 来 看看,呵呵 07/22 00:31
- [netbox] 请教一个问题:8根数据总线一次可以传送一个8位二进制数据(即一个字节)。 不是一个数字占一个字 06/23 19:57
- [netbox] 呵呵,感谢你~~光临我的博客!多多指导,。。加油! 06/23 19:50
- [游客] 说汇编难学,我不信。别人说的不算,我得试验一下。 ----------------- 说的好! 03/07 19:38