Size: a a a

Ассемблер

2019 November 04

L

Leon in Ассемблер
Присваивай переменной @a[0] и потом уже работай с содержимым как с адресом в асме. Например.
источник

FT

Fistashka Tryam in Ассемблер
да встроенный ассемблер
источник

L

Leon in Ассемблер
Fistashka Tryam
mov eax, offset a ?
И кстати оффсет тебе даст адрес  а дя содержимого надо делать [ a]
источник

FT

Fistashka Tryam in Ассемблер
procedure TForm1.Button18Click(Sender: TObject);
var
 a:array of integer;
 s:integer;
begin

 SetLength(a,5);
 a[0]:=500;
 a[1]:=400;
 a[2]:=300;
 a[3]:=200;
 a[4]:=100;

 s:=GetFirstFromAsm(a,5);
 Memo1.Lines.Clear;
 Memo1.Text:=IntToStr(s);
источник

FT

Fistashka Tryam in Ассемблер
Хочу в мемо вывести первый элемент через ассемблер
источник

L

Leon in Ассемблер
Кстати попробуй шутки ради
mov eax, offest a[0]
mov ebx,  [eax]
источник

L

Leon in Ассемблер
Для нулевого эоемента
источник

FT

Fistashka Tryam in Ассемблер
AV выдает
источник

FT

Fistashka Tryam in Ассемблер
А вот так можно вывести ?
источник

FT

Fistashka Tryam in Ассемблер
push ebx
  mov ebx, eax
  pop ebx
источник

T

Timka in Ассемблер
zip aioniplaitnereffid
плюсы, но тоже Си
пересядь с nano на vim
источник

FT

Fistashka Tryam in Ассемблер
mov edx, [eax]
источник

FT

Fistashka Tryam in Ассемблер
Вот так работает
источник

T

Timka in Ассемблер
楽園松本
Программирование на праздники? Вы же соскучились по простым и милым задачкам? У меня для вас есть прекрасная несложная задачка с некоторым количеством подводных камней. Я предлагаю Си просто потому, что на асме лучше пойдёт решение, когда будет работать сишный код.

Задача: последовательно вывести значения счётчика. Счётчик типа такого, который считает потреблённую воду. Есть n разрядов (заранее их количество не известно), и каждый разряд имеет k  значений, например 0-9. Нужно получить вывод:
000
001
002
....
999

Нужно придумать такую реализацию, чтобы без изменения кода можно было получить счётчик любого размера. Например из 7 позиций, считающий от 0-5
0000000
0000001
..........
0000005
0000010
........
5555555

Интересны ваши реализации :)
int main() {
   int n, k;
   scanf("%d%d", &n, &k);
   int mx = 1;
   for (int i = 0; i < n; ++i)
       mx *= k;
   int* out = malloc(n, sizeof(int));
   for (int x = 0; x < mx; ++x) {
       for (int i = 0; i < n; ++i) {
           out[n - i - 1] = x % k;
           x /= k;
       }
       for (int i = 0; i < n; ++i)
           printf("%d", out[i]);
       printf("\n");
   }
}
источник

T

Timka in Ассемблер
楽園松本
Никита, я думаю, это просто чумовое решение.
а это не то решение, которое появляется через пять минут после прочтения задачи?
источник

za

zip aioniplaitnereffid in Ассемблер
Timka
пересядь с nano на vim
позже
источник

T

Timka in Ассемблер
Timka
int main() {
   int n, k;
   scanf("%d%d", &n, &k);
   int mx = 1;
   for (int i = 0; i < n; ++i)
       mx *= k;
   int* out = malloc(n, sizeof(int));
   for (int x = 0; x < mx; ++x) {
       for (int i = 0; i < n; ++i) {
           out[n - i - 1] = x % k;
           x /= k;
       }
       for (int i = 0; i < n; ++i)
           printf("%d", out[i]);
       printf("\n");
   }
}
так, я знаю, как избавиться от дублируемого кода
источник

T

Timka in Ассемблер
#define fori(n) ...
источник

RR

Rokker Ruslan in Ассемблер
Ребята есть один весёлый проектик, я о нём в vue чатике рассказывал, но там не особо интересно аудитории, может вас зацепит, ща
источник

RR

Rokker Ruslan in Ассемблер
В закромах нашёл старый институтский проект. Решил переписать на vue/ts, может кому будет интересно (github.com/rokkerruslan/i8080). Что за проект?
В институте писали под Intel 8080 (во многих институтах изучают это старьё, так как принципы не поменялись, а проц простой), но в эмуляторе была проблема, не работала инструкция JC (если знаете на базовом уровне как работает cpu то понимаете что многие алгоритмы писать не удобно, а для обучения удобство главное). Ну и я решил реализовать свой.

В целом он работал, но хреново (небыло многих нужных вещей). И тут опа, попадается мне на глаза (3 года как закончил институт). Я тут же расчехлил vue и typescript, быстро нарисовал интерфейс, несколько выходных и уже вышло что-то готовое.

Хоть и переписан был в быстром темпе, но всё же нашлось время на такую штуку как отладчик, так что можете заценить.

Итого, что есть:
- Ассемблер - связка лексического/синтаксического анализатора, вычислителя и кодогенератора.
- Эмулятор - тут особо нечего сказать, эмулятор как эмулятор, только имеется поддержка останова цикла выполния инструкций для точек останова (debugger).
- Редактор - связыват работу двух предыдущих компонент.

Всё работает очень просто, пишите программу, нажимаете Go, далее пройдёт цикл ассеблирования, загрузки исполняемого файла в память эмулятора и начнётся собственно выполнение. Можно выполнять программу по шагам или продолжить выполнение до следующей точки останова (частота выборки меняется в поле `frequency`).

Отладка - работает как в обычных gui редакторах - клик мышкой по области левее строки, как только выполнение дойдёт до этой инструкции cpu встанет (внутри работает достаточно сложно из-за необходимости поддержки со стороны всё трёх компонент, от ассемблера нужна генерация отладочной информации (какая инструкция на какой строке), от эмуторятора - способ остановки выполнения, от редактора - визуализаций брейкпоинтов и интерфейс для их переключения, но эти сложности упрятаны..

Интерфейс позволяет просматривать полное состояние CPU на всём этапе исполнения программы, значения регистров (program counter, stack pointer, accumulator etc), флагов состояния процессора, а как же любого участка памяти. При этом, когда выполнение приостановлено можно менять эти значения. Посылать прерывания можно и во время выполнения. Реализация интерфейса использует vue.

Бред? Да, бред, спросите зачем? Просто по фану. Много людей в институте обучается на i8080, может кому и пригодиться. Да и как пример hello-world приложения на vue которое чуть больше чем 10 строчек кода (суммарно весть проект без yarn.lock менее 10к строк кода).

На странице examples, есть примеры программ. Можете запустить локально, ничего не надо кроме node/yarn (всё работает в браузере).

have fun.

P.S. Ссылочка на github page - rokkerruslan.github.io
P.S.2. Переписывал в торопях (практически в одну итерацию), будет некое кол-во регрессий.
P.S.3. Мобилки нет (просто не представляю как такой интерфейс должен выглядеть на мобильных устройствах)
источник