Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычитание (SUB), a-b, где a<b 
:(
    Опции темы
aeroslav
Дата 7.12.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В связанном с Delphi ассемблерным файлом производится вычитание из a в b. Результат вычитания Res передается Delphi и дальше выводится. Если a>b, то результат корректен, а если a<b, то Res по всем правилам представления целых отрицательнх чисел представляется как , к примеру 65524, хотя отнимаю маленькие значения (13-28, 3-47 и т.д.). Есть ли стандартное решение этой проблемы?
PM MAIL   Вверх
dumb
Дата 7.12.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


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

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



Цитата(aeroslav @  7.12.2006,  11:31 Найти цитируемый пост)
если a<b, то Res по всем правилам представления целых отрицательнх чисел представляется как , к примеру 65524, хотя отнимаю маленькие значения (13-28, 3-47 и т.д.). Есть ли стандартное решение этой проблемы? 

а где тут проблема-то?
PM MAIL   Вверх
aeroslav
Дата 7.12.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну, к примеру результат -295 выдается как 65321, или это уже не проблема?
Я решил её введением доппеременной, отвечающей за знак числа, и в ассемблере работаю только с положительными. Но может есть другое решение?
PM MAIL   Вверх
dumb
Дата 7.12.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


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

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



aeroslav, телепатировать трудно.
есть подозрение, что как всегда путаница с битностью, да и вообще налицо пробел в знаниях базовых понятий.
исходники в студию. и дельфи и асм.
PM MAIL   Вверх
MAKCim
Дата 7.12.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



aeroslav, 
анализируй флаг CF после sub
если он 1, произошел заем из старшего разряда и результат в дополниельном коде
чтобы получить модуль числа нужно
его инвертировать и прибавить 1
Код

...
mov AX, 10
mov BX, 20
sub AX, BX
jnc L1
not AX
inc AX
L1:
...



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

PM MAIL   Вверх
aeroslav
Дата 7.12.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ASM:

;a>b
@@2:
  cmp    aAsmI, 235
  jl    @@2a
  add    ax,-235
  cwd
  idiv    bx
  jmp    short @@Exit
@@2a:
  mov    dx, 235
  sub    dx, ax
  mov    ax, dx
  cwd
  idiv    bx
  mov    sign, 1
  jmp    short @@Exit


Delphi:

      aAsmI:= StrToInt(FrmMain.LEdA.Text);
      bAsmI:= StrToInt(FrmMain.LEdB.Text);
      Lab4I(aAsmI, bAsmI, Res);
      if sign=1 then FrmMain.LEdResA.Text:= '-'+IntToStr(Res);
      if sign=0 then FrmMain.LEdResA.Text:= IntToStr(Res);


Максим, спасибо, то, что мне надо.



PM MAIL   Вверх
dumb
Дата 7.12.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


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

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



все, как я и говорил... smile

если не смешивать эпохи, то достаточно объявить aAsmI, bAsmI, Res: Integer, а в асме сделать:
Код

mov eax, aAsmI
sub eax, bAsmI
mov Res, eax


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

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

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


 




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


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

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