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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2015, 18:28   #11
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

серьезное обсуждение старшего бита.

Цитата:
Дальше там сравнения, вычитания, умножения и т .п
чем отличается JA от JG | JB от JL | DIV от IDIV | MUL от IMUL | SHR от SAR?
f.hump вне форума Ответить с цитированием
Старый 19.07.2015, 19:03   #12
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Может я немного не понял вопросов автора темы, но если число 0AA1Dh уже записано в регистр AX:
Код:
MOV   AX,  0AA1Dh
То понять, там знаковое число: -21 987 или беззнаковое: 43 549 никак нельзя.

Это мы сами должны представлять какое число туда было записано, и в зависимости от этого работать с ним как со знаковым или как с беззнаковым.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 19.07.2015, 19:51   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А если не записано? Что запись делает с числом такого интересного?

И, да, вопрос ТС был про само число в записи, а не после или вместо записи. Просто почему автор исходника имел право в комента указать, что 0AA1Dh = -21987.
p51x вне форума Ответить с цитированием
Старый 19.07.2015, 20:23   #14
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что запись делает с числом такого интересного?
Ничего не делает, это я и хотел объяснить.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 19.07.2015, 20:56   #15
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию

То есть нету никакого правила, автор сам определяет там положительное или отрицательное?
Может кто то подсказать на примере, и может есть более простой способ расчета?
Расчитать значение BX после выполнения команд:
Код:

          MOV   BX,04D10h;19728 
          MOV   AX,0AA1Dh;-21987
          SUB   BL,AL
          JB    POS4N1
          DEC   BL
          JMP   POS4N2
POS4N1:   SHL   AH,1
POS4N2:   SUB   BX,AX
1)bl = bl - al; 19728 = 01001101 00010000
-21978 =10101010 00011101
rez: 00001101 = 0E?
2) CF= 0; JB не срабатывает.
3) dec bl = OE - 1 = 0D
ax = AA1D bx= 040D;
4)sub bx, ax = 040D - AA1D
BX = 59F0?
Panwo вне форума Ответить с цитированием
Старый 19.07.2015, 22:25   #16
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Код:
          MOV   BX,04D10h
          MOV   AX,0AA1Dh
                         ; BL = 10, AL = 1D
          SUB   BL,AL    
                         ; BL = F3, AL = 1D, BX = 4DF3, AX = AA1D
                         ; jb - прыжок если ниже, точнее, если флаг СF установлен
                         ; т.к. при отнимании в результате был установлен СF (флаг переноса),
                         ; то попадаем на метку POS4N1
          JB    POS4N1   
          DEC   BL
          JMP   POS4N2
                         ; AH = AA
POS4N1:   SHL   AH,1
                         ; AH = 54, AX = 541D, BX = 4DF3
POS4N2:   SUB   BX,AX
                         ; BX = F9D6, AX = 541D
Итого BX = F9D6

Не путайте BX с BL и AX с AL.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 19.07.2015 в 22:29.
Krasiosoft вне форума Ответить с цитированием
Старый 20.07.2015, 12:22   #17
Panwo
Новичок
Джуниор
 
Регистрация: 19.07.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Код:
          MOV   BX,04D10h
          MOV   AX,0AA1Dh
                         ; BL = 10, AL = 1D
          SUB   BL,AL    
                         ; BL = F3, AL = 1D, BX = 4DF3, AX = AA1D
                         ; jb - прыжок если ниже, точнее, если флаг СF установлен
                         ; т.к. при отнимании в результате был установлен СF (флаг переноса),
                         ; то попадаем на метку POS4N1
          JB    POS4N1   
          DEC   BL
          JMP   POS4N2
                         ; AH = AA
POS4N1:   SHL   AH,1
                         ; AH = 54, AX = 541D, BX = 4DF3
POS4N2:   SUB   BX,AX
                         ; BX = F9D6, AX = 541D
Итого BX = F9D6

Не путайте BX с BL и AX с AL.
да я вроде как не спутал, расписал просто побитно регистры. Я так понимаю вы на калькуляторе считали вычитание? мне нельзя будет им пользоваться. И почему CF установился, переполнения вроде не было?
Panwo вне форума Ответить с цитированием
Старый 20.07.2015, 17:13   #18
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Panwo Посмотреть сообщение
калькуляторе считали вычитание?
Не совсем, просто скопировал код и проверил в отладчике что будет происходить
Но можно и без этого, тут ничего сложного нет:

1) 10h - 1Dh = F3h
2) AAh << 1 = 1010 1010b << 1 = 0101 0100b = 54h
3) 4DF3h - 541Dh = F9D6h
Отнимать и добавлять можно в столбик.


Цитата:
Сообщение от Panwo Посмотреть сообщение
почему CF установился, переполнения вроде не было
CF устанавливается при заеме тоже, если это операция вычитания.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 20.07.2015 в 17:24.
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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