Перехожу с Дедлфей на С++
function PortReadByte(Addr:Word) : Byte; assembler; register;
asm
MOV DX,AX
IN AL,DX
end;
procedure PortWriteByte(Addr:Word; Value:Byte); assembler; register;
asm
XCHG AX,DX
OUT DX,AL
end;
и ещщё...
В Делфях... как и в Паскале... бёло для хранения адресса - word - тип типа unsigned int, как с етим поступать в С++???
Помогите ПЛИЗЫ!!!
Не могу перевести с Делфей таку процедуру...
function PortReadByte(Addr:Word) : Byte; assembler; register;
asm
MOV DX,AX
IN AL,DX
end;
procedure PortWriteByte(Addr:Word; Value:Byte); assembler; register;
asm
XCHG AX,DX
OUT DX,AL
end;
и ещщё...
В Делфях... как и в Паскале... бёло для хранения адресса - word - тип типа unsigned int, как с етим поступать в С++???
Помогите ПЛИЗЫ!!!
В качестве замены Word бери unsigned short.
А вот что делать с асмом (выдрано из хелпа):
asm <opcode> <operands> <; or newline>
_asm <opcode> <operands> <; or newline>
__asm <opcode> <operands> <; or newline>
Description
Use the asm, _asm, or __asm keyword to place assembly language statements in the middle of your C or C++ source code. Any C++ symbols are replaced by the appropriate assembly language equivalents.
You can group assembly language statements by beginning the block of statements with the asm keyword, then surrounding the statements with braces ({}).
Не могу перевести с Делфей таку процедуру...
function PortReadByte(Addr:Word) : Byte; assembler; register;
asm
MOV DX,AX
IN AL,DX
end;
procedure PortWriteByte(Addr:Word; Value:Byte); assembler; register;
asm
XCHG AX,DX
OUT DX,AL
end;
и ещщё...
В Делфях... как и в Паскале... бёло для хранения адресса - word - тип типа unsigned int, как с етим поступать в С++???
Помогите ПЛИЗЫ!!!
Хех. C уж никак не слабее Паскаля. Единственное различие - чувствителен к регистру символов. А касаемо Word....
Дело в том что для виндов уже давно все типы переопределены. Если пишешь не под винду - то тоже нет проблем: typedef unsigned short WORD;
и далее юзай наздоровье ну или typedef unsigned short Word; - как больше нравится.
Поэтому абсолютно доступны такие типы как BYTE, WORD, DWORD - те самые беззнаковые. Ну не плющит меня писать unsigned short.
А касаемо функций...
Как это будет выглядеть на C..
{
__asm
{
mov dx,Addr
in al,dx
}
}
void PortWriteByte(WORD Addr, BYTE Value)
{
__asm
{
mov dx, Addr
mov al, Value
out dx, al
}
}
Ну приблизительно так. Хотя можно намного изящнее.