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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2015, 13:30   #1
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию Знаковые операции

По какому принципу в регистрах размещаются знаковые числа?

Например, как в результате отнимания (38Е7 - 68С3) получается D024?

Или вот условия задачи:
Код:
          MOV   BX,  04D10h;19728 
                    MOV   AX,  0AA1Dh;-21987
Почему именно -21987, если АА1Dh = 43549d
Panwo вне форума Ответить с цитированием
Старый 19.07.2015, 13:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

https://ru.wikipedia.org/wiki/%D0%94...81%D0%BB%D0%B0)
p51x вне форума Ответить с цитированием
Старый 19.07.2015, 14:15   #3
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Я знаю что такое дополнительный код, но можно как то понять что шестнадцатеричное число отрицательное, если в условии не указано его десятичное представление?
Panwo вне форума Ответить с цитированием
Старый 19.07.2015, 14:22   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Я знаю что такое дополнительный код
Цитата:
но можно как то понять что шестнадцатеричное число отрицательное, если в условии не указано его десятичное представление?
ТАКЖЕ КАК НАПИСАНО В ВИКИ. Вы же знаете, что такое доп. код... Проверьте старший бит же наконец.
p51x вне форума Ответить с цитированием
Старый 19.07.2015, 14:37   #5
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
ТАКЖЕ КАК НАПИСАНО В ВИКИ. Вы же знаете, что такое доп. код... Проверьте старший бит же наконец.
Ну получается что начинаеться с 8 и больше всё отрицательное, и все операции в ассемблере в доп коде?
АА может быть же и просто 10101010, т.е 170

Как тогда записать положительное 64к

Последний раз редактировалось Stilet; 19.07.2015 в 20:52.
Panwo вне форума Ответить с цитированием
Старый 19.07.2015, 14:57   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Ну получается что начинаеться с 8 и больше всё отрицательное
если это доп. код, то да

Цитата:
и все операции в ассемблере в доп коде?
В каком асме? Под какую платформу? С какими настройками? Какие операции?

Цитата:
АА может быть же и просто 10101010, т.е 170
Какой размерности операнд? Это доп. код? Где и чему равен старший бит?

Цитата:
Как тогда записать положительное 64к
В каком формате? Как знаковое? Какой размерности?
p51x вне форума Ответить с цитированием
Старый 19.07.2015, 15:08   #7
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию

АА = 170 в прямом коде.


Это для вступительного экзамена задачки, т.к поступаю не в свой вуз то готовлюсь по методичке, и там сказано только что нужно знать команды х86 совместимых процессоров, и что 16 битами можно адресовать положительные числа до 64к и отрицательные до 32к по модулю. Операции там сложения, вычитания, знакового и беззнакового умножения.
Panwo вне форума Ответить с цитированием
Старый 19.07.2015, 15:27   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну так и начинайте по порядку.
16-битное максимальное беззнаковое = 0xFFFF = 65535 dec
16-битное максимальное знаковое = 0x7FFF =32767 dec
и т.д.

Последний раз редактировалось p51x; 19.07.2015 в 15:33.
p51x вне форума Ответить с цитированием
Старый 19.07.2015, 15:43   #9
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию

Это понятно. Непонятно как считать там все вручную. вот например начальное заполнение регистров -
Код:
          MOV   AX,0A050h;-24496
                    MOV   BX,0610Fh;24847
Дальше там сравнения, вычитания, умножения и т .п

1) если не будет написано десятичное значение справа, и будет стоять например старшый бит еденица, как мне понять это положительное число большего диапазона или знак отрицательного?

2) В каком виде производить например сложение или вычитание, когда число отрицательное и представлено в доп.коде с числом положительным в прямом коде, я так понимаю такое может быть, например положительное 65к, - (-30к)
Panwo вне форума Ответить с цитированием
Старый 19.07.2015, 15:54   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
1) если не будет написано десятичное значение справа, и будет стоять например старшый бит еденица, как мне понять это положительное число большего диапазона или знак отрицательного?
Это знаковое или нет? Если нет, то это большое положительное. Если знаковое, то отрицательное.

Цитата:
2) В каком виде производить например сложение или вычитание, когда число отрицательное и представлено в доп.коде с числом положительным в прямом коде, я так понимаю такое может быть, например положительное 65к, - (-30к)
Чем отличается доп. код положительного от прямого положительного? Вы прочитали первое предложение в вики? Вам все еще не понятно и нужны примеры? Ну посмотрите https://en.wikipedia.org/wiki/Two%27s_complement
p51x вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Побитовые операции V_I_P Общие вопросы C/C++ 5 15.10.2013 22:07
Операции с массивами C++ Caspar Fray Помощь студентам 2 15.10.2013 16:03
Битовые операции WizarD.89 Общие вопросы C/C++ 5 23.11.2012 16:40
Побитовые операции С++ Pein95 Общие вопросы C/C++ 3 19.11.2012 14:48
8-ми битные знаковые регистры. Их сравнение. Tronix Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 01.09.2010 22:03