Чтобы добавлять сообщения и комментарии, .

@CaufMAN:
CaufMAN

А почему все книги по асму принято херачить плейнтекстом по 80 символов в строку?
я в курсе про текстовый режим сосноли, но нахера все приводить именно к ней? Или асмовцы настолько суровы, что читают все книги только под досом?

@CaufMAN:
CaufMAN

немного странного программировнния на трансляторе ассемблера из досовского дебага: 

n hw.com 
a 100 
mov dx, 0109 
mov ah, 09 
int 21 
int 20 
db "Hello, World!$"

u 
d 
r bx 
0 
r cx 
17 
w 
q 

все это транслируется через дебаг командой 

C:\...\> debug < hw.txt > listing.log 

вывод листинга нужен для проверки адресов и просмотра отладочной информации. все это безобразие оттранслируется в комовский исполняемый файл `hw.com` в той же папке, где запускался дебаг.

@nonsense:
nonsense

Я так понимаю, в резюме многолетний опыт использования ассемблера лучше не упоминать?

@CaufMAN:
CaufMAN

Небольшой нубовопрос. На 16 разрядном ассемблере можно написать 32 разрядное приложение же? Имею в виду если есть 16 разрядный транслятор на дебаге, насколько реально на нем написать нативное 32 разрядное приложение для стандартного х86 процессора?

@sagax:
sagax

*love2d удивляюсь, в фреймворке love основа работы это обратные вызовы. оно и понятно, нажал кнопку — обратный вызов идет и за ним следует реакция парадигма обратных вызовов не нова прямо скажем но черт, как это работало в NES/FAMICON где игры писались на ассемблере? я очень удивлен, вряд ли в программах на ассемблере кто-то говорил об обратных вызовах.

@SolderStain:
SolderStain

bash.im

@mrtron:
mrtron

Даже после всех нововведений, вслед за которыми бОльшая часть общины влилась в Первую Распределенную Республику, дед и отец Карла продолжали жить по старинке, стрелять лосей, топить печку дровами и в потемках просиживать ночи за компьютерами, вручную собирая программы на ассемблере. (c) Алмазный век

@Strephil:
Strephil

Только сейчас узнал, что чем делить на константу, можно умножать и сдвигать.

@mabu:
mabu

Создаю свою точку входа в программу. Использую внутри несколько локальных переменных. Думаю: нужно ли сохранять регистр EBP и перемещать указатель на вершину стека в EBP? Ведь при запуске программы EBP = ESP, а значит стековый кадр создавать не нужно; нужно лишь в самом конце вернуть указатель на вершину стека в то состояние, что было перед запуском программы.

_EntryPoint@0:
.Lt_0133:
sub esp, 4 ; резервирование под одну 32‐битную переменную
lea eax, [ebp-4] ; указатель на переменную
push eax
call _GetCommandLineW@0 ; аргументы командной строки
push eax
call _CommandLineToArgvW@8 ; разбить по пробелам
push eax ; массив параметров командной строки
push dword ptr [ebp-4] ; длина массива
call _MAIN@8 ; вызов stdcall‐функции main
add esp, 4 ; очистка стека от локальных переменных
ret ; возврат в операционную систему на ExitThread

Я считаю, что Я всё делаю правильно.

@Graf:
Graf

Народ, а никто в меня не кинет описанием системы комманд Intel 8052, ну и чо там у него внутре? какие регистры, какие неонки...

@iZevg:
iZevg

Ребятки, ни у кого случайно не завалялся шестнадцатибитный MASM? Очень нужен, а гугл — не торт.

@Strephil:
Strephil

Быдлокодить на асме без локальных метков как-то немножечко не очень.
Набыдлокодил бы свой препроцессор уже что-ли.

@tuenut:
tuenut

Жуйк, такое дело, помогаю делать другу лабу на асме для мк51. Препод не принимает у него.

Сначала, дело было в том, что хуита, в которой он[препод] компилит и проверяет не умеет P3(третий порт, на котором прерывания висят), поэтому пришлось делать без прерываний.

Ок, сделал. Говнокод, но сделал. Теперь преподу не нравится, что я в качестве флага использую свободную ячейку памяти 0x20(хотя адрес не сильно важен в данном случае), вернее использую биты в ней. Выставляю флаг, когда требуется, SETB 0x20.0, проверяю JB 0x20.0 и сбрасываю его CLR 0x20.0.
Препод говорит, мол иди нахуй, нельзя так делать.

С какого хуй, жуйк? Почему нельзя использовать биты в ячейке памяти как флаг? Я так в прошлом году курсач сдал, у меня вполне себе работали так флаги, и прога работала, и не жаловался никто. Более того, документация на микроконтроллер сама рассказывает внимательному читателю о том, что есть команда для побитовой работы с памятью(впрочем и про все 4 порта она тоже рассказывает).

@qnikst:
qnikst

как бы прошить себе умение понимать core и asm из него получаемый

@4DA:
4DA

PAUSE
Spin Loop Hint

Improves the performance of spin-wait loops. When executing a "spin-wait loop," a Pentium 4 or Intel Xeon processor suffers a severe performance penalty when exiting the loop because it detects a possible memory order violation. The PAUSE instruction provides a hint to the processor that the code sequence is a spin-wait loop. The processor uses this hint to avoid the memory order violation in most situations, which greatly improves processor performance. For this reason, it is recommended that a PAUSE instruction be placed in all spin-wait loops.

