当前位置: 技术问答>linux和unix
字符不能正确显示
来源: 互联网 发布时间:2016-03-07
本文导语: 字符不能正确显示 我简单的写了一个小的引导文件,在内核里面输出一串字符,但是输出的时候,的确光标移动了相应的位数,但是没有显示字符,还有0dh,0ah 也没有执行,可能我那个地方没有搞懂,请大家帮忙看看: 代码如...
字符不能正确显示
我简单的写了一个小的引导文件,在内核里面输出一串字符,但是输出的时候,的确光标移动了相应的位数,但是没有显示字符,还有0dh,0ah
也没有执行,可能我那个地方没有搞懂,请大家帮忙看看: 代码如下:
BOOTSEG equ 0x07c0
SYSSEG equ 0x1000
SYSLEN equ 17
beg:
jmp BOOTSEG:go
go:
mov ax , cs
mov ds , ax
mov es , ax
mov ss , ax
mov sp , 0x400
load_system:
mov ax , SYSSEG
mov es , ax
mov ax , 0x0200+SYSLEN
mov cx , 0x0002
mov dx , 0x0000
mov bx , 0x0000
int 0x13
jnc ok_load
mov ah , 0
int 0x13
jmp load_system
ok_load:
cli
mov ax , BOOTSEG
mov ds , ax
jmp SYSSEG:0
times 510-($-$$) db 0
dw 0xaa55
mov ax , cs
mov ds , ax
mov es , ax
mov ax , begtrack
mov ss , ax
mov sp , track
sti
mov ax , 0x1301
mov bx , 0x0004
mov cx , 15
mov dx , 0x0000
mov bp , showSomething
int 0x10
jmp $+2
re: jmp re
begtrack:
times 128 db 0
track:
times 200 dd 0
showSomething:
db 'In the kernel'
db 0x0d,0x0a
我简单的写了一个小的引导文件,在内核里面输出一串字符,但是输出的时候,的确光标移动了相应的位数,但是没有显示字符,还有0dh,0ah
也没有执行,可能我那个地方没有搞懂,请大家帮忙看看: 代码如下:
BOOTSEG equ 0x07c0
SYSSEG equ 0x1000
SYSLEN equ 17
beg:
jmp BOOTSEG:go
go:
mov ax , cs
mov ds , ax
mov es , ax
mov ss , ax
mov sp , 0x400
load_system:
mov ax , SYSSEG
mov es , ax
mov ax , 0x0200+SYSLEN
mov cx , 0x0002
mov dx , 0x0000
mov bx , 0x0000
int 0x13
jnc ok_load
mov ah , 0
int 0x13
jmp load_system
ok_load:
cli
mov ax , BOOTSEG
mov ds , ax
jmp SYSSEG:0
times 510-($-$$) db 0
dw 0xaa55
mov ax , cs
mov ds , ax
mov es , ax
mov ax , begtrack
mov ss , ax
mov sp , track
sti
mov ax , 0x1301
mov bx , 0x0004
mov cx , 15
mov dx , 0x0000
mov bp , showSomething
int 0x10
jmp $+2
re: jmp re
begtrack:
times 128 db 0
track:
times 200 dd 0
showSomething:
db 'In the kernel'
db 0x0d,0x0a
|
showSomething:
db 0x0d,0x0a
db 'In the kernel'
db 0x0d,0x0a
这样可以保证在输出字符的时候先换行, 如果光标移动了相应的位数, 还是没有字符打印是不是输出字符的颜色问题, mov bx , 0x0004 试着把0x0004 换成其它的数字, 比如0x0007 , 再试试.
db 0x0d,0x0a
db 'In the kernel'
db 0x0d,0x0a
这样可以保证在输出字符的时候先换行, 如果光标移动了相应的位数, 还是没有字符打印是不是输出字符的颜色问题, mov bx , 0x0004 试着把0x0004 换成其它的数字, 比如0x0007 , 再试试.
|
大概不能在vmware 环境下执行, vmware 没有你所要环境的初始化
|
去看看《自己动手写操作系统》!~