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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 22:58   #1
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию Сравнение знаковых чисел

Здравствуйте, имеется микропроцессор который обрабатывает однобайтные и двухбайтные данные от 00 до FF.
И умеет формировать след. признаки:
C - перенос из старшего разряда (C = 1)
P - чётное число "1" в байте (P = 1)
AC - перенос из младшей тетрады байта (AC = 1)
Z - нулевой рез-т (Z = 1)
S - отрицательные рез-т (S = 1)

Вопрос состоит в следующем: какие признаки надо смотреть чтобы сравнивать знаковые числа. У меня была мысль складывать значение S и С по Жигалкину, но успеха не принесла.
Если кто знает подскажите название книжки где внятно это описано...
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 03.06.2013, 22:31   #2
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Отвечу сам. xD
Нужно прибавить по 10000000000 к каждому из 2 чисел,вычесть из 1 второе ,сдвинуть и посмотреть С
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 04.06.2013, 05:05   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Herly,
если к числу А и числу В добавить число 10000000000 то число 10000000000 при вычитании сократится
(А + 10000000000) - (В + 10000000000) =
= А + 10000000000 - В - 10000000000 = А - В
команды для сравнения знаковых чисел JL (Jump if less) JG (Jump if greater) судя по мануалам работают по следующим признакам
Код:
команда|         условие           | значения флагов
-------+---------------------------+-----------------
JG/JNLE|больше/не меньше и не равно|(SF xor OF) or ZF = 0
JL/JNGE|меньше/не больше и не равно|SF xor OF = 1
Но в твоем микропроцессоре нет флага OFПойдем другим путем -- пишем программу и наблюдаем за флагами в дебагере
Код:
    mov ax,-80
	cmp ax,-60
	jl a1
	nop
a1:
и смотрим какие флаги отреагируют, у нас по три варианта для срабатывания перехода если меньше и три на переход если больше, сводим их в таблицу
Код:
команда|значения флагов|программа
------+----------------+----------------
  JL  |CF=1 SF=1 OF=0  |ax = 60   ax < 80
  JL  |CF=0 SF=1 OF=0  |ax =-60   ax < 80
  JL  |CF=1 SF=1 OF=0  |ax =-80   ax <-60
------+----------------+-----------------
  JG  |CF=0 SF=0 OF=0  |ax =-60   ax >-80
  JG  |CF=0 SF=0 OF=0  |ax = 80   ax > 60
  JG  |CF=1 SF=0 OF=0  |ax = 60   ax >-60
делаем вывод -- для сравнения чисел со знаком в твоем микропроцессоре можно использовать значения флага S если SF=1 число А меньше чем число В, если SF=0 число А больше чем число В
PS Кто такой Жигалкин? Что за книга?

Последний раз редактировалось Mikl___; 04.06.2013 в 06:05.
Mikl___ вне форума Ответить с цитированием
Старый 08.06.2013, 17:32   #4
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

В том микропроцессоре с которым я работал нет команд jl и jg...
К тому же я обошёлся сравнением беззнаковых чисел, спс за помощь.)
P.S. В курсе Дискретной математике есть логическая операция которая называется сложение по Жигалкину или сложение по модулю 2.
Я просил подсказать мне книгу в которой чётко описано как проводить вычисления со знаковыми двоичными числами.
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 09.06.2013, 02:48   #5
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Herly,
  1. "В том микропроцессоре с которым я работал нет команд jl и jg..." я это понял и поэтому предложил тебе заменить jl и jg на jns и js ведь флаг знака у тебя (Sign Flag - отрицательные рез-т (S = 1)) есть
  2. "В курсе Дискретной математике есть логическая операция которая называется сложение по Жигалкину или сложение по модулю 2" это на вашем курсе "сложение по модулю два" оно же "исключительное ИЛИ" названо в честь вероятно заквкафедры "Дискретной математики" проф Жигалкина, а в основном мужики-то и не знают и используют по старинке название "сложение по модулю два"
  3. "Я просил подсказать мне книгу в которой чётко описано как проводить вычисления со знаковыми двоичными числами." - только просил ты это как-то не очень "четко" -- "Если кто знает подскажите название книжки где внятно это описано..." открывай любой учебник по ассемблеру, там это описано в первой главе
Mikl___ вне форума Ответить с цитированием
Старый 12.06.2013, 00:31   #6
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Спасибо за помощь!)
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание знаковых 16-разрядных целых чисел и операции умножения на ASM-51 (для микроконтроллеров MCS-51) Shark2.1 Помощь студентам 0 11.12.2010 19:01
вычисление для знаковых и беззнаковых целых чисел!!!! senna_ololo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 07.06.2010 23:38
Вычисление для знаковых и без знаковых целых чисел в asm. kup9 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 06.06.2010 18:21
Распознование знаковых чисел Парсифаль Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 03.05.2009 02:26
Ассемблер - сумму элементов массива однобайтных знаковых чисел bum90 Помощь студентам 2 28.04.2009 19:13