call ClearScreen\r
\r
# Populate IDT with meaningful offsets for exception handlers...\r
- sidt Idtr \r
+ movl $Idtr, %eax\r
+ sidt (%eax) # get fword address of IDT\r
\r
\r
- movl Halt, %eax\r
+ movl $Halt, %eax\r
movl %eax,%ebx # use bx to copy 15..0 to descriptors\r
shrl $16,%eax # use ax to copy 31..16 to descriptors \r
# 63..32 of descriptors is 0\r
movl $0x78,%ecx # 78h IDT entries to initialize with unique entry points (exceptions)\r
- movl (Idtr + 2), %esi\r
+ movl $(Idtr + 2), %esi\r
movl (%esi),%edi\r
\r
LOOP_1: # loop through all IDT entries exception handlers and initialize to default handler\r
movw %ax, 6(%edi) # write bits 31..16 of offset\r
movl $0, 8(%edi) # write bits 31..16 of offset \r
addl $16, %edi # move up to next descriptor\r
- addw DEFAULT_HANDLER_SIZE, %bx # move to next entry point\r
+ addw $DEFAULT_HANDLER_SIZE, %bx # move to next entry point\r
loopl LOOP_1 # loop back through again until all descriptors are initialized\r
\r
## at this point edi contains the offset of the descriptor for INT 20\r
movl 0x30(%ebp),%edi # edi = [[22000 + [22014] + 3c] + 2c] = ImageBase (63..32 is zero, ignore)\r
movl 0x28(%ebp),%eax # eax = [[22000 + [22014] + 3c] + 24] = EntryPoint\r
addl %edi,%eax # eax = ImageBase + EntryPoint\r
- movl %ebx, EfiLdrOffset \r
+ movl $EfiLdrOffset, %ebx\r
movl %eax, (%ebx) # Modify far jump instruction for correct entry point\r
\r
movw 6(%ebp), %bx # bx = Number of sections\r
cmpw $0,%bx\r
jne SectionLoop\r
\r
- movl (Idtr), %eax # get size of IDT\r
- movzx (%edx), %eax\r
+ movl $Idtr, %edx # get size of IDT\r
+ movzxw (%edx), %eax\r
.byte 0xff\r
.byte 0xc0\r
# inc eax\r
## \r
\r
call ClearScreen\r
- mov String1, %esi \r
+ movl $String1, %esi \r
call PrintString\r
.byte 0x48\r
movl 16*8(%ebp),%eax ## move Int number into RAX \r
ja PrintDefaultString\r
PrintExceptionString: \r
shll $3,%eax ## multiply by 8 to get offset from StringTable to actual string address\r
- addl StringTable, %eax\r
+ addl $StringTable, %eax\r
movl (%eax),%esi\r
jmp PrintTheString\r
PrintDefaultString: \r
- movl IntUnknownString, %esi\r
+ movl $IntUnknownString, %esi\r
# patch Int number\r
movl %eax,%edx\r
call A2C\r
movb %al,(%esi)\r
PrintTheString: \r
call PrintString\r
- movl String2, %esi\r
+ movl $String2, %esi\r
call PrintString\r
.byte 0x48\r
movl 19*8(%ebp),%eax # CS\r
.byte 0x48\r
movl 18*8(%ebp),%eax # RIP\r
call PrintQword\r
- movl String3, %esi\r
+ movl $String3, %esi\r
call PrintString\r
\r
movl $0xb8140,%edi\r
\r
- movl StringRax, %esi\r
+ movl $StringRax, %esi\r
call PrintString\r
.byte 0x48\r
movl 15*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRcx, %esi\r
+ movl $StringRcx, %esi\r
call PrintString\r
.byte 0x48\r
movl 14*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRdx, %esi\r
+ movl $StringRdx, %esi\r
call PrintString\r
.byte 0x48\r
movl 13*8(%ebp),%eax\r
\r
movl $0xb81e0,%edi\r
\r
- movl StringRbx, %esi\r
+ movl $StringRbx, %esi\r
call PrintString\r
.byte 0x48\r
movl 12*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRsp, %esi\r
+ movl $StringRsp, %esi\r
call PrintString\r
.byte 0x48\r
movl 21*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRbp, %esi\r
+ movl $StringRbp, %esi\r
call PrintString\r
.byte 0x48\r
movl 10*8(%ebp),%eax\r
\r
movl $0xb8280,%edi\r
\r
- movl StringRsi, %esi\r
+ movl $StringRsi, %esi\r
call PrintString\r
.byte 0x48\r
movl 9*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringRdi, %esi\r
+ movl $StringRdi, %esi\r
call PrintString\r
.byte 0x48\r
movl 8*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringEcode, %esi\r
+ movl $StringEcode, %esi\r
call PrintString\r
.byte 0x48\r
movl 17*8(%ebp),%eax\r
\r
movl $0xb8320,%edi\r
\r
- movl StringR8, %esi\r
+ movl $StringR8, %esi\r
call PrintString\r
.byte 0x48\r
movl 7*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR9, %esi\r
+ movl $StringR9, %esi\r
call PrintString\r
.byte 0x48\r
movl 6*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR10, %esi\r
+ movl $StringR10, %esi\r
call PrintString\r
.byte 0x48\r
movl 5*8(%ebp),%eax\r
\r
movl $0xb83c0,%edi\r
\r
- movl StringR11, %esi\r
+ movl $StringR11, %esi\r
call PrintString\r
.byte 0x48\r
movl 4*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR12, %esi\r
+ movl $StringR12, %esi\r
call PrintString\r
.byte 0x48\r
movl 3*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR13, %esi\r
+ movl $StringR13, %esi\r
call PrintString\r
.byte 0x48\r
movl 2*8(%ebp),%eax\r
\r
movl $0xb8460,%edi\r
\r
- movl StringR14, %esi\r
+ movl $StringR14, %esi\r
call PrintString\r
.byte 0x48\r
movl 1*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringR15, %esi\r
+ movl $StringR15, %esi\r
call PrintString\r
.byte 0x48\r
movl 0*8(%ebp),%eax\r
call PrintQword\r
\r
- movl StringSs, %esi\r
+ movl $StringSs, %esi\r
call PrintString\r
.byte 0x48\r
movl 22*8(%ebp),%eax\r
\r
movl $0xb8500,%edi\r
\r
- movl StringRflags, %esi\r
+ movl $StringRflags, %esi\r
call PrintString\r
.byte 0x48\r
movl 20*8(%ebp),%eax\r
movl (%esi),%eax\r
call PrintQword\r
addl $8,%esi\r
- mov $0x00, %al \r
+ movb $0x20, %al # blank character\r
movb %al,(%edi)\r
addl $2,%edi\r
loop InnerLoop\r
movl (%esi),%eax\r
call PrintQword\r
addl $8,%esi\r
- movb $0x00, %al\r
+ movb $0x20, %al # blank character\r
movb %al,(%edi)\r
addl $2,%edi\r
loop InnerLoop1\r
pushl %eax\r
pushl %ecx\r
\r
- movb $0x00, %al\r
+ movb $0x20, %al # blank character\r
movb $0xc,%ah\r
movl $0xb8000,%edi\r
movl $80*24,%ecx\r
Int19String: .asciz "13h SIMD Floating-Point Exception -"\r
IntUnknownString: .asciz "??h Unknown interrupt -"\r
\r
-StringTable: .long Int0String, Int1String, Int2String, Int3String, \\r
- Int4String, Int5String, Int6String, Int7String, \\r
- Int8String, Int9String, Int10String, Int11String, \\r
- Int12String, Int13String, Int14String, Int15String,\\r
- Int16String, Int17String, Int18String, Int19String\r
+StringTable: .long Int0String, 0, Int1String, 0, Int2String, 0, Int3String, 0, \\r
+ Int4String, 0, Int5String, 0, Int6String, 0, Int7String, 0, \\r
+ Int8String, 0, Int9String, 0, Int10String, 0, Int11String, 0, \\r
+ Int12String, 0, Int13String, 0, Int14String, 0, Int15String, 0, \\r
+ Int16String, 0, Int17String, 0, Int18String, 0, Int19String, 0\r
\r
String2: .asciz " HALT!! *** ("\r
String3: .asciz ")"\r