Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
1

Надо ли перейти от асм к с++?

14.12.2013, 19:49. Просмотров 400. Ответов 7
Метки нет (Все метки)

Я знаю, что начинающие бывают надоеливо смешными с своими наивными вопросами, поэтому ответы пусть пишут только те, кому не хочется блестнуть своей иронией. За дельный совет спасибо!
Недавно решил с асм переключиться на с++. Но при процессе обнаружил, что на с++ машина как то теряется, пишешь и уже предчувствуешь, где то что то выкинет и ты не в состоянии все это заранее предотвратить. Я в debug.exe адреса самостоятельно, почти в уме считывал и поэтому все понимал сразу если код получался неверным. А тут хоть компилятор и предлагает какую ошибку надо исправить, все ровно не видно настоящей причины.
И еще; сравнивая одинаковые программы на асм и с++, видно, что в текстовом отношении с++ не меньше, а по обему асм и меньше и быстрее. У меня visual studio 2008 и при работе как трактор пихтит.
Те кто разбирается в обоих программах пусть скажут, стоит ли тратить время на с++, или лучше по асм- у усовершенствоваться?
Всем спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 19:49
Ответы с готовыми решениями:

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

строки в асм
Здравствуйте, помогите разобраться вот с таким заданием. Задана строка, нужно...

Регистры асм
Привет всем)) заинтересовал такой вопрос. Регистры ax,bx,cx,dx используются...

Циклы на асм
Доброго времени суток, у меня вот такой вопрос. есть у меня строка, как все с...

Лаба по АСМ
Ребята, день добрый! Помогите, если есть возможность. В архиве лежит лаба с...

7
TFS
551 / 33 / 6
Регистрация: 11.12.2013
Сообщений: 92
14.12.2013, 21:00 2
Я не хочу блеснуть иронией. Вот только не совсем понятна цель вопроса.

Целей для смены языка, на мой взгляд, две - заполучить определённое рабочее место или просто для души подняться на ступеньку выше по части квалификации.

В первом случае у вас нет выбора. Во втором случае без вашего желания в этом нет смысла и ничей совет не поможет.

Возможно, есть и третья, и четвёртая причины. С интересом почитаю.

Подозреваю, что объекты и всё, что с ними связано, программисту не помешают. Вы ведь не пользуетесь ими при программировании на ассемблере?
0
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
14.12.2013, 21:49  [ТС] 3
Для начала спасибо!
Да, и первая и вторая причина обезательно присутствуют. Согласись, много таких работадателей, которые Php считают за язык програмирования. Вот и доказывай таким, что вот мол это дело делается и на другом языке( это так , - к слову).
Но кроме первых двух есть и третья; Я посмотрел все прерывания DOS и BIOS и вижу что через них можно сделать все; начиная от систем загрузки и кончая веб компоновкой. И даже сам компилятор соорудить при желании. В таком случае не лучше ли будет ( ну, если будет, конечно) с самими прерываниами потратить столько времени, сколько уйдет на изучение еще одного языка. Я постарался быть кратким.
0
TFS
551 / 33 / 6
Регистрация: 11.12.2013
Сообщений: 92
14.12.2013, 23:21 4
Если задачи не требуют плюсов и нет желания учить их для души, переходить действительно не стоит.

Я вот и на LISP планирую время выкроить. Это же знакомство с инструментарием. Как можно отказываться?

Про прерывания не понял. Планируется навсегда ограничить себя DOS'ом и 16 битами?
0
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
14.12.2013, 23:46  [ТС] 5
Да, ограничиться 16 битами точно проблематично. Наверное все таки надо переходить на обьекты и классы. Там ведь огромная библиотека вложена для того что бы более масшлтабную работу выполнить.
В конце то концов никто же не мешает с прерыванями разбираться если это в удовольствие.
0
Убежденный
Ушел с форума
Эксперт С++
15999 / 7270 / 1180
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
15.12.2013, 10:42 6
Цитата Сообщение от paata1963 Посмотреть сообщение
Те кто разбирается в обоих программах пусть скажут, стоит ли тратить время на с++, или лучше по асм- у усовершенствоваться?
Мой совет: попробуйте написать на ассемблере что-нибудь серьезное, какую-нибудь реальную
прикладную задачу, которую нельзя уложить в пару листов кода за несколько минут.
Ну например, менеджер фотографий. Или программу, показывающую курсы валют с сайта.
Или простой многопользовательский чат. А потом выполните то же самое на C++, и
выводы придут сами и очень быстро.

Это я все к чему веду - нельзя сравнивать ассемблер и языки высокого уровня в
контексте решения мелких задач, здесь вы существенной разницы не увидите.
1
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
15.12.2013, 18:27  [ТС] 7
Это и хотел выяснить, как видно. В деле когда нужно работать с большим числом и обьемом данных видно с ассемблером слижком много хлопот. Для таких задач наверное и придуман язык с огромной библиотекой, чтобы каждую точку с его цветом и яркостью заново не писать и не установливать режим видео и т. П.

Спасибо большое!
0
Charles Kludge
Клюг
7642 / 3157 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
15.12.2013, 19:06 8
Почему-то я ржу. C-- пробовали?
C
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
qword stdcall __llmul(EAX:ECX;qword second);
qword stdcall __lldiv(EDX:EAX,qword second);
qword stdcall __lludiv(EDX:EAX,qword second);
qword stdcall __llumod(EDX:EAX,qword second);
qword stdcall __llmod(EDX:EAX,qword second);
 
:qword stdcall __llmul(EAX:ECX,qword second)
{
    $push ECX
    $mul SSDWORD[#second]
    ECX><EAX;
    $mul SSDWORD[#second+4]
    ECX+=EAX;
    $pop EAX
    $mul SSDWORD[#second];
    EDX+=ECX;
}
 
inline CALCDIV()
uses EBP
{
    EBP=ECX;
    ECX=0x40;
    EDI:ESI=0;
    loop(ECX){
        EAX<<=1;
        $rcl edx,1
        $rcl esi,1
        $rcl edi,1
        IF(EDI:ESI<EBP:EBX)CONTINUE;
/*      IF(EDI>=EBP){
            IF(CARRYFLAG||ZEROFLAG){
                IF(ESI<EBX)CONTINUE;
            }*/
            EDI:ESI-=EBP:EBX;
            EAX++;
//      }
    }
}
 
:qword stdcall __lldiv(EDX:EAX,qword second)
uses EBX ESI EDI ECX
{
    EDI=0;
    ECX:EBX=second;
    IF(ECX==0){
        IF(EDX==0)||(EBX==0){
            $div    ebx
            EDX=0;
            RETURN;
        }
    }
    IF(long EDX<0){
        -EDX:EAX;
        EDI|=1;
    }
    IF(long ECX<0){
        -ECX:EBX;
        EDI^=1;
    }
    $push   EDI
    CALCDIV();
    $pop    ebx
    IF($test EBX,1)-EDX:EAX;
}
 
:qword stdcall __lludiv(EDX:EAX,qword second)
uses EBX ESI EDI ECX
{
    ECX:EBX=second;
    IF(ECX==0){
        IF(EDX==0)||(EBX==0){
            $div EBX
            EDX=0;
            RETURN;
        }
    }
    CALCDIV();
}
 
:qword stdcall __llmod(EDX:EAX,qword second)
uses EBX ESI EDI ECX
{
    EDI=0;
    ECX:EBX=second;
    IF(ECX==0){
        IF(EDX==0)||(EBX==0){
            $div EBX
            EAX><EDX;
            EDX=0;
            RETURN;
        }
    }
    IF(long EDX<0){
        -EDX:EAX;
        EDI|=1;
    }
    IF(long ECX<0)-ECX:EBX;
    $push   EDI
    CALCDIV();
    EDX:EAX=EDI:ESI;
    $pop    EBX
    IF($test EBX,1)-EDX:EAX;
}
 
:qword stdcall __llumod(EDX:EAX,qword second)
uses EBX ESI EDI ECX
{
    ECX:EBX=second;
    IF(ECX==0){
        IF(EDX==0)||(EBX==0){
            $div EBX
            EAX><EDX;
            EDX=0;
            RETURN;
        }
    }
    CALCDIV();
    EDX:EAX=EDI:ESI;
}
 
:qword fastcall __llshl(EDX:EAX,CL)
{
    IF(CL<0x20){
        $shld   EDX,EAX,CL
        EAX<<=CL;
        RETURN;
    }
    IF(CL<0x40){
        EDX=EAX;
        EDX<<=CL;
        EAX=0;
        RETURN;
    }
    EDX:EAX=0;
}
 
:qword fastcall __llushr(EDX:EAX,CL)
{
    IF(CL<0x20){
        $shrd   EAX,EDX,cl
        EDX>>=CL;
        RETURN;
    }
    IF(CL<0x40){
        EAX=EDX;
        EDX=0;
        EAX>>=CL;
        RETURN;
    }
    EDX:EAX=0;
}
0
15.12.2013, 19:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 19:06

небольшая прога на асм
Нужно произвести сумму всех элементов одномерного массива, вывести счетчик...

3 тестовых вопроса по асм
1. Описать переменную-слово X, начальным значением которой является адрес этой...

АСМ простые з.дачи
Доброе время суток. Пришел в универ и в первом семестре начали изучать вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru