|
|
|
please help me | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
Hi,
I am a beginner writing a boot loader. I use gas to write it and got a
weird issue. The following code just try to show out the screen the
symbol "1" ten times
.code16
.section .text
.globl _start
_start:
movw $STACK_SEGMENT, %sp
movw %sp, %ss
movw $STACK_SIZE, %sp
pushw %cs
popw %ds
pushw $SCREEN_SEGMENT
popw %es
jmp show_banner
show_banner:
movb $0x07, %ah #white on black
movb char, %al #show this char
movw $10, %cx #show this char 10 times
movw $0, %di #show at 0,0
run_banner:
movw %ax, %es:(%di)
inc %di
inc %di
loop run_banner
die: jmp die
#.section .data
char: .ascii "1"
.org 510
boot_flag: .word 0xAA55
#constants
.equ STACK_SEGMENT , 0x9000 # Top of conventional memory
.equ STACK_SIZE , 0xffff # 64K - 1 bytes of stack
.equ SCREEN_SEGMENT , 0xb800
However, when running, it shows out a symbol in the extend ascii table
instead of "1" !!!?
It seems I cannot reference to the "char" memory location. Why?
How can I debug the binary?
Any help is appreciated.
Tuha.
-
: send the line "unsubscribe linux-assembly" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Kernel Newbies] [Security] [Linux C Programming] [Linux for Hams] [DCCP] [Netfilter] [Bugtraq] [Photo] [Yosemite] [Yosemite News] [MIPS Linux] [ARM Linux] [Linux RAID] [Linux Admin] [Samba] [Video 4 Linux]
![]() |