. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->使用BIOS进行键盘输入和磁盘读写
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为什么我向硬盘扇区写东西总是不成功啊!!好像写不进去?我代码有问题吗?  [待解决] 回复[ 5次 ]   点击[ 658次 ]  
yzh127
[帖 主]   [ 发表时间:2008-12-18 19:32 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:0
注册日期:2008-04-17 02:17
assume cs:code
code segment
                                ;引导程序
steup:        jmp  sysboot
optionA db 0ah,0dh,'Please Chook One',0ah,0dh 
        db '                1) Reset Pc !!!!',0ah,0dh 
        db '                2) Start Sys !!!',0ah,0dh 
        db '                3) Clock Show !!',0ah,0dh 
        db '                4) Set Clock !!!',0ah,0dh 
        db 'Input Number: '                
sysboot:
        mov cx,offset sysboot -offset optiona
        mov si,0
        mov ah,0eH                ;显示字符(光标前移)
        mov bl,0                ;前景色
        s:mov al,optiona[si]         ;字符
        int 10h
        inc si
        loop s
        
        mov ah,10
        int 21H
        
restart:                        ;重新启动计算机
       mov word ptr [bx],0
       mov word ptr  [bx+2],0FFFFH 
       jmp far ptr [bx]                 
                                       ;安装程序
start:   
        mov ah,3                ;写扇区(返回ah=0成功,al=写入扇区数,ah=出错代码)
        mov al,1                ;扇区数
        mov ch,0                ;磁道号
        mov cl,1                ;扇区号
        mov dh,0                ;磁头号(面)
        mov dl,80H                ;驱动器号
        mov ax,cs                ;es:bs指向写入的数据
        mov es,ax
        mov bx,0
        int 13H                        
        
        mov ax,4c00h
        int 21h
               
code ends
end start


为什么我向硬盘扇区写东西总是不成功啊!!好像写不进去?我代码有问题吗?
我换了台机器也不行,执行写扇区的时候,AH返回80,这什么意思,我在网上都没地方查!我也不知道是不是我代码有问题,还是哪里出了问题,我在VM虚拟机测试的!
高手指点啊,我真不想放弃这个设计!
leibniz007
[第1楼]   [ 回复时间:2008-12-18 22:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-11 10:05
你向硬盘写入数据干吗
yzh127
[第2楼]   [ 回复时间:2008-12-19 08:40 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:0
注册日期:2008-04-17 02:17
我向软盘写,也报错啊
zyw23
[第3楼]   [ 回复时间:2008-12-19 17:41 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2008-11-22 15:49
楼主你把'安装程序'放在'引导程序'后面无非想ES:BX的定位简单点,但是你的'安装程序'也在向软件盘写的数据中.
你细看一下是不是这个问题的原因,我不确定是不是这个问题造成的,因为我也刚睡天完成课件2,对于很多这些问题也不是很确定.
perry0721
[第4楼]   [ 回复时间:2008-12-23 17:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-28 10:59
在VM虚拟机测试BIOS的INT13我个人认为不行,如果操作系统连这样底层的权限也交出来,应用软件根本就可以为所欲为了
theguiking
[第5楼]   [ 回复时间:2009-01-08 22:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-12-16 19:25
回楼上的:
如果在windows下直接调用BIOS中断不行
但是虚拟机几乎一切都是模拟的,我可以用一段代码来让虚拟机里面运行的程序调用到模拟出来的中断。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved