![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
![]()
Всем привет!
Перехожу на ассемблер ![]() только он сопротивляется ![]() я написал код void main(){ __asm{ Page 60,112 TITLE A04DEFIN(EXE) DATASEG SEGMENT PARA 'DAT' BYTE1 DB ? BYTE2 DB 48 BYTE3 DB 30H ENDS CODESEG SEGMENT PARA 'COD' MAIN PROC FAR ASSUME DS:DATASEG MOV AX,DATASEG MOV DS,AX MOV AX,BYTE2 MAIN ENDP CODESEG ENDS ENS MAIN } } Делал пока все не очень обдуманно, но тут я просто хотел объявить пару переменных как десятичнoе и шестнадцатиричное и занести в них значения. Нажал "компайль!" выдал мне столько ошибок "error C2400: inline assembler syntax error in 'opcode'; found 'DB'" сколько строк внутри асм В чём дело? ![]()
С наилучшими пожеланиями.
|
![]() |
![]() |
![]() |
#2 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
Инлайн ассемблер не поддерживает предопределение переменных да и вобще работу каких либо директив. Все что он способен делать - оперировать переменными созданными в языке вышестоящем.
int main() { unsigned int a=2,b=3,c=0; _asm { mov eax,a add eax,b mov c,eax } } PS: Синтаксис используется MASM-овский. PPS: Если не ошибаюсь main не может быть void-овой. Для написания программ под DOS лучше использовать обычный ассемблер, а не смесь из С и АСМ.
"Тяжело в учении, легко в бою" - А.В. Суворов
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
![]()
написал аналог по примеру
![]() Компайлю... Ну с Богом... А почему еах а не ах? Я юзал ах когда переписывал компайлер говорил "operand size conflict". смысл ошибки ясен, но не понимаю что такое еах и можно ли его юзать для флоут?))))
С наилучшими пожеланиями.
|
![]() |
![]() |
![]() |
#4 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
![]()
eax - это 32 разрядный регистр, ax - это его нижняя половинка, т.е. 16 разрядный.
Переменная типа int так же занимает 32 бита, поэтому для операций с ней нужно пользоваться eax,ebx,ecx и т.п. регистрами
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 03.11.2009 в 19:11. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нудна помошь при написании кода. | Denisko | Помощь студентам | 4 | 06.06.2009 23:07 |
Помогите в написании кода... | sobol556 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 23.03.2009 19:49 |
При написании кода не открывается список типов, объектов. | garic | Microsoft Office Excel | 3 | 14.03.2009 18:56 |
Нужна помощь в написании кода | Михаил Юрьевич | Общие вопросы Delphi | 2 | 27.12.2007 09:32 |