| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Теоретические вопросы про Ассемблер |
| Автор: BCworm 1.2.2008, 09:23 |
| Знающие и отзывчиве люди помогие пожалуйста с ответми на вопросы. Никак не могу найти оответ на них ни в гугле ни в книгах. Может кто знает? 1. Сколько операндов могут иметь команды арифметических операций для процессора `````К1810ВМ86 (I8086)? 2. Где сохраняется перенос, возникающий при выполнении операции сло-жения? 3. Какие типы операндов могут использоваться в качестве dst и в качестве src в операциях сложения и вычитания? 4. Можно ли использовать в команде сложения или вычитания операнды раз-ной длины? 5. Где могут располагаться операнды для выполнения умножения? 6. Чем определяется длина произведения при умножении? 7. Чем определяются знаки частного и остатка при выполнении деления? 8. Какой может быть длина перехода в разных типах команды JMP? 9. Какова максимальная длина условного перехода? 10. Каким образом может быть указан адрес перехода? 11. Какие флаги могут быть использованы в командах условного перехода после выполнениякоманды сложения? 12. Какова максимальная длина переходов при организации циклов? 13. Какие признаки , кроме СХ=0, могут быть использованы при организации циклов? 14. Как осуществляется переход к процедурам разных типов? |
| Автор: BCworm 1.2.2008, 10:20 |
| Ну наконецто сдвинулось .Спасибо большое! буду ждать. |
| Автор: MAKCim 1.2.2008, 10:52 | ||||
знак остатка совпадает со знаком делимого знак определяется старшим бытом результата от -128 до 127 короткий переход от -32768 до 32767 ближний переход (16-ти битный режим) от -2147483648 до 2147483647 ближний переход (32-ух битный и 64-х битные режимы) 0x7FFF = 32767 (16-ти битный режим) 0x7FFFFFFF = 2147483647 (32-ух битные и 64-х битные режимы) через регистр (в рамках текущего сегмента), через память (как длинные, так и ближние переходы), в виде непосредственного операнда: относительно [RE]IP и абсолютно (сегмент (селектор) + смещение)
CF, ZF, SF, OF, PF аналогично максимальной длине условного перехода
флаги с изменением сегмента или без изменения |
| Автор: BCworm 1.2.2008, 18:32 |
| MAKCim выражаю Вам свой большой респект и благодарность. В общем большое человеческое спасибо! PS. Можно еще один вопрос?;) Как уножить и разделить на константу SUB AX, 123h MUL AX, 123h или не так? |
| Автор: Mikl_ 4.2.2008, 13:02 | ||
Если константа является степенью 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] и так далее Для деления на константу специальных команд нет |
| Автор: asd 4.2.2008, 13:25 |
| Что-то вопросы очень похожи на какой-то тест А теперь немного поиграем в телепатию Я так думаю, имелась ввиду команда loop - тогда -128 - +127 Опять же есть подозрение, что вопрос про stdcall, fastcall и т.п. |
| Автор: BCworm 4.2.2008, 19:04 |
| Ребята а можно конкретный пример в виде фрагмента кода Взяли чтото уножиди на константу Взяли еще чтото и поделили на константу. |
| Автор: Mikl_ 5.2.2008, 07:09 | ||||
BCworm
Для начала, не скупись - купи учебник!
|