C++ y ensamblador
Publicado por Lahm (3 intervenciones) el 03/06/2011 02:26:19
Saludos. Realicé un programa para ver como interactúan C++ y ensablador, este es el código
//Programa que ilustra un procedimiento en ensamblador que muestra
//el contenido de una estructura de datos en C
//Una estructura de datos simple-------------------------------------------
typedef struct registros
{
char primer_nombre[16];
char apellido[16];
int edad;
int salario;
}REGISTRO;
//Llenado de algunos registros---------------------------------------------
REGISTRO registro[4]=
{
{"ABC","DEF",56,2300},
{"GHI","JKL",32,3400},
{"MNO","PQR",27,4300},
{"STU","VWX",50,3700}
};
//Funciones
Cad (char *dir_cadena[]){
_asm{
mov bx,dir_cadena
mov ah,2
sup:
mov dl,[bx]
cmp al,0
je inf
int 0x21
jmp sup
inf:
mov al,0x20
int 0x21
}
return 0;
}
Clrf(){
_asm{
mov ah,2
mov dl,13
int 0x21
mov dl,10
int 0x21
}
return 0;
}
Nume (int temp){
_asm{
mov ax,temp
mov bx,10
push bx
L1:
mov dx,0
div bx
push dx
cmp ax,0
jne L1
L2:
pop dx
cmp dl,bl
je L3
mov ah,2
add dl,0x30
int 0x21
jmp L2
L3:
mov dl,0x20
int 0x21
}
return 0;
}
//Programa-----------------------------------------------------------------
void main(){
int apunt=-1;
while(apunt ++ <3)
{
Cad(registro[apunt].apellido);
Cad(registro[apunt].primer_nombre);
Nume(registro[apunt].edad);
Nume(registro[apunt].salario);
Clrf;
}
}
Me tira estos errores y la verdad no entiendo que me está haciendo falta
Info :Compiling C:\BC5\BIN\estruct.cpp
Error: estruct.cpp(93,32):Cannot convert 'char *' to 'char * *'
Error: estruct.cpp(93,32):Type mismatch in parameter 'dir_cadena' in call to 'Cad(char * *)'
Error: estruct.cpp(94,37):Cannot convert 'char *' to 'char * *'
Error: estruct.cpp(94,37):Type mismatch in parameter 'dir_cadena' in call to 'Cad(char * *)'
//Programa que ilustra un procedimiento en ensamblador que muestra
//el contenido de una estructura de datos en C
//Una estructura de datos simple-------------------------------------------
typedef struct registros
{
char primer_nombre[16];
char apellido[16];
int edad;
int salario;
}REGISTRO;
//Llenado de algunos registros---------------------------------------------
REGISTRO registro[4]=
{
{"ABC","DEF",56,2300},
{"GHI","JKL",32,3400},
{"MNO","PQR",27,4300},
{"STU","VWX",50,3700}
};
//Funciones
Cad (char *dir_cadena[]){
_asm{
mov bx,dir_cadena
mov ah,2
sup:
mov dl,[bx]
cmp al,0
je inf
int 0x21
jmp sup
inf:
mov al,0x20
int 0x21
}
return 0;
}
Clrf(){
_asm{
mov ah,2
mov dl,13
int 0x21
mov dl,10
int 0x21
}
return 0;
}
Nume (int temp){
_asm{
mov ax,temp
mov bx,10
push bx
L1:
mov dx,0
div bx
push dx
cmp ax,0
jne L1
L2:
pop dx
cmp dl,bl
je L3
mov ah,2
add dl,0x30
int 0x21
jmp L2
L3:
mov dl,0x20
int 0x21
}
return 0;
}
//Programa-----------------------------------------------------------------
void main(){
int apunt=-1;
while(apunt ++ <3)
{
Cad(registro[apunt].apellido);
Cad(registro[apunt].primer_nombre);
Nume(registro[apunt].edad);
Nume(registro[apunt].salario);
Clrf;
}
}
Me tira estos errores y la verdad no entiendo que me está haciendo falta
Info :Compiling C:\BC5\BIN\estruct.cpp
Error: estruct.cpp(93,32):Cannot convert 'char *' to 'char * *'
Error: estruct.cpp(93,32):Type mismatch in parameter 'dir_cadena' in call to 'Cad(char * *)'
Error: estruct.cpp(94,37):Cannot convert 'char *' to 'char * *'
Error: estruct.cpp(94,37):Type mismatch in parameter 'dir_cadena' in call to 'Cad(char * *)'
Valora esta pregunta


0