Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > Вывод знакового числа размером в 4 байта |
Автор: FANDER69 23.9.2015, 14:28 | ||
есть код для вывода БЕЗ ЗНАКОВОГО числа размером в 4 байта Чё добавить для полноценного вывода ЗНАКОВОГО числа
УСЛОВИЕ: ДОЛЖНЫ ИСПОЛЬЗОВАТЬСЯ ТОЛЬКО 16 -разрядыне регистры |
Автор: JAPH 23.9.2015, 15:00 |
Вывод знакового числа сводится к выводу беззнакового проверкой на знак, т.е. надо посмотреть, установлен ли старший бит: если да, вывести знак минус и изменить знак числа, если нет, то просто сразу выводить число как беззнаковое. Проверка старшего бита выполняется достаточно просто инструкцией test, а вот с изменением знака числа надо быть внимательным, т.к. команда neg, призванная этим заниматься, работает для 16-битных чисел, а у нас 32-битное. Есть два варианта: либо побитово инвертировать обе половины числа (командой not) и затем прибавить к результату единицу (add 1 к младшей половине, adc 0 к старшей), либо проверить на ноль младшую половину: если она ноль, то neg старшей, если она не ноль, то neg младшей и not старшей. |
Автор: R71MT 23.9.2015, 18:30 | ||
..это ясно, но ИМХО проблема в другом - вывести на экран 4-байтное число 16-битными регистрами |
Автор: ФедосеевПавел 24.9.2015, 00:05 |
А в чём проблема? Знак - 2 варианта от JAPH. Сам перевод - читаем справку о команде div bx и начинаем медитировать до просветления. Ещё вариант - использование 32 битных регистров. Но перед этим почитать учебник, для понимания, что происходит в приведённом коде. |