
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Сообщ.
#1
,
|
|
|
MS DOS 6.22 и borland c 3.1
почему-то в моем bc31 не работает _EAX, _EBX, _ECX и т.д. когда смотрю просто _AX (младшее слово), то он верный. Options->compiler->code generation -> large Options->compiler->advanced code generation->instuction set-> 80386 может еще что-то надо настроить? несколько дней назад кто-то говорил, что так все работает. Именно bc31+dos В итоге работает такая штука: ![]() ![]() unsigned long wBaseAddr; asm{ db 0x66; mov word ptr wBaseAddr,cx; } в переменной wBaseAddr записан 32-х разрядные регистр ecx. тогда верны ли следующие строки: ![]() ![]() unsigned long data; unsigned int port; asm{ mov dx,port; db 0x66; mov ax, word ptr data; //(32-х битная data) db 0x66; out dx,ax; // записали в порт число data } asm{ mov dx,port db 0x66; in port; // из порта в ax записано 32-х битное число db0x66; mov word ptr data,ax } |
Сообщ.
#2
,
|
|
|
Цитата antpu238 @ тогда верны ли следующие строки: Почти ![]() ![]() ![]() asm{ mov dx,port db 0x66 in ax,dx // из порта в ax записано 32-х битное число db 0x66 mov word ptr data,ax } Цитата antpu238 @ почему-то в моем bc31 не работает _EAX, _EBX, _ECX и т.д. когда смотрю просто _AX (младшее слово), то он верный. Options->compiler->code generation -> large Options->compiler->advanced code generation->instuction set-> 80386 Настройки правильные, должно работать... Попробуй этот код - у меня работает: ![]() ![]() #include<stdio.h> #include<conio.h> ////////////////////////////////////////////////////////////// unsigned long x=0x55AA55AA; unsigned long y=0x00000000; ////////////////////////////////////////////////////////////// void main(void) { clrscr(); _EAX=x; y=_EAX; printf("EAX=%08lX, x=%08lX, y=%08lX\n",_EAX,x,y); getch(); } Если не будет работать, тогда будем разбираться. Или у тебя во встроенном ассемблере не работает? |
Сообщ.
#3
,
|
|
|
cppasm
хм, на экране все верно, а в watch'e _EAX всегда равно 0х4150140... Добавлено похоже BC31 не может в вотче отображать _EAX и иже с ним... |
Сообщ.
#4
,
|
|
|
Цитата antpu238 @ похоже BC31 не может в вотче отображать _EAX и иже с ним... Похоже... |