An additional function of the PAUSE instruction is to reduce the power consumed by a Pentium 4 processor while executing a spin loop. The Pentium 4 processor can execute a spin-wait loop extremely quickly, causing the processor to consume a lot of power while it waits for the resource it is spinning on to become available. Inserting a pause instruction in a spin-wait loop greatly reduces the processor's power consumption.

This instruction was introduced in the Pentium 4 processors, but is backward compatible with all IA-32 processors. In earlier IA-32 processors, the PAUSE instruction operates like a NOP instruction. The Pentium 4 and Intel Xeon processors implement the PAUSE instruction as a pre-defined delay. The delay is finite and can be zero for some processors. This instruction does not change the architectural state of the processor (that is, it performs essentially a delaying no-op operation).

@datacompboy:
datacompboy

Терпеть ненавижу ASM у ARM'ов.

@Esc:
Esc

Жуйк, что я делаю не так? prntscr.com Пути все прописаны, гугл не помогает.

@4DA:
4DA

А чо, норм.
gcc.godbolt.org

@mend0za:
mend0za

Написал получение размера кэша данных L1 для ARMv7. Большая часть на армовом ассемблере. Чувствую себя непобедимым. Проверил на Exynos5, надеюсь будет работать и на чём-нить другом :).

Оффсеты стащил у WindRiver : marc.info , но целый день читать datasheets and whitepapers всё равно пришлось.

Из срача, сопровождавшего патч в linux-arm-kernel вытащил волшебное определение:
"Pointless. Useless. Stupid. And unnecessarily complex for no reason what so ever".

@rion:
rion

написан свой первый армовский ассемблерный код. всего 25 строчек, но чсв таки повысился :))

зы фиксит загрузку ядра при нестандартном адресе начала памяти.

@NokitaKaze:
NokitaKaze

cvtdq2pd Кто ж так опкоды/инструкции называет?

@d-anka:
d-anka

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

@matrixdaniil:
matrixdaniil

Есть люди которые шарят в ассемблере?

@nox:
nox

Получилось из nodejs вызвать функцию, написанную на ASM. ы-ы-ы!

@nox:
nox

Хочется написать законченное приложение на ассемблере. Я подающий надежды нуб пока ещё, поэтому это должно быть что нибудь не сильно сложное, но уже и не мелочь типа чилел Фибоначчи и пр.

Что посоветуете?

@nox:
nox

API ядра kolibrios содержит все необходимые вызовы, чтобы писать оконные приложения. Это же интересно-то как! Надо что-то накодить.

@nox:
nox

вывел все таки integer в виде строки без внешних библиотек. теперь чувствую себя настоящим мужиком.

@nox:
nox

Зато Фибоначчи написал)

@nox:
nox

Я слабак, заюзал printf

@nox:
nox

хочу написать на ассемблере числа фибоначчи. застрял на реализации intToStr))))

@nox:
nox

Ай, класс! Мне нравятся интеловские инструкции по сравнению со стариком z80! Я сегодня можно сказать заново родился, как ассемблерщик. Я — новорожденный ассемблерщик.

@nox:
nox

Жуйк, нет кроме шуток, у кого есть ссылки на нормальные ресурсы по изучению ассемблера под интеловские процы? Я когда-то в детстве что-то писал под Z80, но чувствую что с тех пор многое поменялось...
Интересуют сайты, книги в нормальном качестве, итд

@tuenut:
tuenut

Думаю, весьма глупый вопрос, да и сам знаю на него ответ. Но все же.

Как думаете, знание асма для микроконтроллеров сильно поможет в осознании питона?

@reflechant:
reflechant

Что почитать, чтобы понять как написать функцию DIV для PIC16F87x?

@ilardm:
ilardm

чтоб такого почитать чтоб понятнее стало как армовский асм под линуксами готовить?

@Gem:
Gem

all-oracle.ru
all-oracle.ru
oracle-base.com

@tuenut:
tuenut

//для микроконтроллера 8051
Правильно ли я понимаю, что если в коде указать .DATA, потом что-то написать, потом написать .ENDS, потом .CODE, то сначала в в теле программы будет некая инфа, которая является просто набором данных в памяти ПЗУ, а потом будет собственно исполняемый код программы?

Дело в том, что я хочу записать в ПЗУ массив данных, чтобы потом к нему обращаться, например, так MOVC A, @A+DPTR. Ну и логично, хочу чтобы после этого массива был записан исполняемый код самой программы, которая обращалась бы за данными к массиву в ПЗУ по индексу. Делаю так, что бы в коде не писать константами типа MOV R0, #0x10, чтобы все эти известные мне значения лежали в одном месте и обратиться к ним было легко и просто.

Но вот беда, следующий код keil не компилит:
.DATA
arr: .DB 0x10
.ENDS

.CODE
....

Так же не компилит если убрать точки/ENDS/CODE. Компилит только такой вариант:
arr: DB 0x10
....

Но при отладке я вижу, что нихуя не выполняется. Т.е. отладчик кейла пытается выполнить первую строку и тут же переходит в конец программы, где нет кода.

ЧЗХ?

@matrixdaniil:
matrixdaniil

узнал что в этом семе мы будем учится кодить на четверотэге. Спрашивается нахуя!? Я понимаю лет десять назад такое преподавать...

@FIZZERS:
FIZZERS

The New AGALMiniAssembler : dl.dropbox.com