2556|3

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

编写操作系统时图形编程问题 [复制链接]

START:
[BITS 16]
ORG 7C00H
CLD ;方向标准
LABLE_GEGIN:
    MOV AX,CS
    MOV SS,AX  
    MOV ES,AX
    MOV DS,AX
    MOV SP,1000H
   
    MOV EAX,GDT_LABEL        ;得到全局描述表首地址
    MOV [GDTR1],EAX          ;将全局描述表首地址放入GDTR中
    LGDT    [GDTR_LABEL]    ;加载GDTR   
   
;设置显示模式
    MOV AX,4F02H
    MOV BX,0114H  ;;MOV BX,4114H也是一样
    INT 10H
;得到当前显示模式信息,并保存到段描述符中
    MOV AX,4F01H
    MOV CX,0114H
    ;;存储显存线性基地值=8000H
    MOV BX,8000H
    MOV ES,BX
    MOV DI,01H
    INT 10H
    MOV EAX,[ES:DI+40]   ;显存的线性基地址  
    MOV [ES:00],EAX
   

                        
;将32位代码复制到00H                  
    XOR AX,AX
    MOV DS,AX
    MOV SI,START32
   
    XOR AX,AX
    MOV ES,AX
    MOV DI,AX  
   
    MOV CX,100H
    REP MOVSW
   
    CLI  
    ;;打开a20线
    IN AL,92H
    OR AL,02H
    OUT 92H,AL
   
                          
;为32位坐准备   
    MOV AX,VOIE32
    MOV DS,AX
    MOV SS,AX
    MOV ES,AX
    MOV FS,AX
    MOV GS,AX   
    ;;进入保护模式              
    MOV EAX,CR0
    OR  EAX,01
    MOV CR0,EAX
    JMP DWORD CODE32:0
   
;;GDT
GDT_LABEL:  ;以下为高到低位编码
GDT0:    DD  00000000H
            DD  00000000H
;1:代码段:基地值=7C00H   
GDT1:    DD  00000000H
            DD  00CF9B00H  
;2:显卡基地值=未定
GDT2:    DD  0000FFFFH   
            DD  00CF9300H  
;;选择子
CODE32  EQU  0008H
VOIE32  EQU  0010H
GDTR_LABEL  DW  0200H   ;限长
        GDTR1   DD  00000000H    ;基址        
;GDT结束

[BITS 32]
START32:
    MOV EAX,01056009H
    MOV EBX,[DS:80000]
    XOR ESI,ESI
LSHOW:   
    MOV [DS:EBX+ESI],EAX
    ADD ESI,4
    JMP LSHOW
   
TIMES   510-($-$$)  DB  00H
DW  0AA55H

;;使用NAME编译成一个Bin文件。使用Virtual 2007
运行只能填充屏幕上的一个部分
图:附件中
谢谢各位帮忙看一看,是什么问题。谢谢了

最新回复

不好意思,已经搞定了。 就时在保护模式下再次重新负责CS,DS,ES等段寄存器。 这样可以时CPU强制清除段寄存器缓冲区。重新加载段描述符表  详情 回复 发表于 2008-11-13 22:44
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
高深,没有研究过。
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没遇到过这种情况.
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
不好意思,已经搞定了。
就时在保护模式下再次重新负责CS,DS,ES等段寄存器。
这样可以时CPU强制清除段寄存器缓冲区。重新加载段描述符表
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表