Anonymous
Я бы советовал почитать мануал по fasm'у.
Да, там практически с порога эти инструкции расписывают.
Eugene
Есть ещё такой вариант rept 200 { nop }
Anonymous
неее, только dup
Нет, repeat тоже. А вот times не помню.
Ruslan
Я бы советовал почитать мануал по fasm'у.
Каюсь, не читал) просто использую fasm для анализа происходящего (под дебаггером уже)
Eugene
rept 256 n:0 { db n }
Eugene
Таблица символов :)
Aiwan \ (•◡•) / _bot
Евгения из той же компании 1:1, о которой я раньше говорил @IvUyr
­
Евгения из той же компании 1:1, о которой я раньше говорил @IvUyr
Ась? Что за компания, напомни? Симпатишная Евгения
­
Мда.
Aiwan \ (•◡•) / _bot
ты выше такое же сообщение забанил. дцмаешь она исправится и не будет этого делать здесь?
FroZZZ
как мне поместить в tempq1 элемент массива, адрес которого я передаю в регистр? мазм32
Aiwan \ (•◡•) / _bot
temp, dword ptr [ebx]
FroZZZ
у меня там dq формат, ни dword ptr [ebx], ни qword ptr [ebx] не работает
Aiwan \ (•◡•) / _bot
а сам temp какого размера?
FroZZZ
dq
FroZZZ
Aiwan \ (•◡•) / _bot
ну тогда ошибку в студию?
FroZZZ
Vitaliy ◀️TriΔng3l▶️
q это 64 бита?
FroZZZ
Да по идее
Vitaliy ◀️TriΔng3l▶️
Таааак, это ещё и не регистр, а память?
Vitaliy ◀️TriΔng3l▶️
Тогда, вроде, через промежуточный регистр только, память > память, насколько я понимаю, нельзя
Aiwan \ (•◡•) / _bot
Таааак, это ещё и не регистр, а память?
точно, памчть-память нельзя
Vitaliy ◀️TriΔng3l▶️
https://c9x.me/x86/html/file_module_x86_id_176.html
FroZZZ
мне нужно элемент массива передать через регистры, чтобы потом через fld его использовать можно было
Vitaliy ◀️TriΔng3l▶️
И заодно, раз dword > qword, надо вместо mov делать movzx для unsigned или movsx для signed
FroZZZ
по заданию нужно через регистры сделать
Vitaliy ◀️TriΔng3l▶️
movzx/movsx rbx, dword ptr [ebx] mov точно не знаю, но что-то вроде qword ptr tempq1, rbx если надо именно 32-битное число сделать 64-битным (на 64-битной архитектуре, на 32-битной надо в таком случае вручную делать zero extension через запись 0, или sign extension через запись value>>31 или как-то через флаги)
Aiwan \ (•◡•) / _bot
по заданию нужно через регистры сделать
покажи задание. fld не работает с РОН, вроде
FroZZZ
у меня там идут вычисления с числами формата dq. В предыдущей лабе я просто все грузил из памяти, сейчас нужно вычисления поделить на три процедуры, и передать через регистры, стэк, и public extern
Aiwan \ (•◡•) / _bot
покажи задание. fld не работает с РОН, вроде
...если только это не регистр fpu
Aiwan \ (•◡•) / _bot
по заданию нужно через регистры сделать
покажи задание. у меня уже маниакальное неверие этим вашим "в задании сказано...."
FroZZZ
Для своего варианта индивидуального задания к лабораторной работе 6 разработать программу на языке Ассемблер, в которой использовать три процедуры с разными способами передачи параметров: • через регистры; • через стек; • с помощью директив EXTRN и PUBLIC. 3. Для этого числитель дроби по своему варианту индивидуального задания к лабораторной работе 6 разделить на два слагаемых, из которых для первого применить передачу параметров и результата через регистры, а для второго – через стек. Для знаменателя употреблять способ объявления общих переменных директивами public и extern. Вывод результата* выполнить в основной программе.
FroZZZ
Это задание предыдущей лабы: Разработать программу на языке Ассемблер, в которой согласно индивидуальному варианту задания (табл. 1) выполняются вычисления значения арифметического выражения с применением команд сопроцессора ix87 с последующим выводом результата* в оконном интерфейсе. 3. Для всех вариантов предусмотреть задание значений входных переменных в формате double (DQ), промежуточных результатов вычислений – в формате long double (DT), а конечных – снова в формате double. 4. Расчеты (п. 2, 3) повторить в программе для 5 значений переменных**, причем все входящие значения задать действительными числами в виде одномерных массивов.
Aiwan \ (•◡•) / _bot
ну если черещ регимтры параметры передаются, то клади потом регистры в стек и от туда доставай через fld. fld работает только памятью. как вариант, в задании наверное имеется ввиду "параметры через регистр самого fpu"
FroZZZ
сомневаюсь, в лекции он что-то с eax чудил, но там у него общие примеры, не связаны с dq и fld
Aiwan \ (•◡•) / _bot
в библиотеке masm32 это частое явление, когда через регистр fpu передается параметр прлцедуре и возврат значения.
FroZZZ
мне он написал что нужно передавать адрес, и потом его в процедуре брать, но как fld с этим запустить - я хз.
Aiwan \ (•◡•) / _bot
fld [адрес]
FroZZZ
так попробовал, ошибок нет, но ничего не происходит, зависает просто
Aiwan \ (•◡•) / _bot
в дизасие будет как fld qword ptr[ebp+8] например
FroZZZ
в мазм эдиторе какой-то есть
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
mov eax, dword[A] mov ebx, dword[A+4] call procone ... procone: mov dword[esp-8],eax mov dword[esp-4],ebx fld qword[esp-8] попробуй так, эт стнтаксис фасм
Aiwan \ (•◡•) / _bot
movsd, movsq :)
ну эт ужк другой тип mov, который требует инициализации через регистры, испольщование которых ранее по коду нам неизвестно
Eugene
push / pop :) Но это 2 шт, конечно.
FroZZZ
Чуть позже попробую
FroZZZ
Aiwan \ (•◡•) / _bot
для масма это переведи, я ж там сказал что это синтаксис фасм
Kђaͥnnͣaͫn ☭
Попытался написать DLL на masm https://pastebin.com/1Q6FuARN вроде все собирается, но программа на c++ не находит библиотеку. Посмотрите пожалуйста, может быть ошибки в коде есть?
Aiwan \ (•◡•) / _bot
вот так вроде норм
FroZZZ
вот так вроде норм
да, вроде работает, спасибо
FroZZZ
как в мазме почистить стек? у меня программа не до конца работает, думаю с ним это связано
FroZZZ
играюсь с push, pop, от этого меняется работоспособность
Aiwan \ (•◡•) / _bot
ну тогда в отладчике смотри на какой инстукции все валится и почему
FroZZZ
влияет ли команда fld на обычный стек?
FroZZZ
я такое в стек передаю
FroZZZ
потом это выполняется
FroZZZ
стек либо забивается, либо я что-то не так написал
Aiwan \ (•◡•) / _bot
навреное что то не так
Aiwan \ (•◡•) / _bot
не лучше уж тогда сделать процедуру с праметрами. все равно это будет одно и тоже действие, метки для параметров удобней использовать, асм сам подставит нужные смещения к ebp
FroZZZ
нужно через стек передать параметры
FroZZZ
Aiwan \ (•◡•) / _bot
myproc proc Alow,Ahight,Blow,Bhight типа такого
Aiwan \ (•◡•) / _bot
нужно через стек передать параметры
ты это и делаешь, но только вручную. отдай работу с параметрами асму
FroZZZ
мне по заданию так нужно, в стек запихнуть параметры, и с процедуры в стеке достать параметры
FroZZZ
сам не очень рад этому