Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Теоретические вопросы про Ассемблер 
:(
    Опции темы
BCworm
Дата 1.2.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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.    Как осуществляется переход к процедурам разных типов?



PM MAIL   Вверх
MAKCim
Дата 1.2.2008, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Сколько операндов могут иметь команды арифметических операций для процессора    `````К1810ВМ86 (I8086)?

именно 8086?
тогда 2
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Где сохраняется перенос, возникающий при выполнении операции сло-жения?

устанавливается флаг CF
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Какие типы операндов могут использоваться в качестве dst и в качестве src в операциях сложения и вычитания?

dst: регистровые, адресные
src: регистровые, адресные, непосредственные
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Можно ли использовать в команде сложения или вычитания операнды раз-ной длины?

есть инструкции, в которых можно
к примеру
Код

movzx    eax, al

Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Где могут располагаться операнды для выполнения умножения?

регистры, память, в инструкции (к примеру imul)
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Чем определяется длина произведения при умножении?

длина (количество изменяемых разрядов результата) в два раза больше размера операндов

остальное позже


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
BCworm
Дата 1.2.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Ну наконецто сдвинулось .Спасибо большое! буду ждать.
PM MAIL   Вверх
MAKCim
Дата 1.2.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Чем определяются знаки частного и остатка при выполнении деления?

знак остатка совпадает со знаком делимого
знак определяется старшим бытом результата
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Какой может быть длина перехода в разных типах команды JMP?

от -128 до 127 короткий переход
от -32768 до 32767 ближний переход (16-ти битный режим)
от -2147483648 до 2147483647 ближний переход (32-ух битный и 64-х битные режимы)
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Какова максимальная длина условного перехода?

0x7FFF = 32767 (16-ти битный режим)
0x7FFFFFFF = 2147483647 (32-ух битные и 64-х битные режимы)
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Каким образом может быть указан адрес перехода?

через регистр (в рамках текущего сегмента), через память (как длинные, так и ближние переходы), в виде непосредственного операнда: относительно [RE]IP и абсолютно (сегмент (селектор) + смещение)
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Какие флаги могут быть использованы в командах условного перехода после выполнениякоманды сложения?

CF, ZF, SF, OF, PF
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Какова максимальная длина переходов при организации циклов?

аналогично максимальной длине условного перехода
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Какие признаки , кроме СХ=0, могут быть использованы при организации циклов?

флаги
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
Как осуществляется переход к процедурам разных типов?

с изменением сегмента или без изменения


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
BCworm
Дата 1.2.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



MAKCim выражаю Вам свой большой респект и благодарность. В общем большое человеческое спасибо!

PS. Можно еще один вопрос?;)

Как уножить и разделить на константу


SUB AX, 123h
MUL AX, 123h

или не так?
PM MAIL   Вверх
Mikl_
Дата 4.2.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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] и так далее
Для деления на константу специальных команд нет smile 


Это сообщение отредактировал(а) Mikl_ - 5.2.2008, 12:51
PM MAIL   Вверх
asd
Дата 4.2.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.6.2006

Репутация: нет
Всего: 1



Что-то вопросы очень похожи на какой-то тестsmile

А теперь немного поиграем в телепатиюsmile
Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
 Какова максимальная длина переходов при организации циклов?

Я так думаю, имелась ввиду команда loop - тогда -128 - +127

Цитата(BCworm @  1.2.2008,  09:23 Найти цитируемый пост)
  Как осуществляется переход к процедурам разных типов?

Опять же есть подозрение, что вопрос про stdcall, fastcall и т.п.




PM MAIL   Вверх
BCworm
Дата 4.2.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 23.8.2007

Репутация: нет
Всего: нет



Ребята а можно конкретный пример в виде фрагмента кода

Взяли чтото уножиди на константу
Взяли еще чтото и поделили на константу.
PM MAIL   Вверх
Mikl_
Дата 5.2.2008, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



BCworm
Цитата

Взяли чтото уножиди на константу
Взяли еще чтото и поделили на константу.

Для начала, не скупись - купи учебник!
Код

.data
mem dw ?; место под переменную в памяти
result dd ?; место для результата
.code
; умножение числа в памяти на константу 6789
mov mem,12345
mov ax,6789
mul mem
mov word ptr result,ax
mov word ptr result+2,dx
; деление числа в памяти на константу 12345
mov dx,word ptr result+2
mov ax,word ptr result
div mem
; в результате деления в ax - частное, в dx - остаток

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.