Pascal/Turbo Pascal - Ensamblador en pascal

 
Vista:

Ensamblador en pascal

Publicado por Franco Sanguedolce (32 intervenciones) el 25/08/2013 04:23:02
buenas amigos del foro,
he estado buscando informacion sobre como usar ensamblador en pascal y he encontrado bastante informacion, pero he aqui mi problema.

uso free pascal 2.6.2 en wndows 7 y funciona perfecto,

cuando agrego alguna rutina en ensamblador, a la hora de compilar salta un error de compilacion como el siguiente:

unknown identifier AX.
unknown identifier BX.
..
etc

la verdad no se como solucionar esto,
probe definiendo ax,bx,cx,dx como variables de tpo registers pero no consegui nada.

alguien que pueda ayudarme??

aqui un codigo que use para probar segmentos en asm:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program prueba_asm;
uses crt,dos;
 
var
     n1,n2: integer;
     res: integer;
 
begin
          clrscr;
          n1:= 150;
          n2:= 100;
          asm
                 mov AX, n1
                 add AX, n2
                 mov res, AX
         end;
         write('El resultado es: ',res);
readkey;
end.


si pudieran ayudarme lo agradeceria.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ensamblador en pascal

Publicado por Christian (8 intervenciones) el 26/08/2013 07:18:19
Lo probe tu codigo en Turbo Pascal y corrio perfectamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ensamblador en pascal

Publicado por Christian (8 intervenciones) el 26/08/2013 07:27:52
El assembler por omisión usa una sintaxis diferente, pero se puede habilitar el lector de assembler estilo Intel (que es el que usa Turbo Pascal) usando la opción -Rintel desde la línea de comandos al invocar el compilador Free Pascal, o bién poniendo la directiva de compilación {$asmmode intel} al inicio del código.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{$asmmode intel}
program prueba_asm;
uses crt,dos;
var
   n1,n2: integer;
   res: integer;
begin
     clrscr;
     n1:=150;
     n2:=100;
     asm
       mov AX, n1
       add AX, n2
       mov res, AX
     end;
     write('El resultado es: ',res);
     readkey;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ensamblador en pascal

Publicado por Franco Sanguedolce (32 intervenciones) el 26/08/2013 09:16:35
Muchas Gracias Christian, con la directiva {$asmmode intel} solucione el problema,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar