Erro no codigo em Assembler no delphi
Alquem pode me dizer, que tipo de erro é este no codigo abaixo? E
Quando trabalho com Assembler o que devo declarar ou não em:
interface
uses{ uses clause }
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
procedure TFormLed.Timer2Timer(Sender: TObject);
var
X, A: String;
D, G: Word;
Y, I, E: Integer;
begin
//codigo em Assembler
Asm
Mov dx,379h
In al, dx
Mov D, Al //O erro é nesta linha
// [Error] Led.pas(323): Operand size mismatch
end;
Str(D, X);
EditBinarioBase1.text:= X;
end;
Abraços
juarezber@terra.com.br
Quando trabalho com Assembler o que devo declarar ou não em:
interface
uses{ uses clause }
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
procedure TFormLed.Timer2Timer(Sender: TObject);
var
X, A: String;
D, G: Word;
Y, I, E: Integer;
begin
//codigo em Assembler
Asm
Mov dx,379h
In al, dx
Mov D, Al //O erro é nesta linha
// [Error] Led.pas(323): Operand size mismatch
end;
Str(D, X);
EditBinarioBase1.text:= X;
end;
Abraços
juarezber@terra.com.br
Juarezber
Curtidas 0
Respostas
Bolus
27/06/2005
caro colega,
Pelo que notei a sua Variavel D é Word (2 bytes) e o registrador AL é somente 1 Byte, por isso esta dizendo que os Tamanhos não são Iguais.....
Espero ter ajudado.....
Já faz tempo que não Mexia em Assembler.....
Posso perguntar por que esta utilizando esse instrução em Assembler???
Pelo que notei a sua Variavel D é Word (2 bytes) e o registrador AL é somente 1 Byte, por isso esta dizendo que os Tamanhos não são Iguais.....
Espero ter ajudado.....
Já faz tempo que não Mexia em Assembler.....
Posso perguntar por que esta utilizando esse instrução em Assembler???
GOSTEI 0
Beppe
27/06/2005
Ou declare D como Byte ou use ´movzx D, al´.
Mas saiba que este seu código aí não rodará no Windows NT, 2000, XP. Tvz nem no 98, Me.
Mas saiba que este seu código aí não rodará no Windows NT, 2000, XP. Tvz nem no 98, Me.
GOSTEI 0
Juarezber
27/06/2005
Caro Beppe, Acho que estais certo, quando eu usava este
codigo meu windows era o 95.
Desafio: Como faço se agora é o winXP?
Grato
juarezber@terra.com.br
codigo meu windows era o 95.
Desafio: Como faço se agora é o winXP?
Grato
juarezber@terra.com.br
GOSTEI 0
Beppe
27/06/2005
De cabeça eu naum sei o que a porta 379h faz...se o Windows naum disponibilizar alguma API pra ela, só com drivers.
GOSTEI 0
Juarezber
27/06/2005
A porta 379h, retorna quando setado um numero em decimal,
na base 1 da porta paralela.
abraços
juarezber@terra.com.br
na base 1 da porta paralela.
abraços
juarezber@terra.com.br
GOSTEI 0
Beppe
27/06/2005
Se quiser pode usar a API do Windows para comunicação serial, ou pode usar um componente para isso, há vários para o Delphi.
GOSTEI 0
Massuda
27/06/2005
Para manipular a porta paralela no Win NT/2K/XP você precisa usar um driver externo como o [url=http://www.logix4u.net/]Inpout32[/url] (este é muito usado com C/C++/C# e VB); lembro de ter lido aqui no fórum sobre outro driver desse tipo pronto para usar com Delphi, mas não me recordo o nome.
GOSTEI 0
Juarezber
27/06/2005
Alguem tem o comonente IOport, que funcione no delphi 6 e
WinXP?
Grato
Juarez
WinXP?
Grato
Juarez
GOSTEI 0