Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||