561
Wer macht es sonst? Um was gehts eigentlich in Vermischtes, ein Beispiel wär ganz nett?
11. May 2024, 17:03
Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.
typedef int (* fnptr_t) (unsigned c, void** helper);
int printfhelp(unsigned c, void **ptr)
{
// Hier wird das Zeichen angezeigt
}
int doprintf(const char *fmt, va_list args, fnptr_t fn, void *ptr)
{
// Hier den Text analysieren und ein Zeichen mit Hilfe des Function
// Pointers ausgeben
// Leerzeichen ausgeben (als Beispiel)
fn(' ', &ptr );
}
void printf(const char *msg, ...)
{
// Parameter zusammensetzen
va_list printfargs;
va_start(printfargs, msg);
// Der letzte Parameter ist ein Function Pointer auf die
// Funktion für die eigneltiche Zeichenausgabe
doprintf(msg, printfargs, printfhelp);
va_end(printfargs);
}
bits 32
%include "macros.asm"
global start
start:
mov ax,0x10
mov ss,ax
mov ds,ax
mov fs,ax
mov gs,ax
mov es,ax
mov eax,0x9FFFF
mov esp,eax
mov ebp,eax
finit ;prepare the FPU so it can be used without problems
activateA20:
.1:
in al, 0x64
test al, 00000010b
jnz .1
mov al, 0xD0
out 0x64, al
.2:
in al, 0x64
test al, 00000001b
jz .2
in al, 0x60
or al, 00000010b
push eax
.3:
in al, 0x64
test al, 00000010b
jnz .3
mov al, 0xD1
out 0x64, al
.4:
in al, 0x64
test al, 00000010b
jnz .4
pop eax
out 0x60, al
remappic: ;IRQ's start with Int 0x20, directly after the exceptions
mov al,0x11
out 0x20,al
out 0xa0,al
mov al,0x20
out 0x21,al
mov al,0x28
out 0xa1,al
mov al,0x04
out 0x21,al
mov al,0x02
out 0xa1,al
mov al,0x01
out 0x21,al
out 0xa1,al
extern _main
call _main
jmp $
[section .text]
[BITS 32]
global _AddToAX ; Funktion exportieren
; Die Funktion selber
; Fängt mit _ an weil der C Compiler allen Funktionen
; dieses Zeichen voranstellt
_AddToAX:
POP BX ; 1. Parameter vom Stack holen -> In BX schreiben
ADD AX, BX ; BX zu AX addieren
; Zurück
ret
extern void AddToAX(char x); /* Funktion importieren (ohne _!!!) */
void main()
{
AddToAX(100);
}