Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 359
от 03.09.2002, 18:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1167 Отправлено ответов: 3563 Активность: 305.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Ayl Статус: Профессиональный Общий рейтинг: 119.66 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 158.06 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 135.46 URL: моя рассылка по Protected Mode [Подробней >>] |
Gibbel Статус: Опытный Общий рейтинг: 108.49 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Pablo Статус: Профессиональный Общий рейтинг: 131.05 URL: Моя страничка [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 111.67 [Подробней >>] |
kvINT Статус: Опытный Общий рейтинг: 111.05 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 115.83 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Топор Статус: Профессиональный Общий рейтинг: 117.75 URL: Хорошая Русская Металлическая команда Телефон: (8462)500298 [Подробней >>] |
Dron Статус: Профессиональный Общий рейтинг: 120.99 URL: Операционная система с нуля! [Подробней >>] |
SonicX Статус: Доверительный Общий рейтинг: 114.42 [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 129.37 URL: Страничка рассылки Паскаля... Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 141.38 [Подробней >>] |
Shal Статус: Опытный Общий рейтинг: 107.27 [Подробней >>] |
Portnov Статус: Опытный Общий рейтинг: 121.64 URL: Мой сайтик... [Подробней >>] |
Byter Статус: Опытный Общий рейтинг: 132.25 [Подробней >>] |
LIFO Статус: Опытный Общий рейтинг: 137.91 Телефон: 8 01710 24758 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 117.38 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Igoryk Статус: Опытный Общий рейтинг: 113.1 URL: В помощь программисту [Подробней >>] |
ARDoS Статус: Доверительный Общий рейтинг: 106.06 [Подробней >>] |
Артём Шегеда Статус: Профессиональный Общий рейтинг: 118.82 URL: Пристанище неодинокого программиста [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 1129. Уважаемый Ayl ! Фокус в том, что я читал не ТечХелп, а Зубкова... Так Зубков не только имеет понятие... (ответов: 1)
Вопрос № 1132. I'm chainik :-) Програмка в приложении, и к ней вопросик почему она заканчивается после вызова cal... (ответов: 2)
Вопрос № 1133. Ув. Эксперты! Не могли ли Вы решить мой вопрос? Допустим в регистре АH лежит число 02H, как можно ч... (ответов: 17)
Вопрос № 1134. Может кому не жалко параметров для VMM сервиса, если есть еще для других буду благодарен. Просьба - ... (ответов: 1)
Вопрос № 1135. Здраствуйте уважаемые эксперты, не подскажете что делать. При компиляции проги выдается ошибка типо ... (ответов: 7)
Вопрос № 1136. Уважаемые господа эксперты. Прошу ответить вас на следующий вопрос: почему у меня в Soft Ice для NT ... (ответов: 3)
Вопрос № 1137. Здравствуйте, уважаемые эксперты 1. Объясните для чего служат сегментные регистры FS и GS. 2. Почему... (ответов: 3)
Вопрос № 1138. Уважаемые эксперты, насколько нормальным является изменение регистра ECX после вызова win32 API функ... (ответов: 7)
Вопрос № 1139. Hi all! Как мне зделать чтобы программа 1)запомнила содержимое экрана и позицию курсора 2) выдала ст... (ответов: 4)
Вопрос № 1140. Всем привет! Вопрос конечно не по адресу, но всё же: Подскажите плиз где взять электронную версию по... (ответов: 1)
Вопрос № 1141. Приветствую Вас господа эксперты! Подскажите как создать с помощью TASM такой exe файл который бы мо... (ответов: 1)
Вопрос № 1142. Здравствуйте уважаемые эксперты! Насколько я знаю, разновидностей языков ассемблера много. А что в... (ответов: 4)
Вопрос № 1143. Уважаемые эксперты! Столкнулся с проблемой. Хотел бы выводить BMP'шки с прозрачным фоном. Т.е. в BMP... (ответов: 2)
Вопросов: 13, ответов: 53
Вопрос № 1129 |
Уважаемый Ayl !
Фокус в том, что я читал не ТечХелп, а Зубкова...
Так Зубков не только имеет понятие, но и обьясняет, что есть 2Dh и с чем его едят...
Я тоже старался обьяснить в вопросе что оно такое... Простите, если не очень понятно :)))
А в DX:DI строка должна бы быть согласно спецификации (этой самой AMIS)...
Может, конечно, Зубков че наплел... Не знаю :)))
Вопрос отправлен: 29.08.2002, 18:05
Отправитель: Sslash (assem@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Доброе время суток, Sslash!
Приношу свои извинения, действительно, прерывание 2Dh как-то выпало из моего поля зрения. Теперь, благодаря Ralf Brown's Interrupt List, я про него знаю :-)
В общем, похоже, у тебя действительно просто нет резидентов, которые поддерживали бы эту спецификацию. У Брауна приведен список известных резидентов, которые ее используют. Попробуй их поискать (список см. в Приложении).
А по поводу программы - так вроде нормально написан. Только выходить будет только по Esc. В конце приложения (за списком резидентов на 2Dh) я положил свой код. Он выходит или по Esc, или после перебора всех 256 значений. При выводе информации на экран выводит номер обнаруженного резидента и разделяет пробелами 2 части идентификатора (см. описание AMIS).
Смотри. Вроде старался писать оптимально.
Кстати, запустись под отладчиком (например, TD) и посмотри, как работает. Ты же можешь "обмануть" свою прогу и сказать, что функция вернула правильный отклик!
Я лично так отлаживался. У меня тоже нет в памяти таких резидентов.
Приложение:
Ответ отправлен: 30.08.2002, 18:25
Отправитель: Ayl
Вопрос № 1132 |
I'm chainik :-)
Програмка в приложении, и к ней вопросик
почему она заканчивается после вызова call ip_adr
а не начинает работать занова!!!???
Приложение:
Вопрос отправлен: 29.08.2002, 20:37
Отправитель: Andrey (sbtr@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, Andrey!
Ну так все же зависит от внутренностей того файла, которым ты переписываешь код, не так ли?
Ответ отправлен: 29.08.2002, 22:26
Отправитель: masquer
Отвечает Broken Sword
Добрый день, Andrey!
Во-первых, почему это она должна начать работать заново, а во-вторых, почему это она у тебя заканчивается? Твоя процедура ip_addr вообще ничего не делает полезного, кроме того, что в dx ложит адрес, следующий за call ip_addr. Ну и почему, скажи мне, она должна "работать заново" ?
Потрассируй ее в отладчике, причем на команде call ip_addr зайди в саму процедуру и убедись воочию, что она не должна "начинаться заново"
Ответ отправлен: 29.08.2002, 23:22
Отправитель: Broken Sword
Вопрос № 1133 |
Ув. Эксперты!
Не могли ли Вы решить мой вопрос? Допустим в регистре АH лежит число 02H, как можно
чтобы это число записалось например в регистор BH ввиде 20H?
За все ответы большое спасибо!!! :)
Вопрос отправлен: 30.08.2002, 00:28
Отправитель: Андрей
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Здравствуйте, Андрей!
mov ah,2
mov bh,ah
mov cx,4
shl bx,cx
Ну, можно другие вариации со здвигом, чтоб другие регистры не портить, но смысл один.
Ответ отправлен: 30.08.2002, 10:26
Отправитель: Gibbel
Отвечает Pablo
Доброе время суток, Андрей!
mov bh, ah
shr bh, 4 ;bh = bh * 10h
вообще форма быстрой загрузки с умжожением входит в инструкцию lea, но только она работает с полными регистрами 16(32) бита.
Например:
lea ebx, [10h + eax *8]
Правда ассемблер отказался компилировать 16 битную версию.
lea bx, [10h + ax * 8]
Умножители могут быть 1,2,4,8.
Ответ отправлен: 30.08.2002, 21:40
Отправитель: Pablo
Отвечает vitya
Приветствую Вас, Андрей!
в аh - xy
mov bl, ah
mov cl, 4
shr bl, cl ;получаем в bl верхние 4 бита (x)
mov bh, ah
shl bh, cl ;получаем в bh нижние четыре бита (y), но уже y << 4
or bh, bl ; получаем в bh yx
Ответ отправлен: 30.08.2002, 09:58
Отправитель: vitya
Отвечает kvINT
Добрый день, Андрей!
Добрый день, Андрей!
Можно, например, так:
mov bh,ah ;скопируем в bh
shl bh,4 ;сдвинем число в bh на 4 разряда влево
shr ah,4 ;сдвинем число в ah на 4 разряда вправо
or bh,ah ;объединим
Ответ отправлен: 01.09.2002, 17:54
Отправитель: kvINT
Отвечает masquer
Доброе время суток, Андрей!
shl ah, 4
mov bh, ah
Ответ отправлен: 30.08.2002, 07:38
Отправитель: masquer
Отвечает Beeblebrox
Приветствую Вас, Андрей!
mov bh,20h
Формулируй вопрос точнее, тогда и не будешь получать таких ответов
Ответ отправлен: 30.08.2002, 09:56
Отправитель: Beeblebrox
Отвечает Broken Sword
Добрый день, Андрей!
А хоть так:
xor al,al
shr ax,4
xchg al,bh
Ответ отправлен: 30.08.2002, 00:37
Отправитель: Broken Sword
Отвечает Топор
Добрый день, Андрей!
mov bh, ah
ror bh, 4
Ответ отправлен: 30.08.2002, 10:46
Отправитель: Топор
Отвечает Dron
Приветствую Вас, Андрей!
Не понял какой смысл...
можно сделать например так:
mov bh, ah
ror bh, 4
все зависит от того, что ты хочешь сделать.
Ответ отправлен: 30.08.2002, 11:08
Отправитель: Dron
Отвечает SonicX
Здравствуйте, Андрей!
А не легче mov bh,20h?
Ответ отправлен: 30.08.2002, 11:51
Отправитель: SonicX
Отвечает Sensey
Приветствую Вас, Андрей!
; ah=12h bh=??
mov bh, ah; - ah=12 bh=12
shl bh, 4; ah = 12 bh= 20
shr ah, 4; ah=01 bh=20
or bh, ah;все!!
Ответ отправлен: 30.08.2002, 12:03
Отправитель: Sensey
Отвечает Dark_Lord
Добрый день, Андрей!
Сделай макрос!
Приложение:
Ответ отправлен: 01.09.2002, 22:40
Отправитель: Dark_Lord
Отвечает Shal
Здравствуйте, Андрей!
Сначала запихиваешь в ah 02.
Затем пишешь сл. команду: shr ah,4.
А после чего пихаешь что что в ah в bh.
Усё...
Ответ отправлен: 30.08.2002, 12:43
Отправитель: Shal
Отвечает Portnov
Добрый день, Андрей!
Если вам нужно именно то, что я думаю, то вот самый простой вариант:
;предположим, ah=45h
mov bh,ah
rol bh,4
;теперь bh=54h
С уважением, Portnov.
Ответ отправлен: 30.08.2002, 13:58
Отправитель: Portnov
Отвечает Byter
Приветствую Вас, Андрей!
Умнож ax на 10.Ха-ха...:)
Ответ отправлен: 30.08.2002, 16:32
Отправитель: Byter
Отвечает LIFO
Добрый день, Андрей!
C помощю циклического простого сдвига:
Описание: содержимое операнда сдвигается вправо на кол-во бит, определяемое операндом <счетчик операндов>
В твоем случае это будет выглядеть так:
pushf; содержимое cf меняется
mov ax,02h
push ax
rol ax,4;посмотри в отладчике
mov bx,ax;bx=20
pop ax; ax=02
Ответ отправлен: 31.08.2002, 10:48
Отправитель: LIFO
Отвечает baldr
Здравствуйте, Андрей!
Именно для такого случая вот так:
.186 ; Для shl bh, 4
xchg ah, bh ;Меняем местами ah и bh
shl bh, 4 ; побитовый сдвиг содержимого bh на 4 бита влево
Ответ отправлен: 02.09.2002, 00:50
Отправитель: baldr
Вопрос № 1134 |
Может кому не жалко параметров для VMM сервиса, если есть еще для других буду благодарен. Просьба - если дадут ссылку на msdn то по подробней плиз, а то я там уже искал и не нашел ничево.
Вопрос отправлен: 30.08.2002, 00:50
Отправитель: Alex (inter_st@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Alex!
Чего=то я не совсем вопрос понял, для какого сервиса???
Тебе не это нужно:
.vmm (Display VMM Commands)
Ну, даже если не это, хочешь - уточняй, не хочешь - качай DDK к твоей системе.
Ответ отправлен: 30.08.2002, 07:48
Отправитель: masquer
Вопрос № 1135 |
Здраствуйте уважаемые эксперты, не подскажете что делать. При компиляции проги выдается ошибка типо того что не могу найти win.inc window.inc и подобные фаилы, где их можно достать? Заранее спасибо.
Вопрос отправлен: 30.08.2002, 07:25
Отправитель: Cas (vscas@pochtamt.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает kvINT
Доброе время суток, Cas!
Доброе время суток, Cas!
Посмотри в TasmInclude, должны быть. И если есть, пропиши к ним пути. Если у тебя tasm стоит в корне диска С, пути прописаны по умолчанию.
Ответ отправлен: 01.09.2002, 17:55
Отправитель: kvINT
Отвечает masquer
Здравствуйте, Cas!
скачать пакет MASM32, рассылку почитать.
Ответ отправлен: 30.08.2002, 07:50
Отправитель: masquer
Отвечает Топор
Здравствуйте, Cas!
Обычно они идут в комплекте с ассемблерами. Надёжнее всего будет, если они будут лежать в одной папке с исходником, найди да скопируй.
Ответ отправлен: 30.08.2002, 10:35
Отправитель: Топор
Отвечает Dark_Lord
Здравствуйте, Cas!
В пакете masm32 7.1
Ответ отправлен: 01.09.2002, 22:41
Отправитель: Dark_Lord
Отвечает Igoryk
Здравствуйте, Cas!
Обычно файлы с расширением inc подключаются к программе директивами include в начале файла. В них содержится информация для экспортирования функций из Dll-файлов. Но предугадать функции, которые будет использовать пользователь нельзя. Поэтому эти inc-файлы 'индивидуальны' для каждой программы, но ты можешь попытаться создать этот файл сам. Посмотри в исходном тексте вызываемые функции:
call функция. И напиши в inc-файле для каждой функции:
extrn функция:near
Но бывает еще, что используют не полное имя функции, а с помощью директивы EQU ее переименовывают. Обычно отнимают последнюю букву названия функции - A или W.
Ответ отправлен: 30.08.2002, 13:21
Отправитель: Igoryk
Отвечает LIFO
Добрый день, Cas!
В тасме или в масме в директории Include
Ответ отправлен: 31.08.2002, 10:48
Отправитель: LIFO
Отвечает ARDoS
Добрый день, Cas!
Файлы *.inc содержат константы и структуры, в принципе их можно и в файл программы писать, но зачем захламлять код? А эти ошибки у тебя видимо выскакивают потому что в файле исходника написано
include win32.inc
include windows.inc
Ты поищи их в инете, или сам сделай из эсовских h-файлов с помощью программы h2inc.exe или h2ash.exe
Ответ отправлен: 31.08.2002, 12:47
Отправитель: ARDoS
Вопрос № 1136 |
Уважаемые господа эксперты. Прошу ответить вас на следующий вопрос: почему у меня в Soft Ice для NT некорректно работает мышь. Она не вылезает из окна регистров и вообще ведет там себя плохо: как будто я все время держу нажатой правую кнопку. У меня Soft Ice из Driver suit'а версии 2.0.1, Win 2k build 2195, а видеокарта GeForce 2mx.
Вопрос отправлен: 30.08.2002, 08:59
Отправитель: seRg
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, seRg!
Почитай рассылку, поставь другую DS (2.5 или 2.6), посмотри настройки мыши, или вообще убери ее.
Ответ отправлен: 30.08.2002, 09:26
Отправитель: masquer
Отвечает Dark_Lord
Добрый день, seRg!
Я ещё не разу не видел, чтоб она работала корректно!
Ответ отправлен: 01.09.2002, 22:41
Отправитель: Dark_Lord
Отвечает LIFO
Доброе время суток, seRg!
Хе-Хе...
У меня была такая же проблемка...
Значит устанавливай софтайс, когда появится запрос на выбор видеокарты - выбирай
manufactuer - standart VGA
model - Standart Display Adapter (VGA)
и поставь галочку на Universal Video Driver ...
жми Test потом NEXT выбирай PS/2 и ставь галку на Microsoft IntelMouse
Ответ отправлен: 31.08.2002, 10:46
Отправитель: LIFO
Вопрос № 1137 |
Здравствуйте, уважаемые эксперты
1. Объясните для чего служат сегментные регистры FS и GS.
2. Почему при использовании API CreateDialogParam 4 параметр игнорируется, т.е. я туда вписываю адрес процедуры диалогового окна, а окно создается с процедурой указанной в RegisterClass.
3. Какое сообщение передается окну при нажатии в нем клавиши ESC
4. Как заставить программу прятаться к часам в systray.
5. Можно ли под Win32 пользоваться со процессором? Как проверить присутствует ли он?
Вопрос отправлен: 30.08.2002, 11:15
Отправитель: ViV
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, ViV!
1. Системой используются. FS, например, используется при SEH
2. 4 параметр должен содержать указатель на функцию-обработчик сообщений для диалогового окна, если он у тебя игнорируется, значит ты где-то ошибся.
3. WM_KEYUP, WM_KEYDOWN, например
4. См. функцию Shell_NotifyIcon
5. Очень смешной вопрос - можно. Проверить очень просто, если винда работает, то сопроц точно есть, уверяю тебя, или у тебя ХР на 286 работать будет
:)))))))))))
Ответ отправлен: 30.08.2002, 11:56
Отправитель: masquer
Отвечает Pablo
Здравствуй, ViV!
1. Ну это вообще вспомогательные сегментные регистры;
2. А где ты передаешь функции идентификатор зарегистрированного класса?!
3. VK_CANCEL;
4. С помощью функции Shell_NotifyIcon;
5. Под Вин32 он всегда присутствует, потому что начиная с 486 процов АФАЙК он является интесгрированным в основной процессор. Ну а где стоит 386, то АФАЙК на тех платах он обязательно вроде всегда комплектовался.
Ответ отправлен: 30.08.2002, 13:06
Отправитель: Pablo
Отвечает Portnov
Добрый день, ViV!
1.В ДОСе - для нужд вашей программы. Например, для прямого доступа к памяти (mov ax,0b800h;mov fs,ax;mov word[fs:bx],0301h). В винде - для системных нужд. Насколько я знаю, в Винде если вы их измените, будет какое-то там Exception (исключение, ошибка). А может, ничего не будет...
3. Такое же, как при нажатии любой другой клавиши. Насколько я помню, это WM_CHAR. В качестве одного из параметров передается нажатая клавиша.
4.В смысле? если надо set/get system time, то есть спец. ф-ции API. Или рисовать на них хотите? Тогда сделайте прозрачное окно, расположите его над часами и рисуйте на нем.
5.Пользоваться можно. Наличие сопроцессора - насколько я знаю, простых путей определить нет. Вообще-то, есть в CR0 бит, отвечающий за это (CP, кажется), но под виндой в третьем кольце (просто программа) к CR0 обращаться нельзя. Можете написать VxD, им можно.
С уважением, Portnov.
Ответ отправлен: 30.08.2002, 14:06
Отправитель: Portnov
Вопрос № 1138 |
Уважаемые эксперты,
насколько нормальным является изменение регистра ECX после вызова win32 API функции? Какие регисты можно спокойно использовать в своих процедурах(при условии их восстановления по выходу из неё) ?
Вопрос отправлен: 30.08.2002, 13:51
Отправитель: kemerovchanin
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Приветствую тебя, kemerovchanin!
Регистры EAX, EDX и ECX предназначены для оперирования внутри функции и являются временными регистрами, то есть при вызове любой ВинАпишной функции в EDX и ECX значения разрушены, а в EAX может были либо возвращаемой значение, либо неопределенное значение. Я так понимаю, что Майкрософт специально сделала их временными, хотя возможно и в ДОСовских программах эти регистры имели ту же функцию.
Ты можешь безбоязненно использовать все регистры кроме 3-х вышеперечисленных.
Ответ отправлен: 30.08.2002, 21:40
Отправитель: Pablo
Отвечает masquer
Приветствую Вас, kemerovchanin!
Открываю страшную тайну - функция GetLastError номер ошибки берет именно из ecx после выполнения функции.
А так, если предохраняться, то все ОК.
Система активно использует ecx, edx, ebp, esp - с ними желательно поаккуратнее.
Ответ отправлен: 30.08.2002, 16:41
Отправитель: masquer
Отвечает Dark_Lord
Приветствую Вас, kemerovchanin!
ECX может спокойно изменяться, да и всё другое! Так как параметры передаются через стек! Хотя это крайне не желательно, лучше начинайте свою процедуру с pusha и кончайте popa!
Ответ отправлен: 01.09.2002, 22:43
Отправитель: Dark_Lord
Отвечает Gibbel
Добрый день, kemerovchanin!
Функции Win32 API, как правило, не сохраняют значений регистров и тебе необходимо следить самостоятельно за их сохранением. Кроме того, даже если ты убедился, что какая-либо функция не меняет какой-либо регистр, нет гарантии, что так будет и в следующих версиях библиотек Win 32 API.
З.Ы. ECX 100% меняется при вызове функций GDI.
Ответ отправлен: 30.08.2002, 14:31
Отправитель: Gibbel
Отвечает Sensey
Добрый день, kemerovchanin!
Скажу так:
BC, BP считает рабочими регистрами eax ebx ecx edx, и может их не сохранять во встроеных процедурах...
Надеюсь помог:)
Ответ отправлен: 30.08.2002, 15:02
Отправитель: Sensey
Отвечает ARDoS
Приветствую Вас, kemerovchanin!
По моему всё кроме EBX, EDI, и ESI можно изменять без опаски.
Ответ отправлен: 31.08.2002, 12:47
Отправитель: ARDoS
Отвечает baldr
Доброе время суток, kemerovchanin!
Изменение любого регистра по выходе из функции, прерывания или иной подпрограммы совершенно
нормально. Таким образом осуществляется обратная связь между вызываемой подпрограммой и
вызывающей. То есть, результаты работы функции возвращаются в регистре. В своих процедурах
можешь использовать любые регистры. Абсолютно. И если хочешь, то можешь их и не восстанавливать,
если уверен, что это не помешает при возврате из процедуры.
Ответ отправлен: 02.09.2002, 00:50
Отправитель: baldr
Вопрос № 1139 |
Hi all!
Как мне зделать чтобы программа
1)запомнила содержимое экрана и позицию курсора
2) выдала строку
3)Востоновила экран и курсор.
Я вроде вот написал это, но там в 9 строке и 66 errorы.
Исправьте пожалуйста ошибки и прокоминтируйте исправленное.
Заранее спасибо!
Досвидания!
Приложение:
Вопрос отправлен: 30.08.2002, 14:54
Отправитель: R@ptor (Spinosaur@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Доброе время суток, R@ptor!
В общем, я не понял, зачем изменять позицию курсора, но выглядеть это должно как-то так (см.Приложение).
По поводу твоего кода.
1. Ошибки связаны с тем, что в директиве ASSUME ты не привязал регистр ds к сегменту. Ну и квадратные скобки лучше указывать.
2. Прога работать не будет, потому что после цикла вывода строки стоят 2 вызова прерываний (16h и 10h), а в AH находится значение 0Eh, что довольно странно.
3. Восстановления экрана не происходит, потому что забыл написать rep movsw
4. Нафига подряд 2 установки курсора? Первую я выбросил.
5. А от работы со стеком я просто обалдел! Мало того, что навтыкал везде pusha/popa, так еще и сам сохраняешь регистры ES и DS. А нафига? Или не доверяешь pusha? Он их тоже сохраняет!
6. Адрес 0B900h:0 тоже самое, что и 0B800h:1000h. Так что постоянно менять сегментные регистры не нужно.
Моя прога тоже не эталон, но на скорую руку сойдет.
Приложение:
Ответ отправлен: 30.08.2002, 17:43
Отправитель: Ayl
Отвечает Dron
Здравствуйте, R@ptor!
А не проще ли тебе просто переключиться на вторую страницу экрана и вывести строку?
По поводу ошибки...
могу предположить...
попробуй Pos_cursor поставить в квадратных скобках...
или не знаю что еще может быть...
Ответ отправлен: 30.08.2002, 15:32
Отправитель: Dron
Отвечает Portnov
Добрый день, R@ptor!
Насколько я понимаю, Tasm'у хочется word ptr Pos_cursor. Попробуйте так, т.е. не mov dx,pos_cursor, a mov dx,word ptr Pos_cursor.
Ответ отправлен: 31.08.2002, 08:26
Отправитель: Portnov
Отвечает ARDoS
Доброе время суток, R@ptor!
Сделай tasm'ом 2 прохода: tasm /m2 prg.asm, и всё заработает.
Ответ отправлен: 31.08.2002, 12:48
Отправитель: ARDoS
Вопрос № 1140 |
Всем привет!
Вопрос конечно не по адресу, но всё же:
Подскажите плиз где взять электронную версию по программированию на ассемблере Рудакова или Зубкова.
А то я переехал в Белорусию, а тут не в одном магазине не найти(даже на ярмарке книг нет).
Вопрос отправлен: 30.08.2002, 15:29
Отправитель: R@ptor (Spinosaur@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Byter
Добрый день, R@ptor!
ЗУБКОВА НЕТ В ЭЛЕКТРОННОМ ВИДЕ!!!!!!!!!!!!!!!!!!!!!!!
Ответ отправлен: 30.08.2002, 16:41
Отправитель: Byter
Вопрос № 1141 |
Приветствую Вас господа эксперты!
Подскажите как создать с помощью TASM такой exe файл который бы можно было отладить с помощь SoftICE.
И второй вопрос, с помощью какой команды можно перемещаться
по области в SoftICE дизассемблированных команд процессора
когда исследуешь просто запущенную программу, или как ее найти.
Вопрос отправлен: 30.08.2002, 15:48
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, Александр!
Если тасм сможет создавать объект с форматом CV (CodeView) то можно и в айс запихнуть, ищи ключи в компиляторе. Хотя я сомневаюсь, что это возможно.
Перемещаться - F8, F10, F11, F12
Ответ отправлен: 30.08.2002, 16:35
Отправитель: masquer
Вопрос № 1142 |
Здравствуйте уважаемые эксперты!
Насколько я знаю, разновидностей языков ассемблера много.
А что вы можете сказать про Ассемблер a86? Стоит ли начинать обучение программированию на ассемблере с него или нет?
Заранее благодарю.
Александр.
Приложение:
Вопрос отправлен: 30.08.2002, 16:16
Отправитель: Alexander
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Добрый день, Alexander!
Ты имел ввиду компиляторы наверно... A86 - это не язык, а компиллятор, а начинать с него обучение очень даже стоит - IMHO это самый лучший на сегодня
Ответ отправлен: 30.08.2002, 19:04
Отправитель: Broken Sword
Отвечает masquer
Здравствуйте, Alexander!
Из языков я бы вибирал masm, либо fasm. Я на масм остановился. Все остальное мне не нравится (это, естественно, ИМХО).
Ответ отправлен: 30.08.2002, 16:49
Отправитель: masquer
Отвечает kvINT
Здравствуйте, Alexander!
Здравствуйте, Alexander!
Начинать можно с любого, я в свое время познакомился с ассемблером Z-80 (Спектрум). Потом его успешно забыл, но когда принялся за ассемблер вновь, старые знания пригодились. Но все же, имхо, изучать какой-то специализированный асм (извини, о а86 ничего не знаю, но приходилось разбирать команды ассемблера для PIC-процессоров, так они от tasm'а или masm'а отстоят гораздо дальше, чем Z80, после него перейти к ним было бы гораздо сложнее) только потому, что по нему имеется книжка, по-моему нецелесообразно. Повторюсь, я не знаю, насколько сильно он отличается, но если сильно, у тебя будут проблемы хотя бы здесь, в рассылке, мало кто будет тебе отвечать. В общем посмотри бегло хотя бы какие там мнемоники используются, насколько они совпадают с tasm'овскими и решей сам. Может, кто из экспертов с ним имел дело и ответит поконкретнее.
Ответ отправлен: 01.09.2002, 17:55
Отправитель: kvINT
Отвечает Portnov
Приветствую Вас, Alexander!
a86 — хороший ассемблер, но не бесплатный, и если вы не заплатите, то 32-битный код писать не сможете — только DOS.
Это выдержка из руководства по Nasm.
Вообще, насколько я знаком с a86, ассемблер нормальный. Но одна "тонкость": ужасный синтаксис. Перед именами регистров там надо ставить %, синтаксис команды вообще перевернут: там надо не mnemonic dest,src, a mnemonic src,dest. Я бы не советовал начинать изучать асм (тем паче интелловский) с этого ассемблера. Для начала, я думаю, вполне сойдут Tasm/masm, а для постоянной работы - nasm, он дает более полный контроль над генерируемым кодом и поддерживает все инструкции, в т.ч. и jmp xxxx:yyyy, jmp xxxxh.
С уважением, Portnov.
Ответ отправлен: 31.08.2002, 08:35
Отправитель: Portnov
Вопрос № 1143 |
Уважаемые эксперты! Столкнулся с проблемой. Хотел бы выводить BMP'шки с прозрачным фоном. Т.е. в BMP'шке есть какой-то цвет, допустим фиолетовый. Вот и надо вывести объект с пропуском этого цвета. Сам написал процедуру, но она медленно выводит (для маленьких объектов она подойдет, но для больших, медленова-то будет). Может есть какие-то стандартные процедуры у Винды, которые позволяют это делать быстрее? MSDN у меня нет! Поэтому и такие вопросы.
Вопрос отправлен: 30.08.2002, 16:41
Отправитель: Андрей (assing@glazov.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Артём Шегеда
Здравствуйте, Андрей!
Полагаю, стоит использовать функцию MaskBlt, о которой можешь узнать на MSDN. Но для её правильной работы кроме самого bitmap нужно создать монохромную маску.
Ответ отправлен: 30.08.2002, 19:28
Отправитель: Артём Шегеда
Отвечает Gibbel
Приветствую Вас, Андрей!
http://rsdn.ru/summary/?257
Ответ отправлен: 31.08.2002, 14:01
Отправитель: Gibbel
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (41) C / C++ (31) Perl (11) Delphi (16) Pascal (26) Basic / VBA (10) Java / JavaScript (13) PHP (11) MySQL / MSSQL (12) |
Пользователю Windows 95/98/Me (43) Windows NT/2000/XP (30) "Железо" (39) Поиск информации (15) |
Администратору Windows NT/2000/XP (14) Linux / Unix (17) |
Юристу Гражданское право (10) Семейное право (7) Трудовое право (9) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||