Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбить число на 2 регистра! 
:(
    Опции темы
valentos
Дата 13.6.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Как разбить 32 разрядное число на 2 (16 разрядных) числа
Плиз, подскажите! 
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
MAKCim
Дата 13.6.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Код

mov eax, number
mov ebx, eax
shr ebx, 16
and eax, 0x0000FFFF



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
valentos
Дата 13.6.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Цитата(MAKCim @  13.6.2007,  18:39 Найти цитируемый пост)
mov eax, numbermov ebx, eaxshr ebx, 16and eax, 0x0000FFFF

Наверно я неправильно выразился!
У меня дано число Long(32 разряда), мне надо занести в 16 разрядный регистр!(32 разрядные регистры не использовать)! Это как-то делается путем деления 32 разряд числа на 2 регистра(по 16 разрядов). 
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
valentos
Дата 13.6.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Вот исходник поидее должно работать!
Код

#include "stdafx.h"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
  unsigned _int16 x;
      unsigned long y,f;
      f=0;
      cout<<" Vvedite X:"; cin>>x;
      cout<<"\n Vvedite Y:"; cin>>y;
    _asm
    {
        lea bx, y
         mov ax, word ptr [bx]
         mov dx, word ptr [bx + 2]
         add ax, x
         adc dx, 0
         mov word ptr [bx], ax    
         mov word ptr [bx + 2], dx

    }
    cout<<"F="<<f<<"\n";
    return 0;
}


но, в строках где есть адресация (ptr[bx], ptr[bx+2]), компилятор ругается на эту адресацию:
error C2432: illegal reference to 16-bit data in 'second operand'
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
Mikl__
Дата 19.6.2007, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 18.5.2007

Репутация: 1
Всего: 1



судя по смыслу задачи ты складываешь 16-разрядное X с 32-разрядным Y 
и результат должен быть в 32-разрядном F
тогда 
Код

mov ax,word ptr [Y]
mov dx,word ptr [Y+2]
add ax,[X]
adc dx,0
mov word ptr [F],ax,
mov word ptr [F+2],dx

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.