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

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


Информационный Канал Subscribe.Ru

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

Выпуск № 727
от 20.05.2004, 18:00

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5301
Отправлено ответов: 14607
Активность: 275.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]

Реклама

Добро пожаловать в сообщество, где можно обсуждать всесторонние вопросы и темы об Ассемблере.
Прошу экспертов регистрироваться там для помощи изучающим этот лучший язык.
http://www.livejournal.com/community/_assembler/info/


 Список экспертов, ответы которых опубликованы в данном выпуске

_vt
Статус: Профессиональный
Общий рейтинг: 118.54
[Подробней >>]
Foamplast
Статус: Профессиональный
Общий рейтинг: 151.07
URL: мой личный сайт
[Подробней >>]
Pawel
Статус: Профессиональный
Общий рейтинг: 155.2
[Подробней >>]
 
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.68
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.58
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.67
[Подробней >>]
 
Стас
Статус: Доверительный
Общий рейтинг: 131.66
[Подробней >>]
VOVAN
Статус: Опытный
Общий рейтинг: 105.52
[Подробней >>]
St
Статус: Профессиональный
Общий рейтинг: 105.18
[Подробней >>]
 
Dragoon
Статус: Начальный
Общий рейтинг: 109.42
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 5278. Зачем нужны директивы в теле макроопределений.... (ответов: 3)
Вопрос № 5279. Prishlite PLEASE!!! ishodniki: na TASMe: sistemniy dinamik-BOOMER (melodia) na TASMe: perevod proces... (ответов: 2)
Вопрос № 5280. Доброго времени суток! Спасибо за ответы! Цитат одного из экспертов, Стаса: "...А хотел адресов... (ответов: 6)
Вопрос № 5281. Здравствуйте, уважаемые эксперты! У меня беда. Я работаю под linux, а модем у меня soft. А драейвер ... (ответов: 1)
Вопрос № 5282. Я уже задавал вопрос: "Подскажите пожалуйста можно ли сделать так чтоб функция 7141h прерывания... (ответов: 1)
Вопрос № 5283. Здраствуйте. А вы не знаете какую-нибудь программу которая переводила бы машинные коды на язык ассем... (ответов: 6)
Вопрос № 5284. Здраствуйте. Сейчас сильно востребованы программисты, пишущие на С,С++ и Delphi.А как насчет ассембл... (ответов: 4)
Вопрос № 5285. А по канкретней можно по вопросу 5274... (ответов: 3)

Вопросов: 8, ответов: 26


 Вопрос № 5278

Зачем нужны директивы в теле макроопределений.



Вопрос отправлен: 15.05.2004, 05:39
Отправитель: Tany (tany17@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Здравствуйте, Tany!
"А вы что, и кушать за меня будете? - Ага!"(с)Вовка в Тридевятом царстве ;-))
Не место в этой рассылке нерадивым студентам! :)
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 16.05.2004, 21:52
Отправитель: _vt


Отвечает Foamplast

Доброе время суток, Tany!
Смотря какие. Например, чтобы определить константы или функции в зависимости от условий, включить или исключить соответствующий код и т.п.


Ответ отправлен: 18.05.2004, 23:46
Отправитель: Foamplast


Отвечает Pawel

Доброе время суток, Tany!
Про какие конкретно директивы речь?

Ответ отправлен: 16.05.2004, 14:20
Отправитель: Pawel


 Вопрос № 5279

Prishlite PLEASE!!! ishodniki:
na TASMe: sistemniy dinamik-BOOMER (melodia)
na TASMe: perevod processora is realnogo
regima v zahisheniy i obratno.
Budu very very HAPPY. THANKS.



Вопрос отправлен: 15.05.2004, 12:08
Отправитель: Dima (dnbz@ukr.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Здравствуйте, Dima!
В твоей школе или институте - не знаю, где тебе это задали - наверняка есть понимающие люди. Сходи к ним, поставь им ящичек пива, они тебе накатают за пять минут. Если хочешь - пришли мне ящик пива по почте, я тебе сделаю ;)
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 16.05.2004, 21:52
Отправитель: _vt


Отвечает Foamplast

Здравствуйте, Dima!
Второй исходник на wasm.ru точно есть.


Ответ отправлен: 18.05.2004, 23:46
Отправитель: Foamplast


 Вопрос № 5280

Доброго времени суток! Спасибо за ответы!
Цитат одного из экспертов, Стаса:
"...А хотел адресовать память через адрес в памяти? Т.е. примеро так mov [offset [a]],0ffh. Так нельзя. Загрузи в аресные регистры offset, через них адресуй, они для этого и существуют..."
Он очень правильно подметил, что я хочу. Но почему так нельзя. Это догма или есть какое-то объяснение? (Хотя адресовать можно не только через адресные регистры, но и другие регистры). Короче, почему нельзя сделать таким образом mov [offset [a]],0ffh
Мой начальный вопрос ниписан ниже:
>Здравствуйте, уважаемые эксперты! Спасибо за предыдущие ответы.
>Ответьте, пожалуйта, почему следующие строки эквивалентны
>mov a,offset ddd
>(1)mov cs:[a],0ffh
>(2)mov a,0ffh
>a dw ?
>ddd:
>(1) строка должна записывать по адресу метки ddd число 0xff, а (2) >должна в переменнюу записывать 0xff (по моей логике). Я рассуждаю так: >переменная 'a' хранить смещение, так почему нельзя записать так как >записано в строке (1). Меня удивило, что под отладчиком эти строки >эквивалентны!?
>word ptr cs:[...]. И что такое это значит. Я понимаю, что это >указатель на слово по адресу cs:[...]. Но почему ассемблер в строке >(2) не делает, что я хочу. Все... я заговорился от непонимания... >Объясните, пожалуста.Если можно поподробнее.
Спасибо.



Вопрос отправлен: 15.05.2004, 15:59
Отправитель: Alexander

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Доброе время суток, Alexander!
При чём тут Ассемблер?!
Это команды процессора, а они не бесконечны. ;)
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 15.05.2004, 17:43
Отправитель: Евгений Иванов


Отвечает Ayl

Добрый день, Alexander!
Ну что значит, почему? Потому что нельзя. Потому что система команд не поддерживает такой адресации - разработчики не предусмотрели. Если хочешь - считай что догма.


Ответ отправлен: 17.05.2004, 16:36
Отправитель: Ayl


Отвечает Pawel

Добрый день, Alexander!
Спроси в INTEL почему так нельзя :)
Это комманды проца так построенны.


Ответ отправлен: 16.05.2004, 14:24
Отправитель: Pawel


Отвечает Dark_Lord

Здравствуйте, Alexander!
А почему нельзя поместить 33битную переменную в 32-битный регистр?! Процессор просто неможет сделать этого, так как по логике для того, чтоб сделать mov [offset [a]],0FFh нужно в начале считать указанный в команде (которая находится в памяти!), но потом придётся где-то сохранить зачение этой переменной. Но где?! У процессора есть только регистры, вот сохранив в них значение можно обращаться по адресу этого значения!!

Ответ отправлен: 16.05.2004, 00:29
Отправитель: Dark_Lord


Отвечает Стас

Доброе время суток, Alexander!
Потому, что не предусмотрено. Набор команд ограничен.
Сейчас, ассемблер развивается, команды добавляются, например PUSH число, или CMP память,число не существовали на 8086.
Может со временем и эта появится. Хотя по моему и так достаточно.

Ответ отправлен: 16.05.2004, 03:12
Отправитель: Стас


Отвечает Foamplast

Доброе время суток, Alexander!

Это догма или есть какое-то объяснение? - ну, вообще-то, у процессора есть определённый набор команд и способов адресации - а догма это или объяснение - решать Вам. Он так устроен и так работает. Возвращаясь к вопросу: есть различные режимы адресации. Есть надо переменной х присвоить 5, то для современного ассемблера пишем:
Mov [x], 5

для всяких там masmов пишем:
Mov x, 5

Теперь, если в переменной х находится адрес, допустим, переменнной у. Необходимо присвоить непосредственное значение и переменной у. Для современного ассемблера пишем:
Mov [х], у
...  
Mov Eax, [x]
Mov [Eax], и

для masmов пишем:
Mov x, offset y
...  
Mov Eax, x
Mov [Eax], и

Если понимание ещё не пришло, то могу сказать, что каждая мнемоника ассемблера обозначает одну команду процессора со всемы вытекающими отсюда последствиями. Одно из них: в командах ассемблера должны использоваться режимы адресации, доступные для процессора, иначе это не будет ассемблироваться (либо исполняться - на х86 произойдёт исключение #UD). В частности, есть команды "загрузить в регистр следуещее число (с указанием конкретного числа)", "загрузить в регистр значение из памяти по такому-то адресу (и указывается конкретный адрес)", "загрузить в регистр значение из ячейки памяти с адресом, который написан в таком-то регистре (указывается конкретный регистр)". А вот команды "загрузить в регистр значение ячейки памяти с номером, который хранится в ячейке памяти с номером таким-то" - нет. Соответственно нет и команды, которую Вы упорно хотите использовать: "загрузить значение такое-то в ячейку памяти с адресом, который записан в ячейке памяти с адресом таким-то".

Вопрос "Но почему так нельзя?" переадресовываю инженерам Intel в следующей форме: "Ребята, ну сделайте такую команду. Читателям рассылки rusfaq без неё неудобно".




Ответ отправлен: 18.05.2004, 04:05
Отправитель: Foamplast


 Вопрос № 5281

Здравствуйте, уважаемые эксперты!
У меня беда. Я работаю под linux, а модем у меня soft.
А драейвер - shareware. Он отказывается работать
быстрее чем 14400 пока не заплатишь 15$ :(
Я думаю, вам понятно, что мне порою хочется с ним сотворить.
Ребёнку понятно, что это - нелепая ошибка авторов
драйвера и им нужно помочь её исправить :)
Вопрос: как отлаживаются linux - драйвера?
Заранее благодарю за помощь.



Вопрос отправлен: 15.05.2004, 18:33
Отправитель: Antonio

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Добрый день, Antonio!
Linux-драйвера отлаживаются точно также, как и Windows-драйвера. Необходим отладчик, прямые руки и светлая голова. :)
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 16.05.2004, 21:52
Отправитель: _vt


 Вопрос № 5282

Я уже задавал вопрос:
"Подскажите пожалуйста можно ли сделать так чтоб функция 7141h прерывания 21h для удаления файлов с длинными именами, удаляла файл с указанием пути на файл, например "d:путьимяфайла",0. Старая функция 41h, если ей передать такой путь работает нормально, а 7141h выдает ошибку "файл не найден"."
Вы мне ответили, что путь надо указывать в кавычках, перепробовал разные варианты, ничего не получилось. Может быть я неточно задал вопрос.
В общем есть код и он у меня не работает, выдает ошибку cf=1 ax=2("файл не найден").
model small
.data
fname_del db "c:1 est.txt",0
.stack 256
.code
main:
mov ax,@data
mov ds,ax
xor cx,cx
mov si,1
lea dx,fname_del
mov ax,7141h
int 21h
mov ax,4c00h
int 21h
end main
Но если заменить строку "mov ax,7141h" на "mov ah,41h" все работает нормально.
Вопрос в следующем, что надо сделать чтоб этот код заработал с функцией 7141h.
P.S. Перед отправлением этого вопроса получил ответ, что эта функция наверное работает только в текущем каталоге, у меня тоже сложилось такое впечатление, но функция 41h ведь работает с указанием пути на файл, а 7141h новее 41h, какой-то регресс получается :)



Вопрос отправлен: 15.05.2004, 22:43
Отправитель: Начинающий

[Следующий вопрос >>] [Список вопросов]

Отвечает Foamplast

Приветствую Вас, Начинающий!

Модифицировав Ваш исходник получил работающий экземпляр. Он проверен и стопроцентно работает. Написан для NASM.

    bits 16
org 100h

section .text

xor cx, cx
mov si, 0
mov dx, fname
mov ax, 7141h
int 21h

ret

section .data

fname db "C:st1longfilenametext.txt",0


Ответ отправлен: 18.05.2004, 23:47
Отправитель: Foamplast


 Вопрос № 5283

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



Вопрос отправлен: 16.05.2004, 11:25
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, Семен!
ДИЗАСЕМБЛЕР!!!!!!!!
Wdasm32 например.

Ответ отправлен: 16.05.2004, 14:27
Отправитель: Pawel


Отвечает _vt

Доброе время суток, Семен!
Например, HIEW. ;)
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 16.05.2004, 21:53
Отправитель: _vt


Отвечает Стас

Доброе время суток, Семен!
Ассемблер это удобное для человека отображение машинных кодов.
Для перевода машинного кода в ассемблерские команды существуют дизассемблеры. Их много. Например IDA, W32DASM.
Но, нужно не забыть указать дизассемблеру тип процессора коды которого дизассемблеруешь.


Ответ отправлен: 16.05.2004, 12:23
Отправитель: Стас


Отвечает VOVAN

Здравствуйте, Семен!
качай любой НЕХ-редактор. можно даже дебагом обойтись.

Ответ отправлен: 17.05.2004, 15:35
Отправитель: VOVAN


Отвечает Евгений Иванов

Здравствуйте, Семен!
IDA лучше всего.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 17.05.2004, 00:14
Отправитель: Евгений Иванов


Отвечает Foamplast

Приветствую Вас, Семен!

Знаю! Одна называется "дизассемблер". Там указываешь исполняемый файл в машинных кодах, и он раз - становится в мнемониках ассемблера. И ещё одну знаю! Называется "отладчик" - там можно вообще всё нахрен cассемблировать и дизассемблировать к чертям. Советую:

http://wasm.ru/print.php?article=win32appbyhand
http://home.t-online.de/home/Ollydbg




Ответ отправлен: 18.05.2004, 04:06
Отправитель: Foamplast


 Вопрос № 5284

Здраствуйте.
Сейчас сильно востребованы программисты, пишущие на С,С++ и Delphi.А как насчет ассемблера?





Вопрос отправлен: 16.05.2004, 16:34
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает St

Привет, Семен!
Не знаю, я на одном форуме высказался в пользу написания программ на ассемблере, так меня сразу обвинили в непрофессионализме ;-) (что впрочем истинная правда).
St


Ответ отправлен: 17.05.2004, 16:04
Отправитель: St


Отвечает Евгений Иванов

Здравствуйте, Семен!
Тоже сильно востребованы, например, для написания драйверов и BIOS.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 17.05.2004, 00:16
Отправитель: Евгений Иванов


Отвечает Foamplast

Здравствуйте, Семен!

  • Востребованы программисты, пишущие на Delphi? - а сколько им платят? Буду крайне удивлён, если больше $500 в месяц.
  • Попробуйте написать драйвер на амсе, а затем на Дельфи или Сях и скажите, как проще?
  • Попробуйте написать программу на Сях и асме и скажите, какая меньше?
  • Попробуйте написать программу на Сях и асме и скажите, какая быстрее?
  • Попробуйте написать программу на Сях и асме для новой технологии (SSE2), ОС (Menuet) и скажите, где время разработки меньше?


На самом деле главное - убедить заказчика, что ему нужна программа именно на ассемблере :)

Движителем создания "инструментов для дебилов" (Builder'ы всякие и т.п.) является закон Мура и желание некоторых проныр намыть бабла (.NET). Посему рекомендую заметку автора HLA Рандалла Хайда "Закон Мура мёртв".


http://board.flatassembler.net/viewtopic.php?t=1552


Ответ отправлен: 18.05.2004, 04:07
Отправитель: Foamplast


Отвечает Dragoon

Здравствуйте, Семен!
Прогаммисты на ассемблере всегда были
и будут необходимы. Это 100%. К тому же, не зная
ассемблера вы не сможете писать высокоэффективных программ на ЯВУ.


Ответ отправлен: 20.05.2004, 15:55
Отправитель: Dragoon


 Вопрос № 5285

А по канкретней можно по вопросу 5274



Вопрос отправлен: 16.05.2004, 17:54
Отправитель: Саша (zevskl@tut.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Приветствую Вас, Саша!
Куда уж конкретнее? Я вроде готовую программу посылал.
Да вроде и ошибки описывал. Так в чем проблема конкретнее?


Ответ отправлен: 16.05.2004, 21:53
Отправитель: Стас


Отвечает Евгений Иванов

Доброе время суток, Саша!
Смотри исходники программ, например, возьми на моём сайте.
Там всё работает и всё правильно.
И используй это.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 17.05.2004, 00:18
Отправитель: Евгений Иванов


Отвечает Foamplast

Здравствуйте, Саша!
Чисто конкретно.


Ответ отправлен: 20.05.2004, 00:37
Отправитель: Foamplast



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (14)
Perl (2)
Builder / Delphi (15)
Pascal (18)
Basic / VBA (2)
Java / JavaScript (3)
PHP (11)
Криптография (5)
WinAPI (7)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (50)
"Железо" (28)
Поиск информации (15)
Администратору
Windows NT/2000/XP (25)
Linux / Unix (9)
Юристу
Гражданское право (9)
Семейное право (7)
Трудовое право (8)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное