SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: sneider en Sábado 15 de Mayo de 2004, 11:38
-
Wenas, necesito saber como puedo meter este codigo de ensamblador en un compilador tipo Turbo C o Dev-C++ . Que hay q hacer para que compile sin errores? Que es lo ke hay q poner para ke compile ensamblador? gracias.
este es el codigo :
; Syntax: CAPS
CSEG SEGMENT
ASSUME cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
ORG 100h
START: mov ax,40h ;ROM Seg
mov es,ax
mov ax,es:[17h] ;Cur Stat
or al,01000000b ;Caps ON
mov es:[17h],ax
EXIT: mov al,RC ;ErrorLevel
mov ah,4Ch ;Return/Exit
int 21h ;DOS
ret
; Data & Constants
RC DB 0
CSEG ENDS
END START
;*** End of Program ***
-
Hola.
En este post
http://foros.solocodigo.com/index.php?showtopic=6882 (http://foros.solocodigo.com/index.php?showtopic=6882)
aparecen funciones de C con código ensamblador. Está hecho para Visual C++ pero no creo que difiera mucho para los compiladores que has mencionado.
Un saludo.
Ruben3d
-
Si no me equivoco el Dev C++ está basado en GCC, por lo que tendrás que usar la sintaxis AT&T y no intel.
Te dejo un link a un artículo de Inline Assembly en GCC:
http://routix.sourceforge.net/docs/inline/inline.html (http://routix.sourceforge.net/docs/inline/inline.html)
-
Los bloques de assembler dentro de Turbo C van entre llaves con un identificador "asm". Pero la declaracion de variables va en sentencias de c. No hace falta asumir los segmentos ni la posicion. Por ejemplo
char c;
int i;
asm {
mov c, 48h
lea ax,i
mov ds:[ax], 0e56h
};
Es bastante transparente el uso de las variables. Su direccion las da el compilador, pero en assembler puede recorrerse como arreglos de bytes a partir de su direccion base. :rolleyes: