Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 530
от 26.04.2003, 13:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3058 Отправлено ответов: 8977 Активность: 293.5 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
keleb-glin Статус: Опытный Общий рейтинг: 109.25 [Подробней >>] |
DiGiT[old] Статус: Профессиональный Общий рейтинг: 111.74 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.28 URL: Страничка обо мне и моих друзьях Телефон: +7 902 168 02 65 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 118.99 [Подробней >>] |
Hangatyr Статус: Доверительный Общий рейтинг: 128.71 [Подробней >>] |
Knignick Статус: Доверительный Общий рейтинг: 120.4 [Подробней >>] |
Tigran K. Kalaidjian Статус: Доверительный Общий рейтинг: 114.95 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 150.29 URL: Программирование [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 115.04 [Подробней >>] |
Eugene Статус: Профессиональный Общий рейтинг: 108.96 URL: мощный файловый архив [Подробней >>] |
K0dMaster Статус: Доверительный Общий рейтинг: 118.14 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 108.93 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Paulkan Статус: Начальный Общий рейтинг: 104.76 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3021. Здравствуйте, ув. тов. Эксперты! Я хотел бы спросить чем отличаются ассемблеры в различных операцион... (ответов: 3)
Вопрос № 3022. Ув. эксперты. Исходник к вопросу №3018 некоторые участки для удобства вырезаны. Ошибка при нео... (ответов: 2)
Вопрос № 3023. Уважаемые эксперты! Помню кто-то обмолвился, что у него есть какие-то наработки по управлению различ... (ответов: 2)
Вопрос № 3024. Пожалуйста,нужна полная программа ,как написать программу 'КАЛЬКУЛЯТОР' на Ассемблере.Мне нужен полн... (ответов: 3)
Вопрос № 3025. Здравствуйте уважаемые. Объясните пожалуйста как вписать текст в Edit. Мои попытки в приложении. Тек... (ответов: 1)
Вопрос № 3026. Здравствуйте уважаемые эксперты!Пытаюсь вывести 256 символов ASCII и попутно меняю цвета,перед этим ... (ответов: 6)
Вопрос № 3028. функция getcommandline возвращает указатель на оканчивающуюся нулём строчку, но помимо той команды, ... (ответов: 4)
Вопрос № 3029. Здравствуйте Уважаемые Эксперты!!! Хочу задать , наверно, глупый вопрос ,но все же. Читаю Зуб... (ответов: 8)
Вопросов: 8, ответов: 29
Вопрос № 3021 |
Здравствуйте, ув. тов. Эксперты!
Я хотел бы спросить чем отличаются ассемблеры в различных операционных системах.
Вопрос отправлен: 21.04.2003, 04:17
Отправитель: Lux
[Следующий вопрос >>] [Список вопросов]
Отвечает keleb-glin
Добрый день, Lux!
Ассемблеры различаются не по операционным системам, к которым они принадлежат, а просто по синтаксису. Для IBM-совместимых есть синтаксис, предложенный Intel, есть AT&T ( он больше юзается в никсах ) и ещё, по-моему, несколько других. Они отличаются, но не сильно ( в основном, суть одна, много мелких отличий, так, в AT&T операнды располагаются в обратном к интеловскому порядке, плюс вместо mov byte ptr есть movb и т.п. ).
Плюс есть ассемблеры для компов другой архитектуры есть свои принципиально отличающиеся ассемблеры, где всё кардинально отличается из-за различий в системах комманд процессора.
Ответ отправлен: 21.04.2003, 18:35
Отправитель: keleb-glin
Отвечает DiGiT[old]
Приветствую Вас, Lux!
Все дело в том что понимать под ассемблером. Ассемблер, имхо, не должен быть под конкретную ОС, он под конкретную машину. Смотри в любых ОС под IA-32 инструкция mov eax, ebx будет иметь один и тот же код. имеет смысл различать под различные ОС системные вызовы и форматы исполняемых файлов, а инструкции одни и те же.
Ответ отправлен: 21.04.2003, 06:26
Отправитель: DiGiT[old]
Отвечает Gibbel
Приветствую Вас, Lux!
Язык ассемблера различается только для разных процессоров. Операционки тут не при чем.
Ответ отправлен: 21.04.2003, 11:31
Отправитель: Gibbel
Вопрос № 3022 |
Ув. эксперты. Исходник к вопросу №3018
некоторые участки для удобства вырезаны.
Ошибка при неоднократном выборе опции 4
Приложение:
Вопрос отправлен: 21.04.2003, 11:15
Отправитель: BAPBAP
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Добрый день, BAPBAP!
Ну так что же ты хочешь... Вылетает... Проблема в работе со стеком - ты в процедуре dec2num вынимаешь из стека нечто, но до этого нигде туда ничего не кладешь. Возможно и в остальных процедурах тоже самое.
Насколько я понял, тебе после выполнения команд:
mov ah, 08h
int 21h
xor ah, ah
нужно выполнить команду push ax
Ответ отправлен: 24.04.2003, 15:48
Отправитель: Ayl
Отвечает Hangatyr
Приветствую Вас, BAPBAP!
Так, исходник есть. Посмотрим...
cmp di, si
jb Cod
pop dx
С какой целью здесь присутствует "pop dx"? И что после выполнения этой инструкции будет в DX? Кажется, баг именно в этом.
Ответ отправлен: 21.04.2003, 13:39
Отправитель: Hangatyr
Вопрос № 3023 |
Уважаемые эксперты! Помню кто-то обмолвился, что у него есть какие-то наработки по управлению различными устройствами через LPT порт! Я был бы крайне благодарен, если обладатель подобного материала смог бы поделиться со мной какой-нибудь информацией по данному вопросу =).
Спасибо...
Вопрос отправлен: 21.04.2003, 13:00
Отправитель: =FeanaR=
[Следующий вопрос >>] [Список вопросов]
Отвечает Knignick
Здравствуйте, =FeanaR=!
Описание различных протоколов LPT неплохо изложено у М. Гука
в книге "Аппаратные средства IBM PC". У меня есть собственные библиотеки для работы с LPT портом в различных режимах под Win9x и Win2k. О том, что конкретно тебя интересует, милости прошу в мыло.
Ответ отправлен: 23.04.2003, 05:16
Отправитель: Knignick
Отвечает Tigran K. Kalaidjian
Здравствуйте, =FeanaR=!
Пиши на kalaidjian@pochtamt.ru-перешлю, только ещё укажи под какую ОС, для каких портов и на каком языке программирования нужно писать.
Ответ отправлен: 22.04.2003, 15:31
Отправитель: Tigran K. Kalaidjian
Вопрос № 3024 |
Пожалуйста,нужна полная программа ,как написать программу 'КАЛЬКУЛЯТОР' на Ассемблере.Мне нужен полный код программы и Пожалуйста объяснение.
Зарание всем огромное спасибо!
Я студентка,учу программирование на Ассемблере,не легко приходится,учитель дал задание сделать 'КАЛЬКУЛЯТОР' на Ассемблере,а я хоть убей не знаю,5 дней уже бьюсь над этим.
Помогите!Ведь есть же среди Вас "АСЫ" в этом деле.
Спасибо!
Валерия.
Вопрос отправлен: 21.04.2003, 16:00
Отправитель: Valeria Gerber (valeria_gerber@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Valeria Gerber!
Ну блин, врял ли тебе кто-то станет тут писать калькулятор - представь, если каждый, кто сюда обращается будет просить написать ему программу...
Если есть какие-либо вопросы, то не стесняйся, а целые программы, ну ты понимаешь.
Если нужна помощь по алгоритму - то для начала скажи, под ДОС или под Windows будет он у тебя? Вероятно под, дос, т.к. написать на асме под винды - это уже вряд ли для института. Ну а тогда, будет ли в нем графика (текстовая) - как будут вводиться числа (из командной строки или непосредственно в нем) ... и все такое...
Ответ отправлен: 22.04.2003, 00:50
Отправитель: Bob Johnson
Отвечает Hangatyr
Здравствуйте, Valeria Gerber!
Информации маловато... Под какую ось писать? Какие функции должны присутствовать? Интерфейс, в конце концов...
Ответ отправлен: 21.04.2003, 17:03
Отправитель: Hangatyr
Отвечает DiGiT[old]
Здравствуйте, Valeria Gerber!
Дал делать надо делать самому. Иначе проку не будет. Смотри тебе напишут хорошую прогу, а те препод в следующий раз еще жестче даст задачу и будет всем говорить вот у меня есть крутой ассемблерщик :( А если тебя сильно приспичило, то заплати какому нить знакомому (от 200 до 500р)и он те напишет...
Ответ отправлен: 22.04.2003, 06:20
Отправитель: DiGiT[old]
Вопрос № 3025 |
Здравствуйте уважаемые.
Объясните пожалуйста как вписать текст в Edit. Мои попытки в приложении.
Текст не выводится в диалог, но и ошибки нет. Желательно пример. И ещё, какое
сообщение надо послать диалогу чтоб типа кнопку ОК нажать.
Спасибо.
Приложение:
Вопрос отправлен: 21.04.2003, 20:31
Отправитель: Макс (maxe@mail.kz)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, Макс!
Попробуй получить hwnd этого edit (GetDlgItem) должна обязательно вернуть не ноль и потом послать этому окну WM_SETTEXT.
Ответ отправлен: 23.04.2003, 01:30
Отправитель: Bob Johnson
Вопрос № 3026 |
Здравствуйте уважаемые эксперты!Пытаюсь вывести 256 символов ASCII и попутно меняю цвета,перед этим делаю очистку экрана ,но к сожалению выход из программы получается некоректный и видимо можно сделать эту программу более лучше:)Пожалуста помогите!Видимо я чего то никак не могу понять:(
Приложение:
Вопрос отправлен: 21.04.2003, 20:42
Отправитель: dim-A
[Следующий вопрос >>] [Список вопросов]
Отвечает Knignick
Ну щас, dim-A, братия экспертов тебе скажет "пару ласковых"
насчет mov ax, 4C00h, int 21h :)
Ответ отправлен: 23.04.2003, 05:02
Отправитель: Knignick
Отвечает Ayl
Приветствую Вас, dim-A!
Насчет некорректного выхода ты что-то загнул - у тебя он попросту отсутствует. Тебе в конце нужно написать:
mov ax, 4c00h
int 21h
По коду программы - очень неопимально. К тому же с ошибками. Я бы написал вот так:
Приложение:
Ответ отправлен: 24.04.2003, 15:31
Отправитель: Ayl
Отвечает Bob Johnson
Здравствуйте, dim-A!
Выход надо делать так:
mov ax, 4c00h
int 21h
а у тебя вообще ничего нет.
Ответ отправлен: 22.04.2003, 01:04
Отправитель: Bob Johnson
Отвечает Tigran K. Kalaidjian
Приветствую Вас, dim-A!
В самом конце перед END поставь следующее:
mov ax, 4c00h
int 21h
Это стандартный выход и возврат управления операционной системе
Ответ отправлен: 22.04.2003, 14:42
Отправитель: Tigran K. Kalaidjian
Отвечает ASMодей
Приветствую Вас, dim-A!
Про выход из программы тебе уже здесь написали, а вот насчет улучшения...
посмотри как работает твоя программа:
1. очищаются первые 256 знакомест экрана
кстати это можно сделать проще и быстрее:
mov ax,0b800h
mov es,ax
sub di,di
sub ax,ax
mov cx,256
rep stosw
2. после выполнения этого цикла регистр CX=0, а регистр DI=256
3. далее ты с адреса 256 заполняешь видеопамять 65536 символами
(команда LOOP с регистром CX=0 будет выполняться именно столько раз),
а так как регистр DI был больше 0, то в процессе он достигнет
максимального значения и обнулится и начнется заполнение видеобуфера
с адреса 0.
В итоге весь экран оказывается заполненным символами.
Так что если ты хотел именно такой работы программы, то все работает
правильно, а если нет, то тебе наверное уже понятно, что нужно исправить.
Ответ отправлен: 22.04.2003, 10:18
Отправитель: ASMодей
Отвечает Hangatyr
Здравствуйте, dim-A!
В принципе, верно, но нет инструкции завершения программы. Подправленный вариант в приложении.
Приложение:
Ответ отправлен: 22.04.2003, 02:35
Отправитель: Hangatyr
Вопрос № 3028 |
функция getcommandline возвращает указатель на оканчивающуюся нулём строчку, но помимо той команды, с которой я запустил программу там ещё и полный путь к исполняемому файлу...помойму ещё и в ковычках....
Как мне получить только мою команду ?
Вопрос отправлен: 22.04.2003, 02:13
Отправитель: spaces (s-p-a-c-e-s@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Knignick
Добрый день, spaces!
Ты хочешь убрать путь?
Самое простое решение:
создать указатель, ссылающийся на следующий за последним (от начала) символом '' Это и будет именя твоей программы.
Ответ отправлен: 23.04.2003, 04:51
Отправитель: Knignick
Отвечает Eugene
Добрый день, spaces!
А что тебе мешает просканировать твою строчку на две кавычки? А затем подправить тот указатель, который у тебя получен после вызова GetCommandLine на столько байт, сколько занимает путь к исполняемому файлу.
Ответ отправлен: 22.04.2003, 16:31
Отправитель: Eugene
Отвечает Bob Johnson
Приветствую Вас, spaces!
Можешь ее парсить. Если не обломно с unicode заморачиваться, можно использовать функцию CommandLineToArgvW (и CommandLineToArgvW, соотв.).
Ответ отправлен: 23.04.2003, 01:31
Отправитель: Bob Johnson
Отвечает K0dMaster
Добрый день, spaces!
Ответ отправлен: 22.04.2003, 10:15
Отправитель: K0dMaster
Вопрос № 3029 |
Здравствуйте Уважаемые Эксперты!!!
Хочу задать , наверно, глупый вопрос ,но все же.
Читаю Зубкова,он пишет:
mov ah,9h или mov ax,0003h и т.д.
вызов фун-ии или отчистка экрана или ...
это видно из коментария,а как без коментария опредилить
что это именно функция а не просто какое нибудь число?
Зарание Спасибо!
Вопрос отправлен: 22.04.2003, 13:24
Отправитель: Vladimir
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Приветствую Вас, Vladimir!
Никак. Только из контекста. Например, если встретишь команду int 21h или int 10h, то надо восстановить, что именно к этому моменту будет находится в регистрах. При этом в регистре AH всегда будет номер функции. Далее - берешь справочник по функциям DOS и BIOS и смотришь соответствующее прерывание, в нем находишь функцию и начинаешь разбираться с параметрами.
А просто mov ah, 9 может быть всем, чем угодно.
А комментарии как раз для того и пишут, что бы потом понять, что именно мы в регистр кладем.
Ответ отправлен: 23.04.2003, 18:22
Отправитель: Ayl
Отвечает Knignick
Здравствуйте, Vladimir!
Перед вызовом int 21h, 10h, 2Fh и т.п.
в ah находится код вызываемой функции. Т.е.int 21h означает вызов функции ДОС с номером ah. А что делает это функция и другие ее параметры можно узнать из справочника.
Ответ отправлен: 23.04.2003, 04:37
Отправитель: Knignick
Отвечает Beeblebrox
Добрый день, Vladimir!
Потому что следом за mov ah,9 наверняка идет int 21h, а следом за mov ax,3 идет int 10h :) С опытом ты научишься воспринимать визуально эти строки как один цельный вызов прерывания.
Ответ отправлен: 22.04.2003, 13:54
Отправитель: Beeblebrox
Отвечает Hangatyr
Доброе время суток, Vladimir!
Ну, если за ней стоит вызов прерывания, то это некоторая функция, а какие действия выполняет эта функция можно посмотреть в каком-нибудь справочнике.
Ответ отправлен: 22.04.2003, 14:48
Отправитель: Hangatyr
Отвечает Tigran K. Kalaidjian
Доброе время суток, Vladimir!
Так это ведь и есть простое число !
Просто при вызове соответствующего прерывания номер ф-ции берется из каких-то определённых регистров.
В данном случае из axah.
Если интересно почитать справочник по прерываниям с описанием ф-ций, то можно почитать соотв. справочник Ральфа Брауна
Ответ отправлен: 22.04.2003, 15:41
Отправитель: Tigran K. Kalaidjian
Отвечает Bob Johnson
Приветствую Вас, Vladimir!
Если вызывается функция DOS (int 21h), то ее номер предварительно заносится в регистр ah. Это можно сделать любым доступным образом, хоть:
mov ah, 8
int ah
int 21h
Иногда функция имеет подфункции, номер которых заноситься в регистр al или в al может находиться параметр функции. Так что смотри в программе int 21h и потом смотри, что стоит перед ним.
Ответ отправлен: 23.04.2003, 01:31
Отправитель: Bob Johnson
Отвечает Paulkan
Доброе время суток, Vladimir!
Далее всегда идет какое-нибудь прерывание, поэтому_смотри
описание каждого прерывания : через какой регистр что передается. Обычно функцию заносят в AX
Ответ отправлен: 23.04.2003, 09:37
Отправитель: Paulkan
Отвечает keleb-glin
Приветствую Вас, Vladimir!
Вообще-то вызов функции довольно сильно отличается от чего-нибудь ещё. В ДОСе обычно это int xxh. Непросто бывает определить в какие регистры просто кладётся значение, а в какие - параметр для вызова. Но это надо доки по ф-кциям почитать и подебагить
Ответ отправлен: 25.04.2003, 15:13
Отправитель: keleb-glin
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (36) C / C++ (28) Perl (7) Delphi (13) Pascal (23) Basic / VBA (8) Java / JavaScript (10) PHP (3) MySQL / MSSQL (3) |
Пользователю Windows 95/98/Me (28) Windows NT/2000/XP (22) "Железо" (23) Поиск информации (11) |
Администратору Windows NT/2000/XP (11) Linux / Unix (10) |
Юристу Гражданское право (8) Семейное право (5) Трудовое право (5) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||