Clipper On Line • Ver Tópico - Integração entre Clipper e Assembler

Integração entre Clipper e Assembler

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Integração entre Clipper e Assembler

Mensagempor Dr.Microso » 07 Jun 2009 13:46

Senhores saudações!

Não raro, encontramos na NET uma vasta coleção de preciosos executáveis em Assembler, de emprego diverso e com manipulação de recursos fabulosos, porém ainda inexistentes em LIB (ou portados) para o Clipper.

Veja o caso:
> Tenho um executável em ASM (e seu fonte).
> Possui uma instrução de retorno 0 ou 1 ou apenas de mudança de comportamento visual da aplicação (poderia ser UMA outra função específica).
> Não tenho interesse em agregar ou reduzir nada em termos de sua função básica (que pode ser qualquer), porque é única, prevista e aprovada.
> Que linhas de instrução devo colocar dentro desta rotina em ASM para receber a chamada e retornar o valor ao Clipper?
> Como implementar em termos de Clipper uma chamada a esta rotina em ASM e receber seu valor (1 ou 0 por exemplo)?
> A intenção óbvia e criar uma LIB com os OBJ Assembler (que antes eram apenas executaveis para MS-DOS) tratados para uso posterior com Clipper.

Alguém poderia postar exemplos de código?
Exemplo: rotina em ASM (sem modificação) => mesma rotina em ASM modificada para chamada e retorno ao Clipper

Grato!

Nota de Moderação:
por Pablo César: O tópico foi movido da seção Clipper por tratar específicamente de outra linguagem.
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 176
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 4 vezes

Re: Integração entre Clipper e Assembler

Mensagempor Maurício Elias » 08 Jun 2009 10:42

Bom dia colega.

Cara, essa sua função em ASM não tem como receber parâmetros ?

Tente enviar um email para haroldo@unoeste.br
Ele é diretor da fac de inf de Pte Prudente. Pergunta se ele tem algum aluno ou colega q programa em assembler e possa te ajudar.

Abraços.

_______
Maurício
Abraços.
_______
Maurício
Maurício Elias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 304
Data de registro: 12 Mai 2005 08:48
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Re: Integração entre Clipper e Assembler

Mensagempor Maligno » 08 Jun 2009 12:09

A interface Assembly para Clipper é a mesma de C. O que muda, claro, é apenas a linguagem.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6432
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Re: Integração entre Clipper e Assembler

Mensagempor Dr.Microso » 09 Jun 2009 01:57

Maurício, saudações!

Grato pela contribuição do e-mail do sr. Haroldo, ainda vou contatá-lo. Contatos assim são muito valiosos!

Não, ela não recebe parametros de entrada (não ainda nesta fase do tópico).
Mas se recebesse, seria em linha de comando, pq é um arquivo executável do qual eu tenho o fonte.

No contexto é apenas uma questão hipotética, para estudos mais profundos e ampliação de conhecimento a partir deste tópico inicial.
Sabe aqueles pequenos executáveis em ASM que sua aplicação ou de outros executa externamente? Vou exemplificar...
Imagine que vc possua um executável (com o fonte) de nome MAURICIO e ele faça apenas uma destas coisas:

> muda o vídeo de 25 linhas para 36 linhas, ou...
> captura o endereço físico do modem (MAC), ou...
> retorne a quantos ciclos encontra-se o processador do PC naquele momento.
> e outros OUs....

Como pode observar, a função (lógica) do executável é bem definida (sem sustos). A ação é prevista ou o tipo de dado retornado está dentro de um escopo.
Vc deseja então ter o código incorporado no seu executável (nada de arquivo externo ou mais um na pasta), executando-o como uma função.
Evidentemente vc quer modificar, compilar e agregar MAURICIO.OBJ a sua LIB.
Veja um código super simplificado que ilustra a intenção...

MICROSO.PRG
 -------------------------------------------------------------
LOCAL cA
-------------------------------------------------------------
cls

cA := Mauricio()           //neste caso vai retornar uma STR

DispOutAT(10,10, cA, "GR+/N"); Inke(5)
retu
--------------------------------------------------The End--


A função deste ASM é apenas a impressão de uma STR. Está "IN NATURA" como foi encontrado.
Sua simplicidade facilita o entendimento futuro de onde se procede a alteração para retorno do dado ao Clipper.

MAURICIO.ASM

dosseg
.model small
.stack 100h

.data
hello_message db 'Saudações CURSORianas a todos!!!',0dh,0ah,'$'

.code
main  proc
      mov    ax,@data
      mov    ds,ax

      mov    ah,9
      mov    dx,offset hello_message
      int    21h

      mov    ax,4C00h
      int    21h
main  endp
end   main

As questões são:

> quais as instruções que deveriam ser agregadas ao código acima para o dado ser retornado ao Clipper?
> O dado no contexto é do tipo Caracter. E se a saída fosse do tipo Numérica, Data, Lógica ou Array?
> Qual seria o melhor compilador e quais parametros de compilação usar?

Um forte abraço!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 176
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 4 vezes

Re: Integração entre Clipper e Assembler

Mensagempor vagucs » 17 Jun 2009 14:06

cara, tem uns 10 anos que nao faço nada em ASM, a rotina que vc vai usar é a _retc(<cChar>)

Basicamente
              mov   dx, seg hello_message
              mov   ax, offset hello_message
              push  dx
              push  ax
              call  __retc
              add   sp, 4


É ajustar para gerar um OBJ no formato, esse exemplo acima pode ser obtido no NG do clipper.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1455
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 12 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro