汇编网首页登录博客注册
zhenglxd的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  浮躁10次=fool 浮躁20次=fathead 浮躁30次=stupid 浮躁40次=pig
  • 『姓名』:small liu
  • 『性别』:男『发送消息
  • 个人说明:我现在浮躁 指数4
  • 详细信息『加为好友』
学习动态
友情链接

[2009-07-01 14:57] 试验17 完成!

图片载入中
;功夫不负有心人啊在http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=13489&kindLevel=1&kindId=17296&postId=23304&readSg=1Id=13489&kindId=17298&postId=23408
;这个模拟器下我终于顺利完成了实验17像最后的课程设计2冲刺如果有不会使用这个模拟器的可以来问我
;虽然应为模拟器的问题浪费过许多时间但是我从来没有想到过要放弃希望大家也不要放弃(ps和我一起学的最后的实验17和课程设计2我发现很多人因为模拟器原因放弃了)还是那句话模拟器的问题有不懂的可以来问我!

;为了验证方便实验17我用把软驱b数据写入软驱a来验证
;分2步进行 1是读软驱b入data 2是把data写入a
assume cs:code

data segment
db 2048 dup (0)
data ends

code segment
start: mov ax,0
       mov es,ax
       mov word ptr es:[7ch*4],200h
       mov word ptr es:[7ch*4+2],0
;写新的7ch入口地址
      
       mov ax,cs
       mov ds,ax
       mov si,offset int7ch
       mov di,200H
       mov cx,offset int7chend- offset int7ch
       cld
       rep movsb
;安装新int7ch中断

       mov ax,data 
       mov es,ax
       mov cx,2880
       mov si,0
tests: push cx

       mov ah,0  ; 0=读
       mov dx,si  ;0=逻辑扇区号       
       mov bx,0  ;es:bx 指向存取地址
       mov al,1 ;读写扇区数
       mov cl,1   ;1=disk b 扇区号
       int 7ch
;把diskb从逻辑扇区0~2779数据 写入es:bx
       
       mov ah,1  ; 1=写
       mov dx,si  ;0=逻辑扇区号 
       mov bx,0  ;es:bx 指向存取地址
       mov al,1 ;读写扇区数
       mov cl,0   ;0=disk a
       int 7ch
;把es:bx数据 写入 diska的0~2779扇区   
       pop cx 
       inc si   
       loop tests

       mov ax,4c00h
       int 21h

int7ch:push ax
       push dx
       push cx

       push bx       
       add ah,2
read:  mov bh,ah     ;功能号
       mov bl,al     ;读写扇区数
       push bx       ;pbx0= 功能号,读写扇区数(ax)

       mov bl,cl     ;软驱号
       mov cx,1440
       call divs
       mov bh,al     ;面号
       push bx       ;pbx1=软驱号,面号(dx)

       mov cx,18
       call divs
       mov bh,al     ;磁道号
       inc dl
       mov bl,dl     ;扇区号
       push bx       ;pbx2=磁道号,扇区号(cx)

       pop cx
       pop dx
       pop ax
       pop bx
       int 13h
;输入参数调用 int 13h
       
       pop cx
       pop dx
       pop ax
       iret

  divs:mov ax,dx
       mov dx,0
       div cx
       ret
       
int7chend:nop

code ends
end start
评论次数(2)  |  浏览次数(1868)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-12-24 15:36  ]

我按照你说的帖子用bochs模拟了dos,然后就不知道该干什么了。。。。。。到底应该如何验证啊?怎么使用这个模拟软件啊

[  michael1947   发表于  2011-03-05 17:13  ]

一个软盘怎么分的A和B,我知道0面为A,1面为B,可是怎么让DOS系统知道啊,我这里输入B:,就提示我插入B盘啊。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码