Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
Полный код в предыдущем посте был и не изменился.

Я хотел узнать что делает подпрограмма изначально, без реализации на языках программирования. По коду я вижу, что подпрограмма зачем-то мучает память по адресу P.

Цитата:
В XE2 ещё немного бажный ассемблер, неправильно параметру в процедуру передаются

Как корабль назовешь...
Все строго по соглашению вызова(pascal,cdecl,stdcall,fastcall).

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 00:15 06-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58

Цитата:
Все строго по соглашению вызова(pascal,cdecl,stdcall,fastcall).

У меня XE2 update1. Никаких параметров в ассемблерную процедуру не передаётся - в регистрах под отладчиком CPU строго нули. И это при любой директиве вызова.
 

Цитата:
Я хотел узнать что делает подпрограмма изначально

Ассемблерная часть - это составляющая клиентской базы данных. Она просто шифрует TMemoryStream для того чтобы под HEX редактором нельзя было редактировать данные в таблицах. Никакого супер функционала она не несёт. Та часть которую я выложил расшифровывает данные. Соответственно Turnoff зашифровывает. Полный код датасетов на сорцефорже по линку.
 

Цитата:
Все строго по соглашению вызова

Попробую сделать так begin asm end; end; может удастся обмануть.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 06:55 06-03-2012 | Исправлено: delover, 06:59 06-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попыталса бомбануть -
[DCC Error] Unit1.pas(37): E1025 Unsupported language feature: 'ASM'

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:58 06-03-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
Ассемблерная часть - это составляющая клиентской базы данных. Она просто шифрует TMemoryStream для того чтобы под HEX редактором нельзя было редактировать данные в таблицах. Никакого супер функционала она не несёт. Та часть которую я выложил расшифровывает данные. Соответственно Turnoff зашифровывает. Полный код датасетов на сорцефорже по линку.  

В чем сложность человеку произвести расшифровку, тем более с открытым алгоритмом, если алгоритмы в закрытом ПО вскрываются быстро.
Но если вы свято верите в это, то вот этот код не позволит нормально просматривать в hex-редакторе:

Код:
for (int i=0;i<count;p[i]^=0xaa,i++){}

Банальное сложение по модулю. Увеличить производительность можно читая по размерности регистров(32,64 бита).

Цитата:
У меня XE2 update1. Никаких параметров в ассемблерную процедуру не передаётся - в регистрах под отладчиком CPU строго нули. И это при любой директиве вызова.  

А в стеке?

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 22:01 06-03-2012 | Исправлено: cp58, 22:03 06-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58
Сори небыло времени на вопрос ремонтировал комп.

Цитата:
Банальное сложение по модулю.

Вполне устраивает, только я чувак покруче вот и всё.

Цитата:
А в стеке?

Блин там тоже нули.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:36 09-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Банальное сложение по модулю.

Да и такое сложение вычисляется сразу как только встречаются повторяющиеся данные типа простенького BMP или сортированного списка.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 09:43 12-03-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
Да и такое сложение вычисляется сразу как только встречаются повторяющиеся данные типа простенького BMP или сортированного списка.

Я еще раз говорю, что ни первое, ни второе вас не спасет, а привел наименее затратную операцию для ваших убеждений.

Цитата:
Но если вы свято верите в это

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 11:51 12-03-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:02 13-03-2012 | Исправлено: A1exSun, 00:20 13-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58
Почему спасёт я сейчас переписываю на 64 асм. Оказывается я очень тупо ошибался, окно CPU расчитано на 32 бит регистры, когда я раздвинул панель регистров то с удивлением обнаружил что там не нулики.

Цитата:
наименее затратную операцию

Наименее затратная действительно не спасёт, потому что мне нужно иметь доступ к реальным данным в описанном формате. На данный момент уже первые 6 байтов правильно шифрую, дальше видимо со сдвигами что то не так. Мои затраты это после работы вечером на минут 10 заглядываю в XE2 а потом запускаю онлайн игру.
 
Добавлено:

Цитата:
Да и такое сложение вычисляется сразу

Это 100% проверенное утверждение, ломал программку в которой ресурсы таким способом были шифрануты, как раз xor AA55. Сначала BMP-шки нашол, так как знаю первые 2 байта которые нужно получить, а потом и dfm выдернул. Однако когда просил помочь мне сломать мою программку все отказались - "использованы грязные технологии" сказали, я так и не понял что это означает. Вобщето деньги предлагал в варезе.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 09:33 13-03-2012 | Исправлено: delover, 09:42 13-03-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
Это 100% проверенное утверждение, ломал программку в которой ресурсы таким способом были шифрануты, как раз xor AA55. Сначала BMP-шки нашол, так как знаю первые 2 байта которые нужно получить, а потом и dfm выдернул. Однако когда просил помочь мне сломать мою программку все отказались - "использованы грязные технологии" сказали, я так и не понял что это означает. Вобщето деньги предлагал в варезе.

