注册 登录
编程论坛 汇编论坛

(菜鸟)BIOS程序设计写像素点失败,高手帮忙看看

爱末流 发布于 2012-09-06 22:21, 721 次点击
BIOS程序设计写像素点失败,就是调用INT 10H视频服务 的 0CH功能来写像素 调用就提示:
调用BIOS  执行第三次 int 10h  0x00000009 指令引用的 0x720789a3 内存不能为 写(written)
0x720789a3 是DLL的地址吧

源码:   (注释都写的好了)

.model small
.stack 200h
.386
;有些视频图形模式未用,该例子只使用 Mode_6A

Mode_06 = 6        ; 640 X 200,  2 colors
Mode_0D = 0Dh        ; 320 X 200, 16 colors
Mode_0E = 0Eh        ; 640 X 200, 16 colors
Mode_0F = 0Fh        ; 640 X 350,  2 colors
Mode_10 = 10h        ; 640 X 350, 16 colors
Mode_11 = 11h        ; 640 X 480,  2 colors
Mode_12 = 12h        ; 640 X 480, 16 colors
Mode_13 = 13h        ; 320 X 200, 256 colors
Mode_6A = 6Ah        ; 800 X 600, 16 colors

.data
saveMode  BYTE  ?        ;保存原来视频模式的变量
currentX  WORD 100       ;X横坐标
currentY  WORD 100       ;Y纵坐标
COLOR = 1001b            ;颜色属性 高位4位为背景颜色未使用,只使用前景颜色(低4位)  1001b=浅蓝色

.code
main PROC
    mov    ax,@data        ;取得段地址
    mov    ds,ax
   
    mov    ah,0Fh          ;获得视频模式信息
    int    10h             ;调用BIOS
    mov    saveMode,al     ;保存原来的视频模式
   
    mov    ah,0            ;设置视频模式
    mov    al,Mode_6A      ;设置为800 * 600
    int    10h             ;调用BIOS
   
    mov    ah,0Ch          ;写像素点
    mov    al,COLOR        ;像素的颜色
    mov    bh,0            ;视频页=0,当前视频页(活跃)
    mov    cx,currentX     ;写的位置X坐标(像素单位)
    mov    dx,currentY     ;写的位置Y坐标(像素单位)
    int    10h             ;调用BIOS  执行第三次 int 10h  0x00000009 指令引用的 0x720789a3 内存不能为 写(written)
   
    mov    ah,0            ;等待用户按键
    int    16h             ;调用BIOS  INT 16H为键盘处理中断
   
    mov    ah,0            ;恢复原来的视频模式
    mov    al,saveMode     ;要恢复的视频模式
    int    10h             ;调用BIOS
    .exit
main endp
end main






8 回复
#2
zklhp2012-09-07 21:16
不懂 回复一下等楼主给分
#3
TonyDeng2012-09-07 21:22
在DOS下运行看看
#4
有容就大2012-09-07 21:28
还没学到 帮顶
#5
hu9jj2012-09-07 21:58
应该是被操作系统禁止了。
#6
pangding2012-09-07 23:03
虽然注释写得很详细,不过还是看不太懂。
#7
nosaybye2012-09-13 09:41
0x720789a3 dll,int中断?

将程序编译成二进制,写入MBR,用bochs,调试吧。
#8
zhu2240392012-09-22 01:06

当场昏倒
#9
zhu2240392012-09-22 01:09
为什么每个程序 都爱用英文取名字  这给我读代码带来了很大的麻烦   看到的英文我总是记不住 他对应的值是多少

能否以后咱们中国的程序都  hang  lie 等等通俗点的字母组合 来标号 或者变量名啊
1