Автор Тема: Изучение азов програмирования , советы начинающим и т.д и т.п  (Прочитано 27500 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2769
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Мне кажется у некоторых программеров такой лозунг - "мне не нравится программировать но я работаю программистом". А те кому нравится они им не работают а это просто как хобби

Оффлайн aUruM

  • Emu-Land Team
  • Сообщений: 1793
  • Пол: Мужской
    • Просмотр профиля
Цитата: gepar
А всвязи с чем ?
В связи с тем, что эти языки требуют особенно аккуратного и внимательного программирования (особенно если речь идет о чистом C). По крайней мере, на мой взгляд, писать на C значительно сложнее, чем на Паскале.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Изучение азов програмирования , советы на
« Ответ #92 : 04 Февраль 2010, 21:19:55 »
Посмотрел сегодня расписание на следующие полгода - у меня программирование на ассемблере , лучше бы на си , но что поделаешь .Вообщем вопрос тот же , язык программирования только теперь другой тобишь какую умную, хорошую и проверенную книгу (надо чтобы был веб вариант/книга лежала в интернете отсканированная) вы посоветуете для изучения ассемблера ?Нагуглить пару книг я конечно и сам могу , но хотелось бы именно проверенную или с многими хорошими отзывами  :) Заранее благодарен за ответы .

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Остановился на Зубкове, в своё время пользовался этой книгой для подготовки к зачётам. Ещё Юров есть. Ну и Абель - классика.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Assembler под DOS это мастдай... DOS это трупешник... кому нужно программировать под трупо-DOS ?

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
aptyp, да я тоже не шибко рад такому раскладу , особенно после паскаля это вообще как-то не правильно .Надо было либо с асемблера начинать либо его просто пропустить .Имаго,спс, посмотрю этих авторов .

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Аптип, я уже говорил, сначала читаем, а потом комментируем, добро? В конце концов, речь идёт об изучении принциповов программирования на низком уровне.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Да, после такого изучения получаются недо-программисты, думающих что кодить на delphi лучше всего. :)

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Re: Изучение азов програмирования , советы на
« Ответ #98 : 06 Февраль 2010, 17:12:31 »
Ты забыл добавить, как эти "недопрограммеры" верстают! ;)

Человек только начал изучение ассемблера, ему обязательно нужно начинать с динамических библиотек, ага...
« Последнее редактирование: 08 Февраль 2010, 02:35:29 от Имаго »

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
С азов надо начинать... а учиться программировать под примитивную 16-bit'ную DOS'ю дико...
Хотя тут важно по какой методике учат то в учреждениях тех... от этого и надо исходить в выборе пособий.
А если реально, учиться, начинать ассемблировать надо под Windows... так что см. стр.1.

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Re: Изучение азов програмирования , советы на
« Ответ #100 : 06 Февраль 2010, 17:56:50 »
А в этой теме и говорится об "азах" или чтение нынче не в моде? Видимо, да, раз ты по-прежнему пытаешься спорить, ибо в двух предложенных книгах (кроме Абеля, ибо это основа) есть описание прогммирования под Windows (WinAPI и т. д.) Кроме того, и для изучения основ их более, чем достаточно, благо написаны весьма неплохо (Абеля и Юрова перед началом курса рекомендовал препод, а Зубкова - знакомые программеры)
« Последнее редактирование: 08 Февраль 2010, 02:36:52 от Имаго »

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Тогда пускай докучи поизучают assembler под старое компьютерное барахло с разделённым сопроцессором, это конечно интересно, но реально никогда не-пригодится. Но раз такая пьянка... :lol:

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2769
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Цитата
Посмотрел сегодня расписание на следующие полгода - у меня программирование на ассемблере , лучше бы на си , но что поделаешь
Мне вот почему-то ассемблер заинтересовал, я бы лучше на асемблере бы позанимался

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Посмотрел исходники некоторых задачек на некоторых форумах , чёт пугает меня после паскаля ассемблер своей нелогичностью  :-\

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
gepar, в нём просто другая логика, "машинная"... ;)

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Assembler в чистом виде это машинные коды, коды придумали программисты, всё основано на чистой логике.

Оффлайн Henty

  • Пользователь
  • Сообщений: 796
  • Пол: Мужской
    • Просмотр профиля
Асм мне нравился)
Это реальный способ скрючить себе мозг))  :crazy:

Бесит то, что для вывода строки на экран, для конвертирования текста в строку, для математических расчётов  нужно писать алгоритмы. НО это лежит в основе всех языков высокого уровня.
Вообще, после АСМа на С++ программировать легче. Потому что С++ из него, грубо говоря, вырос.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Насчёт программерской литературы по asm кстати ситуация вообще плохая.
Например взять книгу автора Зубкова. Эта книга (как и 99% другой литературы) написана так, что читателю как бы неплохо уже понимать 80% того что в ней изложено, хотя автором подразумевается то что её способен изучить начинающий, начинается всё с нулевых азов для чайников, но зовётся она для Программистов, типа всё же программирование желательно знать. Да как второстепенная книга она конечно подходит для более стабильного познания некоторых нюансов, или для повторения. Если бы не то, какие архаизмы в ней описываются, по сравнению с  макулаторой Абеля (хотя и полезной), хорошо ещё что хоть часть материала посвящена 32-bit. После этой бесполезной тянучки аж 4xx страниц, есть глава Программирование для Windows (95/NT!!!), воспринимается как свежий воздух, довольно неплохо также слишком мало, но эти несколько десятков страниц дают понять что на базе этого и необходимо учить asm и какой DOS настоящий must-die. Всё равно очень очень плохо всё объяснено. Кто будет спорить что методы ассемблирования под DOS настолько устаревши и бесполезны, что прок от данного дикого подхода изучения скорее минусовой, читатель будет склоняться к тому что и весь ассемблер дико бесполезный язык, такое изучение побуждает сразу забросить и программировать на высоскоуровневых языках. Что касается именно данной книги, по ней asm или вообще asm лучше не-учить, чем учить так. Старые методы программирования в DOS должны упоминаться лишь в летописях или использоваться как дополнительный материал для узучения, делать основным или заострять на этом способе внимание нельзя ни вкоем случае. Плохо также то, что именно по данному недоразумению ассемблеру посвящено так немного литературы, ещё меньше хорошей. В общем Windows и ещё раз Windows, или assembler'щика из ученика не-выйдет ни... за... что.

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Желающим понять основы устройства процессора и программировния на асме теоретически советую книгу "Код. Тайыный язык информатики" Ч. Петцольда. Книгу могут читать даже те, кто не знает про биты, но при этом под конец чтения можно усвоить команды i8080 и Z80.

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Re: Изучение азов програмирования , советы на
« Ответ #109 : 11 Февраль 2010, 15:54:37 »
aptyp, друг, извини, но после твоего супер-пупер-гениально-миниатюрного кода на языке отнюдь не программирования, но разметки, твои изречения о программировании и логике как-то плохо воспринимаются. Ты, видимо, уже стал крутым "ассемблерщиком" благодаря своему самоучителю, так что говорить о каких-то основах с тобой нельзя - куда нам! А мне вот Зубков очень даже помог в учёбе, о чём я сразу сказал. И эти самые "азы" я осваивал на КР580 - вот это архаизм, но для понимания вполне достаточно...
« Последнее редактирование: 11 Февраль 2010, 16:10:21 от Имаго »

Оффлайн aptyp

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

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
В том коде официальный валидатор нашёл больше ошибок, чем было строк. От дальнейших комментариев воздержусь, ибо мы уже отходим от темы.

А Зубков да, помог, вместе с пониманием для основы этого было более, чем достаточно. Перед зачётом перелистывал.

