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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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)

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




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное