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
下一个:汇编语言程序分析试题答案 救急 急急急急急急急