Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/187: Рейтинг темы: голосов - 187, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 25

Значение каждого флага

21.01.2010, 21:37. Показов 39937. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дайте ссылки на эту тему про регистры флагов вот пример:
И проведите свои примеры

вроде как у каждого этого флага есть своё значение

Code
1
2
3
4
5
6
7
+ F1           1001 0100       как решён этот пример ? 
   B3          CF=1            
-----         AF=0           
   A4          PF=1            
                SF=1                                        
                ZF=0
                OF=0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.01.2010, 21:37
Ответы с готовыми решениями:

Можно ли прибавить к значению регистра значение флага переноса
Например: mov al, -127 ;(81h) mov bl, -127 ;(81h) add al,bl ;(02h, CF=1) мне нужно прибавить к AH 1, т.е....

Как осуществить переход по значению флага df
помогите пожалуйста..как осуществить переход по значению флага df? для cf знаю есть отдельные команды но с ним работать не могу. есть ли...

Как узнать состояния флага AF при операциях ADD и SUB?
С ассемблером мало знаком, поэтому как сделать ассемблерную вставку для получения результата флага AF в арифметических операциях ? спасибо...

29
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.01.2010, 08:42
Runfik , ты бы еще в двоичном виде пример кода написал Регистр флагов описан в любой книге по асму, он просто не может быть не описан. Книги смотри здесь https://www.cyberforum.ru/asse... d5209.html Я Зубкова читал, не плохая книга, когда понимаешь о чем речь, если нет- легко запутаться.
0
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 25
22.01.2010, 11:13  [ТС]
Ну а всё-таки кат можно считать ? это у нас на учёбе такие примеры были я не понял как считается
последние 2 регистра флагов?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.01.2010, 11:54
Флаги не считаются, они устанавливаются. Вот цитата из книги Зубкова
CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), иначе устанавливается в 0. Например, после сложения слова 0FFFFh и 1, если регистр, в который надо поместить результат, — слово, в него будет записано 0000h и флаг CF = 1.
PF — флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число бит, равных 1; устанавливается в 0, если число единичных бит нечетное. (Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, если он равен 1.)
AF — флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.
ZF — флаг нуля. Устанавливается в 1, если результат предыдущей команды — ноль.
SF — флаг знака. Этот флаг всегда равен старшему биту результата.
TF — флаг ловушки. Этот флаг был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой команды программы управление временно передается отладчику (вызывается прерывание 1 — см. описание команды INT).
IF — флаг прерываний. Установка этого флага в 1 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств (см. описание команды INT). Обычно его устанавливают на короткое время для выполнения критических участков кода.
DF — флаг направления. Этот флаг контроллирует поведение команд обработки строк — когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, а когда DF = 0 — наоборот.
OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице (то есть отрицательное) и наоборот.
Приведенный тобой пример я откровенно говоря не понял.
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
22.01.2010, 12:17
Вот выделил нормально пример Runfik'a , сразу стало как-то понятно.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
22.01.2010, 12:26
А, вот оно что! Тогда для понимания как это работает, достаточно понимать HEX числа, и знать, что 1+1=10(bin) Читай описание флагов, все станет понятно. Там про флаг SF я бы добавил ", если результат отрицательный, и/или операнды-знаковые числа"
0
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 25
22.01.2010, 18:52  [ТС]
А можетели вы привести свои примеры как я привёл чтобы понятнее стало

Добавлено через 2 часа 41 минуту
Цитата Сообщение от Runfik Посмотреть сообщение
А можетели вы привести свои примеры как я привёл чтобы понятнее стало
Пожалуста
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
22.01.2010, 19:19
Code
1
2
3
4
5
6
7
8
9
10
11
  50
- 55
-----
  FB
 
CF = 1
AF = 1
PF = 0
SF = 1
ZF = 0
OF = 0
Code
1
2
3
4
5
 3
+2
---
 5
все по нолям
0
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 25
22.01.2010, 21:57  [ТС]
я так не понял почему флаг OF = 0 ?
флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице (то есть отрицательное) и наоборот.
FFFFB там отрицательные число почему Ноль может быть один

Добавлено через 10 минут
Вроде сам разобрался что это 1111
- 1011
100
Переполнения нет !!!
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
22.01.2010, 21:59
Code
1
2
3
4
5
6
7
8
  60 (число положительное)
+ 25 (число положительное)
----
  85  (число отрицательное -7B как знаковое)
 
