Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перехожу с Дедлфей на С++

5.7K
30 августа 2004 года
ZEREN
13 / / 04.08.2004
Не могу перевести с Делфей таку процедуру...
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, как с етим поступать в С++???

Помогите ПЛИЗЫ!!!
294
30 августа 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by ZEREN
Не могу перевести с Делфей таку процедуру...
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 ({}).

487
30 августа 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by ZEREN
Не могу перевести с Делфей таку процедуру...
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..

Код:
BYTE PortReadByte(WORD Addr)
{
  __asm
  {
    mov dx,Addr
        in  al,dx
  }
}

void PortWriteByte(WORD Addr, BYTE Value)
{
  __asm
  {
    mov dx, Addr
        mov al, Value
    out dx, al
  }
}


Ну приблизительно так. Хотя можно намного изящнее.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог