[ vladobk @ 18.04.2010. 18:09 ] @
nasao sam sledeci kod na netu i prepisao u devcpp
#include <iostream.h>
int main()
{
asm("in %al,61");
asm("and %al,252");
asm("out 61,%al");
}
izbacuje gresku
Error suffix or operands invalid for `in'
Error suffix or operands invalid for `out'
kako se ubacuje inline asm u devcpp
[ kiklop74 @ 19.04.2010. 18:41 ] @
http://www.google.com/search?q=mingw+inline+assembler
[ vladobk @ 20.04.2010. 17:00 ] @
#include <stdio.h>

int main() {
/* Add 10 and 20 and store result into register %eax */
__asm__ ( "movl $10, %eax;"
"movl $20, %ebx;"
"addl %ebx, %eax;"
);


return 0 ;
}
ovo radi sintaxa izgleda zavisi od procesora

http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx
evo ib dobrog linka

[Ovu poruku je menjao vladobk dana 20.04.2010. u 18:13 GMT+1]

[Ovu poruku je menjao vladobk dana 20.04.2010. u 18:17 GMT+1]
[ vladobk @ 21.04.2010. 18:17 ] @
#include <iostream>
#include <stdlib.h>

using namespace std;

int main() {
/* Add 10 and 20 and store result into register %eax */
__asm__ ( "movl $10, %eax;"
"movl $20, %ebx;"
"addl %ebx, %eax;"
);

__asm__("in %al,61");


system("PAUSE");
return 0;

error sufix or operand for in
gornji deo koda radi iznad in komande isto je i za out komandu
ova in i out komanda nece ni u devcpp ni u makroassembleru , u makroasembleeru ne prijavi gresku prilikom komajliranja ali kada startujem exe prijavi ovo


kako da zatvorim port iili sta?
evo i kod u makroaasm

.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
MsgBoxCaption db "Iczelion Tutorial No.2",0
MsgBoxText db "pozdrav vladobk!",0
.code
start:

mov dx,0378h
mov ax,5
out dx,ax

invoke MessageBox,NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke ExitProcess,NULL
end start
ovaj asm cod mi je nekad radio u delphi1


[Ovu poruku je menjao vladobk dana 21.04.2010. u 19:28 GMT+1]
[ RF MasterX @ 13.05.2010. 23:34 ] @
Oho ho, pa to ti se zove "Privileged instruction"

Upisivanje ili citanje sa I/O porta u takvom obliku je moguce ali samo u:

DoS, Win 3.11, Win 95, Win 98 i Win Me.

U Windows-ima NT tipa kao sto su:

WinNT 4, Win2000, WinXP, Vista, Win7 takve

"Egzibicije" nisu moguce i zato ti izbacuje gresku.

Za ove nove tipove sistema to je moguce ali ako napravis Driver,
pa ukoliko te to bas i ne interesuje bolje batali jer je pisanje
drajvera veoma ozbiljan posao.

A to oko tog stila pisanja, pa moze i jednostavnije:

Code:

#include <iostream.h>
#include <stdlib.h>

int main()
{

_asm{
IN      AL, 61 
AND   AL, 252 
OUT   61, AL
};

}