OF = 1
SF = 1
остальные нули
Т.е. OF ставится, когда результат неверен, если учитывать знак числа.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.01.2010, 09:57
Цитата Сообщение от Goodwin98 Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
  60 (число положительное)
+ 25 (число положительное)
----
  85  (число отрицательное -7B как знаковое)
 
OF = 1
SF = 1
остальные нули
Т.е. OF ставится, когда результат неверен, если учитывать знак числа.
Те же числа:
111100
+
11001
--------
1010101

Разве SF ставится в этом случае?
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
23.01.2010, 10:22
Цитата Сообщение от Kastaneda Посмотреть сообщение
Разве SF ставится в этом случае?
Почему ? Ведь число 01010101 не знаковое.
Кстати все эти флаги можно наблюдать в отладчиках.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.01.2010, 10:36
Блин, до этого думал, что понимаю флаги. Давай по порядку: SF- флаг знака, Устанавливается в 1 если результат отрицательный (т.е. старший бит равен 1, SF=1 ставится чтоб процессор понимал, что это не большое положительное, а маленькое отрицательное) Ведь так? Далее SF=1 (или 0, в зависимости от результата) если операнды - знаковые числа. Вроде так? А в вышепреведенном примере, если иметь ввиду беззнаковые числа, то SF по-моему будет 0, но даже если числа знаковые, то SF все равно 0. До сего момента об этом флаге я думал именно так, скажи, где я не прав.

Добавлено через 3 минуты
Даже если смотреть Зубкова
SF — флаг знака. Этот флаг всегда равен старшему биту результата.
У нас старший бит 0, значит SF=0.
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
23.01.2010, 10:43
Видимо мы друг друга не поняли. Конечно SF = 0.
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.01.2010, 10:50
Цитата Сообщение от Goodwin98 Посмотреть сообщение
Видимо мы друг друга не поняли. Конечно SF = 0.
Видимо да
Я просто не понял, почему ты в приведенном примере указал, что SF=1 ? Начал думать я что-то не правильно понимаю )
1
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
23.01.2010, 11:05
Цитата Сообщение от Kastaneda Посмотреть сообщение
Я просто не понял, почему ты в приведенном примере указал, что SF=1 ? Начал думать я что-то не правильно понимаю )
там числа-то шестнадцатеричные.
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.01.2010, 11:12
А! Но все равно, хоть там старший бит 1, число то положительное, разве флаг ставиться? Проц тогда будет думать что это -7B, а не +85. Я просто для себя понять хочу.
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
23.01.2010, 11:19
Проц ничего думать не будет он просто выставит флаг, потому что старший бит результата - 1.
Для него нет отрицательных чисел вообще. Ну или вспоминает о них только когда дело доходит до команд idiv, imul.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.01.2010, 15:22
Я тогда не понимаю, зачем этот флаг нужен? Если он ставится в 1 даже если число беззначное. А как например решится следующий пример
Code
1
2
3
4
5
6
7
8
9
10
11
12
  FFFE (беззначное или положительное)
+
  0005
------
10003 (переполнение)
 
 
  FFFE (отрицательное)
+
  0005
------
  0003
Допустим число FFFE получено путем арифмитической операции, т.е. SF=1 , как процессор будет определять ставить ему флаг переполнения или нет? Ведь от этого зависит результат операции. Что-то я окончательно запутался.
1
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
23.01.2010, 15:36
После сложения, лишняя единица уйдет во флаг CF, а старший бит оставшегося скопируется во флаг SF.
В любом нормальном отладчике отображаются текущие флаги. Попробуй поиграть с ними
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2010, 15:36
Помогаю со студенческими работами здесь

Рисование флага Швеции
Привет всем. Нужна помощь с рисованием флага Шведции. Часть проги есть но не могу нарисовать вертикальную белую линию. Помогите пожалуйста....

Флаг Швеции
Нам задали в институте написать программу на Ассемблере, программа должна рисовать в графической среде флаг Швеции. Много раз пробовал...

Не работает часть программы формирующая на экране монитора изображение флага
Не работает часть программы формирующая на экране монитора изображение флага, написано в fasm, вот код format MZ CurrVideoMode =...

Арифметический сопроцессор: как проверить состояние флага IE?
У меня программа много раз пересчитывает значения по определённой формуле,и бывает,что получается отрицательное число под корнем...

Создать изображение флага Канады
Помогите пожалуйста Создать изображение флага Канады в FASM


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru