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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
vladvlad_go



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58
Понял, спасибо! Но к сожалению придется отложить уточнение: "тссс! студент перевоспитывается. Спит!" ©

Всего записей: 11669 | Зарегистр. 02-09-2007 | Отправлено: 18:28 04-02-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите разобраться с простенькой задачей:

Цитата:
Ввести с клавиатуры два двузначных десятичных числа без знака X и Y.
Вывести на экран десятичное, восьмеричное и двоичное значение их произведения в виде «Z = X * Y».

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

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 17:46 16-02-2012 | Исправлено: A1exSun, 17:47 16-02-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ассемблер кокой - похоже 16-ричный?
 
Добавлено:
http://www.emu8086.com/
вот тут есть примеры тебе нужные

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Навязывают компилятор TASM 5. Он совместим с emu8086? То есть, я смогу писать все во втором, а потом в случае чего пересобрать в первом?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 18:06 16-02-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я вообще то четвертым пользуюсь. практически полностью совместимым. ты главное поймешь как все работает. а на тасм переделать код в большинстве случаев или вообщене надо будет или чуть чуть

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:08 16-02-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Все вроде там нашел в примерах, не нашел только как вывести в восьмеричной системе.

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



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

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



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

Цитата:
ну прояви фантазии маненька. математику учил пади


Цитата:
Для перевода восьмеричного числа в двоичное необходимо заменить каждую цифру восьмеричного числа на триплет двоичных цифр. Например: 2541 v8 = 010 101 100 001 = 010101100001 v2

А наоборот? Например 99 в dec перевести в oct?

Цитата:
ключик нашел к прахрамке?

Да она у меня была уже. Ты ее когда-то давно и советовал
 
Добавлено:
А понял.
99 = 001 100 011 = 143
А как программно это сделать?
Сдвигать на 3 бита вправо и брать последние 3 бита? Как?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 21:37 16-02-2012 | Исправлено: A1exSun, 21:41 16-02-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я кино смотрю. ну неохота моск напрягать. просто должно быть из двоичного в восьмеричный перевести.  это однако по 4 бита просто выкулапыть
 
Добавлено:
1111 = F = 17
ой блин по три бита.
 
Добавлено:
то есть тебе надо взять первые три бита справа получишь первую восьмиричнубцифирь, потом сместить на три бита вправо - следующую и тд

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:42 16-02-2012 | Исправлено: bomzzz, 21:49 16-02-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Как это сделать кодом? Вот в чем вопрос.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 22:26 16-02-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну зависит от того в каком виде у тебя исходное число.
 
mov ax, число  в регистре ах нужное число
mov bx, ax помещаем его в регистр bx
and bx, 111b логической операцией оставляем три правых бита - наша первая восьмиричная цифра
shr bx, 3 прокручиваем на три бита вправо  
 
ну тут еще осталось цикл вокткнуть
 
Добавлено:
http://narod.ru/disk/40955077001/Assembler%26Win32.%20%D0%9A%D1%83%D1%80%D1%81%20%D0%BC%D0%BE%D0%BB%D0%BE%D0%B4%D0%BE%D0%B3%D0%BE%20%D0%B1%D0%BE%D0%B9%D1%86%D0%B0..chm.html
 
вот неплохая книжонка правда для 32 битного ассембера но дает минимальное представление об опкодах

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



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

Цитата:
Как это сделать кодом? Вот в чем вопрос.

 
В сегменте данных вставь "восьмиричную табличку":
 
oct_table   db  '01234567'
 
А дальше все, как написал выше bomzzz. После  
 
and bx, 7  
 
в регистре bx у тебя останется смещение нужной цифры в табличке oct_table, её и сохраняешь. Ну а дальше все в цикле. Для 16-битного регистра - максимум 6 итераций, для 32-битного - не более 11

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 22:58 16-02-2012
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:01 16-02-2012
Benchmark



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Для наглядности. Чтобы человек понял, что означает получившаяся "цифра".
 
А так да, можно просто прибавлять 30h и сохранять в буфер.

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 23:02 16-02-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
угу.
Цитата:
прибавлять 30h и  
и выводить на экран.

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Программа состоит из одного exe файла. Не дотнет. Сплеш скрин - окно определённого класса без caption, выводится на пять секунд при старте программы.
Надо сделать так, чтобы сплеш скрин не выводился. В настройках программы и в реестре никаких следов по этому делу нет. Разработчики звиняются и умывают руки.
 
Нашёл OllyDBG, подключил к мозгу гугл и интуицию и достиг того, что нашёл точку, при проходе которой этот злосчастный сплеш скрин создаётся:
http://files.anmiles.net/img/shots/2012-02-17_190340.png
 
Чую, что решение очень близко, но не могу понять, что делать дальше. Помогите, пожалуйста .
От ассемблера далёк, как от Сириуса.

Всего записей: 19 | Зарегистр. 19-11-2008 | Отправлено: 19:26 17-02-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
anmiles
забей байты e8 29 2c 00 00 пятью нопами 90 90 90 90 90
 
Добавлено:
хотя я забыл - этот калл сам со стека снимает? тогда надо забить нопами еще и все начиная с 68 01 00 00 40 ...

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 19:35 17-02-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
anmiles
крякаем?
 
MERCURY127
а ещё два дворда кто со стека снимает?
кстати, видится там выше уже какой-то кол притопили таким образом...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 19:41 17-02-2012
anmiles



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

Цитата:
забей байты e8 29 2c 00 00 пятью нопами 90 90 90 90 90  

А можно чуть поподбробнее, где и что сделать? этой же программой, правильно?
 
akaGM

Цитата:
крякаем?

Нет, просто сплеш скрин дико бесит
 
По слову "выше" мне показалось, что надо засветить то, что снаружи? Вот:  
http://files.anmiles.net/img/shots/2012-02-17_194545.png
 
Там вызов того метода, а ещё ниже, я так понимаю, таймер, который пять секунд этот сплеш держит.
 
 
Добавлено:
Всё, нашёл, что надо сделать.
Вот: http://files.anmiles.net/img/shots/2012-02-17_194911.png
 
Теперь это надо... перекомпилировать? Правильно я понимаю? Как это сделать?

Всего записей: 19 | Зарегистр. 19-11-2008 | Отправлено: 19:46 17-02-2012
Molniev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
anmiles
патчить надо.

Всего записей: 176 | Зарегистр. 13-03-2008 | Отправлено: 20:02 17-02-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