Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
1

использование флагов

28.12.2013, 13:48. Показов 4058. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как используя флаги регистра флагов производить 32 разрядные вычисления на 16 разрядных регистрах?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2013, 13:48
Ответы с готовыми решениями:

Инвертировать значения флагов
помогите справиться вот с такой задачей: Инвертировать значения флагов SF, ZF, AF, PF и CF.

Инвертировать значения флагов SF, ZF, AF, PF и CF. В debug
Инвертировать значения флагов SF, ZF, AF, PF и CF. Только делать это в DEBUG Помогите) и если...

Покажите на примерах работу основных флагов
Покажите на примерах работу основных флагов (z,0,p,s,c), а то я что-то не могу понять

Flags: определить количество флагов, установленных в 1
как определить кол-во флагов установленных в 1 ? Добавлено через 16 минут Т.е я помещаю их в...

7
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
28.12.2013, 13:59 2
Элеиентарно. Для этого предназначен флаг переноса в регистре флагов.
http://the-programmer.ru/publ/... 16-1-0-301
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
28.12.2013, 14:05 3
танкист34,
смотри Электронный учебник https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrowАРИФМЕТИЧЕСКИЕ КОМАНДЫ
  • Для чего нужны команды ADC и SBB? Арифметика одинарной и многократной точности
  • Умножение с многократной точностью
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
28.12.2013, 20:08  [ТС] 4
Цитата Сообщение от Mikl___ Посмотреть сообщение
танкист34,
смотри Электронный учебник https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrowАРИФМЕТИЧЕСКИЕ КОМАНДЫ
  • Для чего нужны команды ADC и SBB? Арифметика одинарной и многократной точности
  • Умножение с многократной точностью
я прочитал, там говорится, что складывать числа надо по частям, но получается вот что:
допустим в ax 1828 и dx 1 т.е. число 11828h = 71720
хотим прибавить bx 0056 т.е. 86
add bx, ax
в bx получится 6270
где взять старшую часть у bx(ее же нет) , чтобы сложить со старшей частью ax и в конечном счете записать
полученное в переменную?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
29.12.2013, 03:56 5
танкист34,
допустим в ax 1828 и dx=1 т.е. число 11828h = 71720 хотим прибавить bx=0056h т.е. 86
провереям на калькуляторе 71720+86=71806=1187Eh
Assembler
1
2
3
4
5
mov dx,1
mov ax,1828h
mov bx,56h
add ax,bx;ax=187Eh CF=0
adc dx,0;dx=1
теперь другой пример dx=3FFFh ax=FFECh 3FFFFFECh=1073741804
Assembler
1
2
3
4
5
mov dx,3FFFh
mov ax,0FFECh
mov bx,56h
add ax,bx;ax=0042h CF=1
adc dx,0;dx=4000h
1073741804+86=1073741890=40000042h
1
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
29.12.2013, 16:23  [ТС] 6
Mikl___ , спасибо, более понятно стало

Добавлено через 9 часов 45 минут
Mikl___, а можете сказать про вычитание:
вот если в регистре, допустим ax 1868h
в dx 7h т.е. 465000
,а в регистре bx 46h (70)
при вычитании я посмотрел через TD (sub bx, ax ) в bx получается E7DE
далее использую sbb dx, 0
в итоге имеем в dx 6h, а в bx E7DE
Но почему не 70-465000 != -465930?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
29.12.2013, 16:42 7
танкист34,
сам-то понял, ЧТО написал?
из 71868h вычитаешь 46h так и вычитай, как положено sub ax,bx/sbb dx,0
для чего делать sub bx,ax?
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
29.12.2013, 16:52  [ТС] 8
Цитата Сообщение от Mikl___ Посмотреть сообщение
танкист34,
сам-то понял, ЧТО написал?
из 71868h вычитаешь 46h так и вычитай, как положено sub ax,bx/sbb dx,0
для чего делать sub bx,ax?
спасибо, я так и хотел, но мне для итерационного метода знак нужен, а так число будет не отрицательное, а по идее модуль то меньше, значит и число должно быть в приёмнике отрицательное.
просто я не знаю как записать положительное число в переменную как отрицательное. Проблем с тем, чтобы 32 битное число записать в 16 битную переменную нет. Это я обошёл так:
Assembler
1
yi dw 2 dup(?)
т.е. в первую переменную записываю старшую часть, а во вторую младшую.
0
29.12.2013, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2013, 16:52
Помогаю со студенческими работами здесь

Как сохранить и восстановить регистр флагов?
Как сохранить и восстановить регистр флагов?

Указать значения регистров и флагов в программе
.model small .stack 256 .data a db 254 .code main: mov ax, @data mov ds, ax xor ax,...

Как инвертировать значение флагов в DEBUG
Помогите в DEBUG. Инвертировать значение флагов SF,ZF, AF, PF и CF прописывать именно в DEBUGe

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru