Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
grizzly212
0 / 0 / 1
Регистрация: 13.12.2014
Сообщений: 21
1

Передача значений из Си в ассемблер

01.12.2015, 18:30. Просмотров 567. Ответов 0
Метки нет (Все метки)

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

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>                                                      
#include <locale>                                                       
                                                                        
extern "C" {int func(int*); };                          
                                                                        
char str_1[50];                                                                                                                 
                                                                        
void main()                                                             
{                                                                       
    setlocale(LC_ALL, "Russian");                                       
    int *n;                                                                                                                                 
    printf("Введите первую строку: ");                                  
    gets_s(str_1);                                                                                                          
    printf("Введите число: ");              
    scanf_s("%d", &n);// оно здесь для наглядности
    int len = func(n);  
    printf("%d", len);
}
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
.686
.model small, c
.code
public func
func proc uses si di, n:byte
LOCAL len_1:DWORD
 
 
;Определение длины строки
mov eax, str_1
mov ecx, 0
next_sym:  
         mov bl, byte ptr [eax + ecx] 
         test bl, bl 
         jz end_count 
         inc ecx 
         jmp next_sym
end_count:
mov len_1, ecx
mov eax, len_1
 
ret
func endp
end
Знаю, что проще через указатель передавать, но по заданию надо передать через глобальные переменные.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2015, 18:30
Ответы с готовыми решениями:

Передача данных в ассемблер. Объясните как работает
Здравствуйте. Нужно реализовать метод ньютона с подвижным полюсом с вычислением на ассемблере....

ТУРБО Ассемблер Вычислить 8 значений функции, результат сохранить в памяти и вывести на экран
HELP, нужно решить задачку на ТУРБО Ассемблер. Вычислить 8 значений функции f(x)=5x(x+8) (х...

Ассемблер в паскале: как загрузить массив во встроенный ассемблер и произвести над любым из его чисел сложение(вычитание).
хочу написать программу в паскале с использованием встроенного ассемблера, но прежде чем начать...

Передача значений
Как мне в классе передать mDateEvent,mTimeEvent,mLinkEvent значения переменных dateev,timeev,linkev...

Передача значений
Не могу понять почему в массив приходят пустые значения? По идее при вводе двоичного кода 11110110,...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2015, 18:30

Передача значений!
Здраствуйте! В общем для примера есть прогамма (ScrollBar двигает стрелку на индикаторе (Это чиста...

Передача значений
Собираю при помощи объекта данные из других форм, и в другой считаю. Вроде делаю всё правильно, но...

Передача значений
Здравствуйте, имеется 3 таблицы (отн. многим ко многим). В таблице1 Id_client и &quot;имя&quot; в таблице2...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.