Закрытые алгоритмы надежны лишь до поры до времени. На предыдущей странице размещена ссылка на проект, а значит и алгоритм открыт, надежность спустилась до нуля.

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 12:10 13-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58
Да это бред Вы полный дед садовец в понятии защита данных, если так думаете. Все знают пароль masterkey но никто же не говорит что из за этого обстоятельства база FB менее защищённой стала. Никто не запрещает поменять пару цифирей в публичном алгоритме или даже привязать собственный для тех проектов которые помешаны на защите.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:40 13-03-2012 | Исправлено: delover, 14:10 15-03-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, как отсортировать строку символов в кодировке oem866 по алфавиту?
Там и большие и маленькие буквы. Распишите детально пожалуйста алгоритм.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:21 15-03-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
взять нулевую строку линейную, каждый элемент сопоставить букве алфавита (a b c d e ...), причем асци коды идут по порядку с дыркой посередке, что позволяет использовать номер ячейки буквы ее асци код. потом прочитать заданный текст, прибавлять к каждой ячейке 1. потом вывести массив пропуская нули
 
Добавлено:
если тебе такую задачу где то в учебном заведении поставили то они хотя т от тебя чтоб ты реализовал стандартный алгоритм быстрой сортировки. а эта задача некорректная для этого. я когда в школе так задачу эту решил меня заставили переделывать
 
Добавлено:
так в гугле и набери алгоритмы быстрой сортировки
 
Добавлено:
чтоб задача была корректная надо сортировать массивы не из одного элемента, а строки. а вот тут быстро алгоритм сортировки такой метод обгонит по скорости. наверно на трех элементах уже быстрее будет

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 00:26 15-03-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
s1,s2 - буквы.
Если код символа >= a, то offset=0x20, иначе 0.
Если s1-offset < s2-offset, то буква s1 находится ближе к началу алфавита.
В случае равенства: если s1 < s2, то буква s1 заглавная, в противном случае наоборот.
Это условие сравнения, а алгоритм сортировки можно использовать любой.

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 13:56 15-03-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
новая версия эмулятора вышла и в инете русский хелп на него сделали. хотя вроде пишет версия такая же, файл стал меньше.
 
http://ziplib.com/emu8086/
http://www.twirpx.com/file/2972/
 
http://zalil.ru/32891883

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:21 16-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58
Не обращайте на мои слова внимания (про детсад). В основном мои программы требуются клиентам которые и не собираются взломать данную программу, а надеются только на сопровождение продукта в дальнейшем. Ассемблер на 64 версию переписал, но только выяснилось что Delphi XE2 в ассемблере не умеет компилить LOOP правильно, а вместо него вставляет LOOPNE. Когда заменил на DEC RCX JNZ то всё стало работать так же как и раньше.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:42 18-03-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
di+dp работает только со стеком?

Код:
    lea di, digits
    ...
    mov bp, ax
    inc [di][bp]

Инкрементирует хз где. inc es:[di][bp] нормально.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 19:44 18-03-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
а что такое "dp"?
 
по умолчанию [di] относительно es, [si] относительно ds
[bx] и [bp] оносительно стека
[di+bp] -- не определено...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 20:12 18-03-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Не так. По умолчанию все команды, кроме строковых, индексируются по DS, если среди индексных регистров нет регистра BP, и по SS, если он есть.
В строковых (STOS, MOVS, SCAS и CMPS) - DI по ES, SI по DS.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:41 18-03-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Мне нужно посчитать количество цифр в массиве text, количество каждой цифры в digits+цифра.
Весь код:

Код:
    assume cs: code, ds: data, ss: stck
    mov ax, data
    mov ds, ax
    mov es, ax
    ; вывод приглашения
    lea dx, welcome
    call print                                        
    ; чтение строки
    mov ah, 0ah
    lea dx, text
    int 21h      
     
    ; цикл
    lea si, text+1
    lea di, digits
    mov cl, [si]
    inc si
    xor ax, ax
    xor bx, bx
    for:
    mov al, [si][bx]
    ; проверка цифры
    cmp al, 30h
    jl notdigit  
    cmp al, 39h
    jg notdigit
    ; al - цифра
    mov bp, ax
    sub bp, 30h
    ; увеличение счетчика в массиве
    inc byte ptr es:[di][bp]  
    jmp next
    notdigit:
    ; проверка буквы
    ; ...
    next:
    inc bl
    cmp bl, cl
    jne for

Как избавиться от es: ? si:bx уже занят, как видишь.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 20:48 18-03-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru