Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 455
от 24.05.2006, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 336, Экспертов: 24
В номере:Вопросов: 3, Ответов: 8


Вопрос № 43475: Доброго времени суток ,Многоуважаемые эксперты! Достаточно долго читаю рассылку по асму, сам с удовольствием на нём корябаю. У меня к вам такой вопрос : нафига вы морочите голову начинающим ассемблистам. Я имею ввиду асм под ДОС. Это же к...
Вопрос № 43518: Ещё раз здравствуйте. У меня в ax лежит двоичное число, как мне перевести его в десятичное и вывести его на экран (в десятичной форме)? За ранее спаибо!...
Вопрос № 43523: Доброговремени суток всем!Очень хочу понять. почему не рисуется рожица?Программа только ждет нажатия кнопки!Не могу идти дальше,не разобравшись с этим!...

Вопрос № 43.475
Доброго времени суток ,Многоуважаемые эксперты!
Достаточно долго читаю рассылку по асму, сам с удовольствием на нём корябаю.
У меня к вам такой вопрос : нафига вы морочите голову начинающим ассемблистам.
Я имею ввиду асм под ДОС. Это же каменный век, а Калашникова с его книгой я ваще считаю тормозом прогресса. Ведь давно уже сменилась парадигма кодинга на асме. Ведь щас времена 32-х и 64-х разрадного программирования, какие нафиг сегменты и смещения ИХ ДАВНО УЖЕ НЕТУ!!!! Они канули в лету. А молодняк нужно изначально приучать к современному образу ассемблерного мышления. Чем тратить время на сегменты и смещения, лучше поподробнее объяснить хотя бы тоже самое WinAPI, многопоточность , событие-ориентированное программирование и другие современные технологии.
Отправлен: 18.05.2006, 14:20
Вопрос задал: Art020776 (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Boriss
Здравствуйте, Art020776!
Не у одно у Вас такие мысли появляются (можно посмотреть архивы), но дело в том, что такие мысли живы только до тех пор, пока сам не попытаешься кого-то научить писать на ассемблере.
Эти API и др. ничему не учат (тогда лучше уж сразу на Delphi мегабайты плодить - современный четырехпроцессорный 64-х разрядный вытянет). Человек должен понять, что такое регистры, адресация, команды, процессоры, сопроцессоры. Именно этому учат "под DOS"
А если он только использует чужие функции, поверьте, никогда ничему не научится.
Кроме того, микроконтроллеры никто не отменял ...


---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: факультет Электронной техники, Мордовский госуниверситет
Адрес: г. Саранск
WWW: Программирование на Паскале
----
Ответ отправлен: 18.05.2006, 15:23
Оценка за ответ: 5
Комментарий оценки:
Здравствуйте Boriss. Ну вот давайте сразу в крайности впадать, типа или Delphi или assembler. Не правильно это. И не нужно пожалуйста говорить про микроконтроллеры...они чё все под ДОСом пашут чтоли ? По моему они никак не привязаны к ОС. Сразу хочу сказать что против всемилюбимого ДОСа я ничего не имею. Я лишь считаю что у молодых ассемблистов складывается не совсем правильное мышление. Дело в том что изучить регистры , флаги и т.д. можно и без ДОСа, хотя, конечно ,примитивная система типа ДОС для этого не плохо подходит. Дело в том, что навыки корябанья под ДОС, ПОЧТИ никогда ником у не пригодятся! И нужно, я считаю, применять некий симбиоз , и объяснять людям что кроме ДОСа есть ещё кое какие вещи по круче.

Отвечает: Ramok
Здравствуйте, Art020776!

> Bедь давно уже сменилась парадигма кодинга на асме.
Звучит угрожающе Ж:-))
Интересно бы знать что под этим подразумевается..
Когда становится вопрос начинать кого то обучать ассемблеру
то падает естественный выбор на ix86 платформу + DOS, как самые расспространенную
платформу и как простейшая OC которая не мешает работать с системными ресурсами
на прямую. Так же не маловажную роль играет большое колличество учебного материала
и литературы. того что можно изучить таким способом вполне хватает для введения в
архитертуры процессоров и основы программирования на ассемблере. Ведь зная основы одного ассемблера и одну архитектуру, не сложно изучить другую под которую это
действительно может понадобится(например контроллеры для встраивемых систем).
Например у нас на кафедре начинают изучать архитектуру процессоров и ассембле
именно в связке ix86+DOS, после чего переходят на другие платформы(MK51, Atmel,
PIC и в будущем ARM-производные я надеюсь Ж:-)

Windows плохо предназначена для начанания изучения ассемблера..
Начинающему надо будет вникать сразу в:
1) защищенный режим ix86 (кольца защиты, селекторы, защита памяти, эксепшены..)
2) архитектура Windows, WinAPI функции, основной цикл обработки сообщений в Windows программе(что даже на С не так просто для начинающего, неговоря о человеке
который 2+2 на ассемблере сделать не может) или консольные приложения(в которых
все равно доступ к железу без драйвера не получишь), использование/написание драйверов..

И заметь что во всем это человек должен разбиратся еще даже не написав ни одной
строчки на ассемблере.. Что делает процесс изучения ассемблера не то что сложным,
а как по мне и не возможным..

> Чем тратить время на сегменты и смещения, лучше поподробнее объяснить
> хотя бы тоже самое WinAPI, многопоточность , событие-ориентированное
> программирование и другие современные технологии.
* одним WinAPI мир программировния на ассеблере не ограничивается
* все остальное перечисленное это тема разговора других рассылок

Ответ отправил: Ramok (статус: 1-ый класс)
Ответ отправлен: 18.05.2006, 17:07
Оценка за ответ: 5
Комментарий оценки:
Друг, ты меня немого не понял. Против ДОСа конкретно я ничего не имею, а под сменой парадигмы я имел ввиду то , что например в ДОСе нет понятия селектора, нет понятия многозадачности, нет понятия WinAPI (в принципе это может быть и *nixAPI изини за тавтологию) и ещё много другого нет. Ведь дело не в ДОСе а в принципах мышления. Ну давайте тогда начнём обучения первоклашек навыкам работы с каменным топром!

Отвечает: Mihasic
Здравствуйте, Art020776!
На мой взгляд, Вы не совсем понимаете суть ассемблера, который изначально разрабатывался как альтернатива машинным кодам. Ассемблер используется для низкоуровневого программирования под различные процессоры, контроллеры.
Что касается ДОСа, то эта платформа наиболее доступна и предоставляет полный доступ к системным ресурсам компьютера, что и дает большое "пространство" для разработчиков программного обеспечения "под железо".
Что касается платформы Windows, то большая часть ее компонентов написана на C/C++, т.к. нет необходимости использовать низкоуровневое программирование (не будет большого выиграша в производительности, а время на разработку существенно возрастает). Ассемблер же используется для добавления той функциональности, которую нельзя осуществить средствами языков высокого уровня (например, для процессоро-зависимого кода).
Изучение специфики приложений для определенной операционной системы (и взаимодействие см ее ресурсами) не входит в изучение языка. И, вообще, большинство справочников написаны под языки высокого уровня.
А для Ваших предложений (WinAPI, многопоточность...) нужно создавать тему "Платформа Windows".
Ответ отправил: Mihasic (статус: 1-ый класс)
Ответ отправлен: 18.05.2006, 18:49
Оценка за ответ: 5
Комментарий оценки:
Здравствуйте многуважаемый Mihasic! "...Что касается ДОСа, то эта платформа наиболее доступна и предоставляет полный доступ к системным ресурсам компьютера, что и дает большое "пространство" для разработчиков программного обеспечения "под железо".
Что касается платформы Windows, то большая часть ее компонентов написана на C/C++, т.к. нет необходимости использовать низкоуровневое программирование (не будет большого выиграша в производительности, а время на разработку существенно возрастает). Ассемблер же используется для добавления той функциональности, которую нельзя осуществить средствами языков высокого уровня (например, для процессоро-зависимого кода.." А вам не кажется что это попахивает деградацией и дескридитированием асма?
Что-то я сильно сомниваюсь, что на вашей машине стоит чист ый ДОС нет проклятого Windows,или *nix , что вам всё легко и понятно, ведь это же ДОС!!! Ура, как прекрасно жить, не надо вникать во всякие сложности типа защищённого режима селекторов и ещё бог знает чего , да здравстует ПРИМИТИВИЗМ!!! Если серьёзно, то вы не совсем поняли что я хотел сказать, у малышей сформируется не правильный образ мышления, если забивать им голову ТОЛЬКО org 100 , и не говорить о том что есть, оказывается, плоская модель памяти, есть защищённый режим, есть кольца защиты, есть много новых и интересных комманд процессора..и ещё много чего. Именно это я и хотел сказать

Отвечает: Пан Павел Константинович
Здравствуйте, Art020776!

Ответ лежит на поверхности.
Вы смотрите? каждый год такие фильмы как "Операция Ы, Приключения Шурика и другую старую классику", если да то вы меня поймете. Это как чтение Толстого. Время проходит, а вино становиться только лучше.

С, Уважением MnEm0n!C.

---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 8-ой класс)
Ответ отправлен: 19.05.2006, 00:14


Вопрос № 43.518
Ещё раз здравствуйте.
У меня в ax лежит двоичное число, как мне перевести его в десятичное и вывести его на экран (в десятичной форме)?
За ранее спаибо!
Отправлен: 18.05.2006, 21:46
Вопрос задал: Kostolom (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mihasic
Здравствуйте, Kostolom!
Дело в том, что все числа изначально двоичные, а десятичным может быть лишь представление числа. Чтобы вывести значение из AX на экран, его изначально можно преобразовать в строку, которую затем вывести...
Чтобы перевести в строку, естественно придется делить на 10 и записывать ASCII-код остатка в строку.

Приложение:

Ответ отправил: Mihasic (статус: 1-ый класс)
Ответ отправлен: 18.05.2006, 23:26

Отвечает: Пан Павел Константинович
Здравствуйте, Kostolom!

Если так вы получаете лабораторную работу для Университета ТО! пусть будет это на вашей совести, подумайте об этом, А если нет, то вот код:

CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;=============================================
mov ax,1111111111111111b ;тоже самое что и -> 65535
;=============================================
mov bx,0ah
xor dx,dx
xor cx,cx
@1:
div bx
cmp ax,00h
jz @@2
push dx
xor dx,dx
inc cx
jmp @@1
@2:
push dx
inc cx
xor bx,bx
@3:
pop dx
add dl,30h
mov byte ptr [ADD_R+bx],dl
inc bx
loop @@3
;=============================================
mov ah,09h
lea dx,ADD_R
int 21h
;=============================================
ret ;exit
;=============================================
ADD_R db 6 dup('$')
CSEG ends
end Begin

С, Уважением MnEm0n!C.

---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 8-ой класс)
Ответ отправлен: 19.05.2006, 02:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо за терпение!


Вопрос № 43.523
Доброговремени суток всем!Очень хочу понять. почему не рисуется рожица?Программа только ждет нажатия кнопки!Не могу идти дальше,не разобравшись с этим!

Приложение:

Отправлен: 19.05.2006, 00:00
Вопрос задал: Wadosss (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Wadosss!
CSEG segment
org 100h

_beg:
sub ax,ax
inc ax
bt ax, 0
rcl ax, 1
int 16
mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end _beg
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +78313145721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская
WWW: Eugene Ivanov
ICQ: 214;88;90;76
----
Ответ отправлен: 19.05.2006, 00:10

Отвечает: Пан Павел Константинович
Здравствуйте, Wadosss!

CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h

Begin:
;==================================================

;Вызов спец. функции для установки видео-режима.
;ah = 00 - номер функции
;al = 03 - режим(тип:текст, формат:80x25, адрес:0b800h <- что нам и нужно)

mov ax,0003h
int 10h

;==================================================
mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end Begin

С, Уважением MnEm0n!C.

---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 8-ой класс)
Ответ отправлен: 19.05.2006, 01:03


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное