![]() |
|
|
![]()
|
|
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Знающие и отзывчиве люди помогие пожалуйста с ответми на вопросы. Никак не могу найти оответ на них ни в гугле ни в книгах. Может кто знает?
1. Сколько операндов могут иметь команды арифметических операций для процессора `````К1810ВМ86 (I8086)? 2. Где сохраняется перенос, возникающий при выполнении операции сло-жения? 3. Какие типы операндов могут использоваться в качестве dst и в качестве src в операциях сложения и вычитания? 4. Можно ли использовать в команде сложения или вычитания операнды раз-ной длины? 5. Где могут располагаться операнды для выполнения умножения? 6. Чем определяется длина произведения при умножении? 7. Чем определяются знаки частного и остатка при выполнении деления? 8. Какой может быть длина перехода в разных типах команды JMP? 9. Какова максимальная длина условного перехода? 10. Каким образом может быть указан адрес перехода? 11. Какие флаги могут быть использованы в командах условного перехода после выполнениякоманды сложения? 12. Какова максимальная длина переходов при организации циклов? 13. Какие признаки , кроме СХ=0, могут быть использованы при организации циклов? 14. Как осуществляется переход к процедурам разных типов? |
|||
|
||||
| MAKCim |
|
||||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
именно 8086? тогда 2
устанавливается флаг CF
dst: регистровые, адресные src: регистровые, адресные, непосредственные
есть инструкции, в которых можно к примеру
регистры, память, в инструкции (к примеру imul) длина (количество изменяемых разрядов результата) в два раза больше размера операндов остальное позже -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||||
|
|||||||||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Ну наконецто сдвинулось .Спасибо большое! буду ждать.
|
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
знак остатка совпадает со знаком делимого знак определяется старшим бытом результата от -128 до 127 короткий переход от -32768 до 32767 ближний переход (16-ти битный режим) от -2147483648 до 2147483647 ближний переход (32-ух битный и 64-х битные режимы) 0x7FFF = 32767 (16-ти битный режим) 0x7FFFFFFF = 2147483647 (32-ух битные и 64-х битные режимы) через регистр (в рамках текущего сегмента), через память (как длинные, так и ближние переходы), в виде непосредственного операнда: относительно [RE]IP и абсолютно (сегмент (селектор) + смещение)
CF, ZF, SF, OF, PF аналогично максимальной длине условного перехода
флаги с изменением сегмента или без изменения -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
MAKCim выражаю Вам свой большой респект и благодарность. В общем большое человеческое спасибо!
PS. Можно еще один вопрос?;) Как уножить и разделить на константу SUB AX, 123h MUL AX, 123h или не так? |
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 6 Всего: 14 |
Если константа является степенью 2 (4, 16, 1024) тогда умножение/деление заменяется на сдвиги т.е AX * 128 = SHL AX,7 AX / 64=SHR AX,6 для 32-разрядных процессоров есть специальные команды imul reg,imm imul reg,reg,imm imul reg,mem,imm где reg - какой-нибудь регистр, mem - содержимое ячейки памяти и imm - непосредственное число кроме того команда lea может использоваться для умножения на константу Для умножения на 2 -- lea eax,[eax+eax] или lea eax,[eax*2] Для умножения на 3 -- lea eax,[eax+eax*2] Для умножения на 4 -- lea eax,[eax*4] Для умножения на 5 -- lea eax,[eax+eax*4] Для умножения на 6 -- lea ecx,[eax*2] затем lea eax,[ecx+ecx*2] Для умножения на 7 -- lea ecx,[eax+eax*2] затем lea eax,[ecx+eax*4] Для умножения на 8 -- lea eax,[eax*8] Для умножения на 9 -- lea eax,[eax+eax*8] и так далее Для деления на константу специальных команд нет Это сообщение отредактировал(а) Mikl_ - 5.2.2008, 12:51 |
|||
|
||||
| asd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.6.2006 Репутация: нет Всего: 1 |
Что-то вопросы очень похожи на какой-то тест
А теперь немного поиграем в телепатию Я так думаю, имелась ввиду команда loop - тогда -128 - +127 Опять же есть подозрение, что вопрос про stdcall, fastcall и т.п. |
|||
|
||||
| BCworm |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
Ребята а можно конкретный пример в виде фрагмента кода
Взяли чтото уножиди на константу Взяли еще чтото и поделили на константу. |
|||
|
||||
| Mikl_ |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 6 Всего: 14 |
BCworm
Для начала, не скупись - купи учебник!
|
||||
|
|||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |