Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Інші
Предмет:
Асемблер

Частина тексту файла (без зображень, графіків і формул):

Модуль на С: #include <iostream> using namespace std; extern "C" int calc(int,int,int); //оголошення зовнішньої функції з параметрами //параметри передаються через стек extern "C" const int K=0x6c26; int main() { int A,C; int E; int res; cout<<"Enter numbers:"<<endl; cout<<"A = "; cin>>A; cout<<"C = "; cin>>C; cout<<"E = "; cin>>E; res = calc(A,C,E); cout<<endl<<"Result v C++ is: "<<res<<endl; system("pause"); return 0; } Модуль на Асемблер: .386 .model flat,c .data EXTRN C K:dword ;використання зовнішньої змінної (константи) К з модуля main.cpp format db "Rezult v asm= %d",0 .code printf PROTO arg1:Ptr Byte, printlist: VARARG calc PROC push ebp mov ebp,esp mov eax, dword ptr[ebp+8] ;зчитуємо параметр А в регістр eax mov ebx, dword ptr[ebp+12] ;зчитуємо параметр C в регістр ebx sar ebx,1 ;ділимо на 2 значення ebx (C), sar - зсув вправо для знакових чисел на вказане число бітів, знаковий біт залишається add eax,ebx ;в регістрі eax отримаємо A+C/2 movsx ecx, byte ptr[ebp+16] ;в регістр ecx записуємо байтове значення параметра Е зі знаковим розширенням sar ecx,3 ;ділимо на 8 (2^3) значення ecx, через побітовий зсув вправо на 3-ри біти (знаковий біт зберігається) sub eax,ecx ;в регістрі eax - A+C/2-E/8 add eax,K ;eax=A+C/2-E/8+K згідно варіанту ;mov z,eax push eax invoke printf, addr format, eax pop eax pop ebp ret ;значення в програму на С++ повертається в регістрі EAX calc ENDP END
Антиботан аватар за замовчуванням

05.10.2015 18:10-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!