Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2010, 16:44   #1
Ra88
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 21
По умолчанию Преобразование типов

Доброе время суток! Подмогните начинающему. Не могу разобраться с преобразованием типов в ассемблере, помогите информацией кто какой может.
Конкретно к моей задаче - текстик из переменной: fName db "Россия ВПЕРЁД !!!",0 необходимо перенести в переменную типа dd или наоборот (из dd в db).
Пользуюсь 10 MASMом. ВСЕМ заранее спасбки!
Ra88 вне форума Ответить с цитированием
Старый 06.07.2010, 16:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пардон зачем???
даже для Юникода DW хватает, а ты DD хочешь...
Или это контрольная глупая?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.07.2010, 16:55   #3
Ra88
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 21
По умолчанию

ну честно признаться просто экспериментирую ) ну а как в dw допустим преобразовать?
Ra88 вне форума Ответить с цитированием
Старый 07.07.2010, 12:19   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от Ra88
текстик из переменной: fName db "Россия ВПЕРЁД !!!",0 необходимо перенести в переменную типа dd или наоборот (из dd в db).
Пользуюсь 10 MASMом. ВСЕМ заранее спасбки!...ну а как в dw допустим преобразовать
msg0 db "Россия ВПЕРЁД !!!",0
msg1 dw 'оР','сс','яи','В ','ЕП','ЁР',' Д','!!',0
msg2 dd 'ссоР','В яи','ЁРЕП','!! Д',0 и нормально выводит MessageBox'ом
а вот в dq и dt более 4 символов не конвертирует, пишет "constant value too large"
Mikl___ вне форума Ответить с цитированием
Старый 22.07.2010, 02:56   #5
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

Вообще говоря:
все данные располагаются линейно (flat), а значит когда пишеш
Код:
fName db "Россия ВПЕРЁД !!!",0
то:
fName - адрес первого байта начала данных, то есть адрес "Р", а сама строка массив данных (в данном случае одно байтовых)
и если хочеш преобразить к примеру
Код:
fName db "Россия ВПЕРЁД !!!",0
fName_dd dd 10 dup(?)
к типу dd( преобразованная строка в fName_dd):

Код:
lea eax,fName
lea ecx,fName_dd
...............
mov ebx,dword ptr [eax]
mov dword ptr [ecx],ebx
add eax,4
add ecx,4
...............
Также смотри MMX - команды.

А вообще это все абстрактно.. Это только компиляторы высокого уровня преобразовывают типы данных.. в ассемблере же (это то что скрывают компиляторы высокого уровня) один кусочек данных может рассматриваться как любые данные:
строка или целое|число с плавающей точкой или знаковое|без знаковое и т.д. Все зависит от команд которые используют эти данные.

В Ассемблере нет такого понятия преобразования данных, в котором оно используется в языках высокого уровня...
|{ot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование типов Aleksandra1990 Общие вопросы C/C++ 5 12.05.2010 17:32
преобразование типов Dimarik Общие вопросы C/C++ 1 03.04.2010 16:28
Си. Преобразование типов pif Помощь студентам 3 20.04.2009 13:54
Преобразование типов DeFace Общие вопросы C/C++ 4 24.03.2009 17:06
Преобразование типов Pronik Общие вопросы Delphi 2 12.06.2007 12:23