Size: a a a

Ассемблер

2021 August 20

D

Den in Ассемблер
Его на обязательно завозить, просто ты привел кусок кода там вообще малопонятно что откуда пришло и функция какая то я такой не помню, sprint что она там на вход принимает это асм то тут непричем совершенно, это вообще что за код, под дос под линукс под виндовс ? Мы же типа тут мысли то не читаем, сами учимся большинство :)
источник

УС

Улькиорра Сифер... in Ассемблер
источник

D

Den in Ассемблер
это вроде linux nasm
источник

УС

Улькиорра Сифер... in Ассемблер
да
источник

D

Den in Ассемблер
ну в общем ты можешь положить сообщение просто как данные типа message db 'Hello' и потом сделать не mov eax, esp а mov eax, message типа того а 0Ah ты пушишь это для отступа от верха экрана вроде. Я уж не помню точно как в nasm
источник

D

Den in Ассемблер
Но тутор нужный кстати :)
источник

D

Den in Ассемблер
там этот sprint самописный просто работает через int80 поэтому и аргументы так вот кладуться туда сюда непойми куда
источник

УС

Улькиорра Сифер... in Ассемблер
а как должно быть?
источник

D

Den in Ассемблер
Вот:                        mov     ecx, eax
                               mov     ebx, 1
                               mov     eax, 4
                               int     80h
тут три аргумента чтоли передается для вызова адрес сообщения потом поток 1 вроде это stdout и 4 типа вывести что то типа того
источник

ST

Saenro T in Ассемблер
test: push   1
     pop    eax
     cpuid
     bt     ecx, 14h ; 20dec
     jnc    @f
     popcnt ecx, ecx
@@:   ;other way
---------------------
20 bit set on SSE 4.2 (popcnt, etc...)
reg — integer ONLY
источник

УС

Улькиорра Сифер... in Ассемблер
ну это я знал и сам, пхп)
источник

УС

Улькиорра Сифер... in Ассемблер
пляска с есп не дает покоя
источник

D

Den in Ассемблер
так он у тебя там и торчит в этой sprint и ты его вызывашь
источник

D

Den in Ассемблер
пляска потому что видимо лежат данные без метки а если бы метка была не нужен был бы esp я же тебе вверху пример дал посмотри
источник

УС

Улькиорра Сифер... in Ассемблер
да, но там просто вывод строки. В моем же случае строка не имеет 0Аh и функция ее автоматом добавляет
источник

AP

Andrey P in Ассемблер
Ok
источник

D

Den in Ассемблер
там аргументы для вывода в поток в стеке передаются какие то просто вот и все
источник

D

Den in Ассемблер
В общем вот же у тебя там все расписано, все аргументы идут через регистры
mov     edx, 13     ; number of bytes to write - one for each letter plus 0Ah (line feed character)
                               mov     ecx, msg    ; move the memory address of our message string into ecx
                               mov     ebx, 1      ; write to the STDOUT file
                               mov     eax, 4      ; invoke SYS_WRITE (kernel opcode 4)
                               int     80h
А то что пушится это для взаимодействия с этой самописной sprint видимо это надо вчитываться в код, вот вчитывайся :)
источник

D

Den in Ассемблер
он вроде этот ah0 в edx передает в sprint- процедуре т.е. это длинна строки
источник

D

Den in Ассемблер
а нет не длинна eax пихается в nextchar и там прверяется на 0 то что лежит по адресу в eax и потом инкрементируется адрес в eax, в общем ты наверное рановато сюда залез раз ничего не понимаешь, начни сначала, или попробуй вчитаться сам, это же тебе надо понять! Вот примерно я тебе объяснил как мог
источник