Оффлайн Aku

  • Пользователь
  • Сообщений: 1471
  • Пол: Мужской
  • ушёл
    • Просмотр профиля
                                                                       begin      
                                                                               a:= TRegistry.Create;
                                                                               a.RootKey :=HKEY_CURRENT_USER;
                                                                               a.OpenKey('\Control Panel\desktop\', false);
                                                                               a.WriteString('Wallpaper', opendialog1.FileName);
                                                                               a.WriteString ('TileWallpaper','0') ;
                                                                               systemparametersinfo(spi_setdeskwallpaper, 0, nil,spif_sendwininichange );sendmessage(findwindow('progman', 'program manager'),wm_command,$a065,0);
                                                                               a.CloseKey;
                                                                               a.Free;
                                                                              end;
Функция заменяет обои на рабочем столе тем, что выбрано в боксе. В реестре параметры все меняются, в настройках тоже выбраная обоина, но на рабочем столе - увы нет. Так понял нужно дать системе знать о смене, до перезагрузки. Пробовал всякое вроде SystemParametersInfo(SPI_SETDESKWALLPAPER,0,Nil,SPIF_SENDWININICHANGE); после закрытия реестра, но ничего не помогает, вообще не знаю откуда у SystemParametersInfo ноги растут, не сталкивался с ним, ошибок никаких не выдаёт, но и действия тоже ноль. Странно что с отключенным WinProcs ровно как и с подключенным ошибок никаких нет, но и SystemParametersInfo  в обоих случаях никакого явного действия не исполняет
помогите

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Изучение азов програмирования , советы на
« Ответ #113 : 25 Апрель 2010, 19:07:41 »
Начинаю мучить асм на практике ( до этого была лишь прелюдия), вопрос : если программа где я подсунул свои 5 переменных при открытии вместо того чтобы тихо закрыться пишет аааааааааааааааааааааааааа... штук 5 символов а потом винда пищит и закрывается то что это значит ? Может где-то я под переменную зарегистрировал мало / много памяти или тут что-то другое ?  Тестировал на 7ке если что.
Вот скриншот :
В теории по примеру должно просто было выдавать группу где я учусь , ну тоесть то что я вписал в одну из переменных, только куда копать при поиске ошибки ?
« Последнее редактирование: 25 Апрель 2010, 19:15:44 от gepar »

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
gepar, ты бы лучше листинг кода показал.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Методом тыка определил что это вылетает только если 5 переменных находяться именно в этой последовательности, тоесть если их немножко перемешать то код работает  o_0
Я так понял там в какой-то регистр нельзя те значения пихать, но как тогда надо делать.
В прикреплённом файле находиться exeшник, lst и asm файлы.
Задание работы если что такое : определить 5 типов данных. использую прерывание в DOS (VM DOS) распечатать значение на экране монитора . Для чисел их шестнадцатеричные эквиваленты независимо от значения.

Добавлено позже:
Блин, ассемблер зло, притом зло, которое мало кто учил потому на форуме кибергуру в теме по asm ничего интересного нет, а друзья так о этом язык программирования и не слышали да ещё и в придачу с преподавателем на эти полгода не повезло и на все вопросы он нам отвечает читайте конспект/книгу, мол там всё есть  :(

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7484
    • Просмотр профиля
Сделай так:
.model tiny
.code
org 100h
start:
mov ax, cs
mov ds, ax
mov ah, 9
mov dx, offset var_2
int 21h
mov ax, 4c00h
int 21h
; Variables
var_1 dq 981731987897491838
var_2 db 'KS-09-1', '$'
var_3 dw 126000q
var_4 dt 9def8ae34df5a1e2d37h
var_5 dw 277q
end start
Собирай так:
tasm.exe /la lab1.asm
tlink.exe /t lab1.obj
Получишь LAB1.COM (не ЕХЕ!). И не спрашивай меня почему. Если нужен принципиально EXE - могу и его сделать.
PS Покури вложение, DOS Fn 09h.

Добавлено позже:
Если точно следовать условию задания, то нужно сделать так:
.model tiny
.code
org 100h
start:   mov       ax, cs ; Зададим DS
         mov       ds, ax
; Выведем var_1, dq - 8 байт
         mov       bx, offset var_1
         mov       cx,8
OutVar1: mov       al, ds:[bx]
         call      hex_al
         inc       bx
         dec       cx
         jnz       OutVar1
         call      linefeed
; Выведем var_2, это строка
         mov       ah, 9
         mov       dx, offset var_2
         int       21h
         call      linefeed
; Выведем var_3, dw - 2 байта слово
         mov       bx, offset var_3
         mov       ax, ds:[bx]
         call      hex_ax
         call      linefeed
; Выведем var_4, dt - 10 байт
         mov       bx, offset var_4
         mov       cx,10
OutVar4: mov       al, ds:[bx]
         call      hex_al
         inc       bx
         dec       cx
         jnz       OutVar4
         call      linefeed
; Выведем var_5, dw - 2 байта слово
         mov       bx, offset var_5
         mov       ax, ds:[bx]
         call      hex_ax
; Выход в DOS
         mov       ax, 4c00h
         int       21h
; Разные процедурки
; Переводит строку
linefeed proc      near
         push      ax
         mov       al,0Dh
         int       29h
         mov       al,0Ah
         int       29h
         pop       ax
         ret
linefeed endp
;Вывод HEX из ax
hex_ax   proc      near
         push      ax
         mov       al,ah
         call      hex_al
         pop       ax
         call      hex_al
         ret
hex_ax   endp
;Вывод HEX из al
hex_al   proc      near
         push      ax
         mov       ah,al
         shr       al,4h
         and       al,0Fh
         cmp       al,0Ah
         sbb       al,69h
         das
         int       29h
         mov       al,ah
         and       al,0Fh
         cmp       al,0Ah
         sbb       al,69h
         das
         int       29h
         pop       ax
         ret
hex_al   endp
; Variables
var_1 dq 981731987897491838
var_2 db 'KS-09-1', '$'
var_3 dw 126000q
var_4 dt 9def8ae34df5a1e2d37h
var_5 dw 277q
end start
Собирать все так же:
tasm.exe /la lab1.asm
tlink.exe /t lab1.obj
А вывод будет таким:
F:\WORK\ASSM>LAB1.COM
7EA144A30AD09F0D
KS-09-1
AC00
372D1E5ADF34AEF8DE09
00BF
F:\WORK\ASSM>

PS Лови Зубкова, афигительная книжка по асму. Жаль, что в электронной версии не хватает целого раздела по программированию железа (в бумаге он есть).
« Последнее редактирование: 26 Апрель 2010, 11:44:32 от HardWareMan »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
HardWareMan,спасибо, почему тот текст введённый не выводило уже понял - я не тот номер переменной ставил на вывод . Сегодня после всех лент продолжу разбираться, хотя зачем мне делать com файлы я пока не понял, но посмотрю что там и зачем .

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7484
    • Просмотр профиля
HardWareMan,спасибо, почему тот текст введённый не выводило уже понял - я не тот номер переменной ставил на вывод . Сегодня после всех лент продолжу разбираться, хотя зачем мне делать com файлы я пока не понял, но посмотрю что там и зачем .
Для изучения нет разницы COM или EXE, просто первые меньше (там только сам код и данные), а вторые больше (еще заголовок). Ну и да, во вторых есть сегменты.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Уф, что-же лент то так много у меня, до асм никак не мог добраться, ну да хоть сегодня до вечера посижу немного, да на остальных выходных.
Вопрос по тому учебнику Зубкова: HardWareMan,я его скачал (да он и был у меня, мне его кто-то советовал), но с него пользы если честно мало  :-\ В нём не написано ни какой вид должен быть у программы, ни что как делается, тоесть в книгах по паскалю было что-то типа "программа имеет следующий вид : ... в начале пишем имя, потом подключаем модули командой uses ... здесь обязательно пишем begin ... чтобы программа сразу не закрывалась можно писать readkey... Здесь же ничего подобного нет, просто перечислены команды что больше напоминает шпаргалку для программиста по асм. , чем учебник.  И что самое странное препод. в этом году поступает также и по тому что он приходя к нам тупо читает распечатанные листики и так уже полгода мне кажеться что читает он нам подобную этой по изложению книгу . Ещё Борландовский отладчик это вообще кошмар, сделать отладчик не умеющий редактировать код программы это ... это ... это ТУПО!Что-то мне подсказывает что сделано это специально. Чтобы поменять пару символов приходиться редактировать asm файл  в текстовом редакторе, закрывать отладчик и опять открывать его через досбокс (иначе проц грузиться на 100 % неизвестно чем и винда виснет). Вобщем у меня пока что о асм нет слов, одни эмоции .
Ещё не хватает чего-то типа freepascal или pascalabc, но для asm. Тоесть чего-то что будет хорошо работать под новыми версиями виндовса от сторонних разработчиков, хотя такого как я понял нет ?

Добавлено позже:
Понадеялся на чудо - ввёл в гугл assembler abc, чудо не произошло, но как оказывается для начинающих с таким названием есть небольшая справка по всем командам с примерами  :)