Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/78: Рейтинг темы: голосов - 78, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 89
1

Аналог сишного return в ассемблере

28.06.2015, 15:02. Показов 15900. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добра! Понадобилось мне реализовать на ассемблере пару функций, одна читает из параллельного порта данные, а другая туда пишет. Ту функцию, которая пишет туда данные, я реализовал
Код
.text
.syntax unified
.global __write
.type __write, function

.equ ADDR,           0x50000000
.equ DATA,           0x50000002

.thumb
__write:

push  {r3, r4}

ldr   r3,  =ADDR
ldr   r4,  =DATA

strh  r0, [r3]
strh  r1,  [r4]

pop   {r3, r4}
bx    lr
.end
и её можно вызывать в программе на Си примерно так
Код
__write(0x1000, 0x5555); /** 0x1000 - адрес, 0x5555 - данные */
если я конечно ничего не напутал, но вроде первый аргумент автоматически заноситься в регистр r0, второй в r1 и т.д.
Но как сделать аналогичную функцию, только которая будет читать данные? Точнее я не знаю, как возвратить значение из неё, чтобы (допустим функция назовётся __read(address)) я смог в программе на Си вызвать её примерно так
Код
uint16_t data = __read(0x1000); /** 0x1000 - это адрес, с которого прочитано значение и записано в переменную data */
а остальное (прочитать значение и записать его в регистр) вроде смогу реализовать сам, поэтому задачу в неком приближении можно рассмотреть таким образом.
Есть какой-нибудь регистр (допустим r1), и надо, чтобы функция возвратила его.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2015, 15:02
Ответы с готовыми решениями:

Аналог сишного clock()
Помогите, плз! Нужно в программе засекать разные отрезки с точностью до тысячных. В...

Аналог return из С++ в Лазарусе?
Всем привет ! Народ подскажите аналог return из С++ в лазарусе Например if(Edit1->Text=="") {...

Нужен аналог case на ассемблере
Всем добрый вечер и с прошедшими праздниками. Решил попробовать написать простейший калькулятор на...

Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}?
package com.company; import java.io.Serializable; public class person implements Serializable {...

21
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
03.07.2015, 18:15 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от IukimPKH
Если есть можно очень точно посмотреть сколь выполняется кусок кода с помощью этого блока .
даже если, то завтра милиндр выпустит новую ревизию чипа и времянки могут полететь.
0
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 89
02.10.2015, 01:26 22
Кстати, обещал код выложить, но всё не выкладывал. Нехорошо:)
Вообщем, вот код, оформленный в виде небольшой библиотеки для работы с DDS 1508ПЛ8Т. Написан на ассемблере, может быть кому-нибудь пригодится:)
https://bitbucket.org/kirra-cat/api1508pl8t
0
02.10.2015, 01:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2015, 01:26
Помогаю со студенческими работами здесь

Добавление в проект сишного SDK
Добрый день. Правлю проект для qt creator, там много плюсового кода. Понадобилось внедрить...

Эквивалент сишного перевода каретки
Как замутить эквивалент сишного ?

Почему IDA не справляется с декомпиляцией обычного сишного файла?
Доброго всем денечка, кто подскажет, почему IDA не справляется с декомпиляцией обычного (вроде как...

Адаптация Сишного кода на Си ++. Нужно что б код компайлился на С++ компиляторе
#include <fstream> struct Cube { int length; char color; char material; }; ...

Что такое в jquery и java return false и return true
Если я правильно понимаю, то return false отменяет действие по умолчанию, например клик по ссылке,...

Сокращение кода return console.log/warn/error и return elem.click()
Иногда хочется сократить код if (!element) { console.log('element not found') return }...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru