当前位置:编程学习 > 汇编语言 >>

as86汇编语言写的,直接写VGA缓存映射 ,怎么什么都不显示呢?

.globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: .data begdata: .bss begbss: .text BOOTSEG=0x07c0 entry start start: jmpigo,BOOTSEG go:movax,cs movax,#0xc000 movds,ax movax,#0 mov100,#32 mov101,#0x01 loop1:jmploop1 .org510 .word0xAA55 .text endtext: .data enddata: .bss endbss:
追问:- -你只到我用什么编译器?反了?! as86非as我bochs模拟,VGA映射地段地址是c000,
其他:... 你需要begdata: .bss begbss: .text BOOTSEG=0x07c0 entry start start: jmpigo,BOOTSEG 的格式反写而不是globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: .data begdata: .bss begbss: .text BOOTSEG=0x07c0 entry start start: jmpigo,BOOTSEG go:movax,cs movax,#0xc000 movds,ax movax,#0 mov100,#3... E 文本方式下, 视频缓冲区偏移地址是 0xb800
图形模式下, 视频缓冲区偏移地址是 0xa000 
 
直接读写视频缓冲区数据时
要将 ds 寄存器设为视频缓冲区偏移地址 
 
文本方式下,还是图形方式下? 
 
 
mov ax, ds      ;保存 ds值      
mov bx, b800  
mov ds, bx      ;ds  置为 b800            
mov bx, fc41          
mov word ptr [0], bx  ;写入视频缓冲区
mov ds, ax                ;恢复 ds值
ret                   
直接写视频缓冲区,在左上角显示一个白底红字大写A
 
debug里可以直接运行
 
一个字符,两个字节,高位字节的低四位是前景色,高四位是背景色,低位字节是字符ASCII码
背景要高亮显示 要调用 int 10h 的一个功能开启高亮,不然会是背景闪烁 不清楚 

上一个:004B519D |. 8A88 805B4B00 MOV CL,BYTE PTR DS:[EAX+4B5B80] 004B51A3 |. FF248D 6C5B4B>JMP DWORD PTR D
下一个:汇编语言程序分析试题答案 救急 急急急急急急急

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,