salve, sono nuovo del forum e avrei bisogno di un piccolo aiuto.
sono un programmatore dilettante, conosco il c e le basi di assembly.
in assembly è possibile indirizzare la cella di memoria 0b800, contenente la matrice della finestra del prompt dei comandi.
volevo sfruttare questa cosa anche dal c, ma per fare ciò è necessario ricorrere all'assembly.
ho quindi provato a buttare giù questo codice, giusto per vedere se poteva funzionare:tuttavia, quando cerco di caricare es con l'indirizzo 0b800 ottengo una violazione di memoria che impedisce il proseguimento del programma.codice:#include <stdio.h> #include <conio.h> main(){ asm("mov $0x0b800, %ax"); asm("mov %ax, %es"); asm("mov $2500, %bx"); asm("mov $49, %al"); asm("movb %al, %es:(%bx)"); getch(); }
come ambiente di lavoro uso dev-cpp.
potete spiegarmi perchè mi da questo errore, nonostante traducendolo con la sintassi intel e assemblandolo col tasm restituisce l'effetto desiderato?
nel caso questo metodo non si possa usare, mi potete suggerire un metodo alternativo?
grazie a tutti coloro che risponderanno.

Rispondi quotando