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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 077

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-08-30


Вопрос №694

Уважаемые эксперты подскажите возможно ли в Винде 98 запаролировать папку, чтобы ни на сетевом, ни на локальном уровне в нее без пароля войти было невозможно.

Ответ

Здравствуйте, Dron!
Как говориться всё возможно!
Вообще, если уже установлена локальная сеть, то у каждой папки в свойствах есть закладка "Доступ", если нет то по идеи это все устанавливается в сетевом окружении, да и теже пароли будут действовать и для Нета, но если кто залезет через интернет я сомневаюсь, что для него "виндовский" пароль будет проблема, так что мое мнение пользоваться прогами сторонних производителей!

Да, и при ответе на вопрос №689, я допустил роковую ошибку по поводу mov al,1 , просто нельзя доверяться одной книги, какая бы классная она не была, и в этом меня убедил BrokenSword.. Так что извиняюсь перед Василем и всеми экспертами!

Кстати, может уважаемому Dron'у нужна небольшая помощь в написании операционной системы, думаю не один я хотел бы помоч..

С уважением, Orlando!


Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 49

Экспертная группа: Пользовательская работа с Windows

Вопрос №699

Здравствуйте Уважаемые Эксперты.
У меня такой вопрос:
Почему не работает строка
mov ax,$
?

Ответ

Здравствуйте, Vadim_S!

Цитирую из руководства по TASM.

$
-----------------------------------------------------------------

Назначение: Операнд счетчика положения.

Замечания: Этот специальный символ представляет счетчик по-
ложения. Счетчик положение - это текущее смещение
в текущем сегменте в процессе ассемблирования.
(Этот операнд имеет тот же атрибут, что и метка
near "ближняя").

Счетчик положения представляет собой адрес, кото-
рый увеличивается так, что соответствует текущему
адресу так, как если бы каждый оператор в исход- ном файле уже оттранслировался.

Пример: helрMessage DB 'This is helр for the рrogram'
helрlength = $ - helрMessage

После ассемблирования этих двух строк идентифика-
тор helрlength будет равен длине данной строки.



Отправил эксперт: Василий
Эксперт отправил ответов (всего): 29

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №691

Здравствуйте!
Экспертам.
После очистки корзины не запускаются программы
через ярлыки рабочего стола.
Выводится сообщение: "Не удается найти SirC32.exe.
Эта программа необходима для открытия файлов типа
Приложение"
Перезапускаю комп и все опять работает.
Еще такая штука: когда запускал DrWeb, то комп
завис, а в строке проверки находилось
C:\RECYCLED\SirC32.exe
В корзине смотрел там его нет : - )

С уважением ...

Ответ

Здравствуйте, Alex12!
Мда... что я ещё могу сказать , ВИрус однако подхватили, причём такой что если его удалить (файл SirC32.exe) всё-равно не поможет ..
придётся систему переустанавливать.. Это новый вирус распространяющийся через электронную почту. Только новые антивирусы могут его обнаружить .Он регистрирует расширения файлов EXE,COM и невозможно удалить Тип расширения или изменить.


Отправил эксперт: klimenko (http://club.lsk.kz/myfoto/12.JPG - Фото)
Эксперт отправил ответов (всего): 3

Экспертная группа: Пользовательская работа с Windows

Вопрос №699

Здравствуйте Уважаемые Эксперты.
У меня такой вопрос:
Почему не работает строка
mov ax,$
?

Ответ

Здравствуйте, Vadim_S!
Я так понимаю, что ты хочешь получить в ax текущий адрес, поступай лучше так:
call nex
jmp nextx
nex:
pop ax
nextx:
А не работает наверное потому, что это предопределенная метка, а не переменная или значение..., хотяяяя точняком трудно сказать.., ну вот НЕЛЬЗЯ и ВСЕЕЕЕЕЕЕ!!


Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 50

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №692

ОПНЬС ОНЛНВЭ ПЮГНАПЮРЭЯЪ ЙЮЙ ПЮАНРЮРЭ Я tlink.exe ОПХБЕЯРХ ОПХЛЕП ЙЮЙ ХЛ ЯНГДЮБЮРЭ ТЮИКШ .*inc;+.lib ЛНФЕР ЕЯРЭ ЙЮЙЮЪ ДНЙЮ МЮ ПСЯЯЙНЛ

Ответ

Здравствуйте, igor!

файлы .inc создаются в текстовом редакторе, а файлы .lib - создаются совсем не tlink'ом... а tlib'ом.

tlink создает только файлы с расширением .exe или .com или .sys... ну выполняемые файлы короче.


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 82

Экспертная группа: Работа с MASM/TASM

Вопрос №699

Здравствуйте Уважаемые Эксперты.
У меня такой вопрос:
Почему не работает строка
mov ax,$
?

Ответ

Здравствуйте, Vadim_S!

Почему же не работает??? очень даже работает.

mov ax, $ b8 00 01

Никаких проблем. :))

Что ты хочешь получить этой комбинацией???


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 83

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №700

Здраствуйте эксперты!
В 3-м выпуске рассылки Алег показал как переводить шестнадцатиичное число в десятичное.
Как сделать наобарот?
Без использования данной фо-лы:
128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 0
8 4 2 1 8 4 2 1

Ответ

Здравствуйте, Alex!

А делается это так. Авось, поймешь на примере. Переведем 64530 в 16-ичную систему счисления.

64530 ¦ 16
------+-----
4033 ¦ ¦ 2 ¦
252 ¦ ¦ 1 ¦
+-----+-+ ¦
¦ 15 ¦ 12 ¦
+-----------+

т.е. 64530 в 10-ичной есть FC12 в 16-ичной.

Ну то есть, делим число на 16, целое записываем в таблице слева, остаток - справа.
1) 64530 делим на 16. Целое - 4033, остаток - 2
2) 4033 делим на 16. Целое - 252, остаток - 1
3) 252 делим на 16. Целое - 15 (т.е. F), остаток - 12 (т.е. C).

15 уже не делим на 16, т.к. 15<16. Ну, а результат записываем так:
15 12 1 2
F C 1 2


Отправил эксперт: Василий
Эксперт отправил ответов (всего): 30

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №700

Здраствуйте эксперты!
В 3-м выпуске рассылки Алег показал как переводить шестнадцатиичное число в десятичное.
Как сделать наобарот?
Без использования данной фо-лы:
128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 0
8 4 2 1 8 4 2 1

Ответ

на калькуляторе (ну не будешь же ты в самом деле в столбик все это делить и вычитать!)


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 108

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №702

По поводу комбинации f0 0f c7 c8

Дешифруется она так:

f0 lock
0f c7 c8 cmpxchg8b ax

На второй команде остановлюсь поподробнее.

Эта команда сама по себе специфична только для процов от пентиум и старше. В качестве операнда должна иметь указатель на 64 бита памяти. это определяется последним байтом.

0f c7 это собственно код команды
с8 этот байт носит название Mod R/M, то есть этот байт определяет адресацию через регистр или память.

формат у него таков:
mod 2 бита (11)
reg/коп 3 бита (001)
r/m 3 бита... (000)

Эта команда в случае если mod == 11b (регистр, а должна быть память) должна вызывать int 6 (недопустимая команда).

Но проблема в том что эта команда по ходу действительно выполняется, но у процессора возникают проблемы с адресами и вместо int 6 может вызваться int 0eh (страничное нарушение). Во всяком случае в Линуксе с этим борятся именно там.

Ответ

Здравствуйте, Dron!
Все понял, э-э-э-э ну я пощел ??


Отправил эксперт: Michael
Эксперт отправил ответов (всего): 19

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №686

Здравствуйте, уважаемые эксперты!
Проблема следующая – купили винт Maxtor 40-гиговый, БИОС не видит больше 32-х гигов. В мануале к винту написано, что такое может быть, если БИОС старый. Как заставить БИОС «увидеть» оставшиеся 8 гигов? Какой программой воспользоваться, где взять обновленный БИОС?

M/b Chaintech 5TTL, September 1997
Chipset Intel 82430TX

Буду рад квалифицированной помощи!

Ответ

Здравствуйте, Ворушин Роман!
Прошивку БИОС нужно искать на сайте производителя материнской платы, например ASUS нужно искать на сайте WWW.ASUS.COM (или что-то вроде)
если не знаешь название сайта, то воспользуйся сайтом drivers.ru где все фирмы представленны в алфавитном порядке :)


Отправил эксперт: VD (www.chat.ru/~vdragon_pas/index.htm - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 49

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №669

Я наверно седня уже надоел, но вот еще вопрос, как поправить частоту обновления экрана програмно.
Ответы типа "Щелкни правой кнопкой по раб.столу..." просьба не присылать.
Спасибо.

Ответ

Здравствуйте, Евгений!
Через регистры таймера видеокарты, у каждой они свои ...


Отправил эксперт: VD (www.chat.ru/~vdragon_pas/index.htm - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 50

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №708

Хочу написать прогу для работы с дискетами и возникл%E

Ответ


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 110

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №705

Здравстуйте!
Объясните почему не получаеться(из виндового приложения) обратиться к ячейки с адресом 0000:0417h?
Расскажите как это сделать!!!! Или в Windows есть специальная функция, которая "получает" значение индикатора клавиатуры?????
Я писал следующий код, но Винда ругалась :(
1 вариант
mov byte ptr al,0000:[0417h]
2 вариант
mov edx,00000417h
mov byte ptr al,[edx]

Ответ

Здравствуйте, Дмитрий!
mov byte ptr al,0000:[0417h] - ты хоть сам понял че написал то???? аl и так байт че б ты там ему не говорил и не показывал, вообщем, промахнулся ты с byte ptr!


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 111

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №703

Как мне в асмовской проце определить локальные переменные???
Чтобы они могли совпадать с переменноме в главной проге и при этом не былоб ошибок при компиляции???

Ответ

Здравствуйте, Дмитрий!
А у тебя че, проблемы с придумыванием имен? Вообще локальные переменные храни в стеке как [bp+1] [bp+2] и т.д.


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 74

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №708

Хочу написать прогу для работы с дискетами и возникло
несколько вопросов.

1)На пятидюймовой дискете есть отверстие для отсчета
секторов на дорожке,а на трехдюймовой его нету.Тогда
откуда отсчитываются сектора?
2)Очевидно, что сектора на первой и последней дорожке
очень отличаются по длинне,так как количество секторов
на всех дорожках одинаково,а длинна дорожек переменная.
Тогда как получается, что объем всех секторов (512 байт)
одинаковый, если плотность записи постоянная?
3)Где можно найти подробную информацию по формату дискет?
(формат GPL промежутков,маркеров итд.)

Ответ

Здравствуйте, Damiano!
Ну кто тебе сказал что плотность записи постоянная?! Постоянно число секторов на дорожку. А отверстие в трехдюймовых дискитах в железяке.


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 75

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №708

Хочу написать прогу для работы с дискетами и возникло
несколько вопросов.

1)На пятидюймовой дискете есть отверстие для отсчета
секторов на дорожке,а на трехдюймовой его нету.Тогда
откуда отсчитываются сектора?
2)Очевидно, что сектора на первой и последней дорожке
очень отличаются по длинне,так как количество секторов
на всех дорожках одинаково,а длинна дорожек переменная.
Тогда как получается, что объем всех секторов (512 байт)
одинаковый, если плотность записи постоянная?
3)Где можно найти подробную информацию по формату дискет?
(формат GPL промежутков,маркеров итд.)

Ответ

Здравствуйте, Damiano!
Ну кто тебе сказал что плотность записи постоянная?! Постоянно число секторов на дорожку. А отверстие в трехдюймовых дискитах в железяке.


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 76

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №686

Здравствуйте, уважаемые эксперты!
Проблема следующая – купили винт Maxtor 40-гиговый, БИОС не видит больше 32-х гигов. В мануале к винту написано, что такое может быть, если БИОС старый. Как заставить БИОС «увидеть» оставшиеся 8 гигов? Какой программой воспользоваться, где взять обновленный БИОС?

M/b Chaintech 5TTL, September 1997
Chipset Intel 82430TX

Буду рад квалифицированной помощи!

Ответ

Здравствуйте, Ворушин Роман!
Один совет прежде чем начинать программировать BIOS позвони в сервисный центр и спроси сколько стоит перепрограммировать BIOS, а так же узнай сколько стоит восстановление испорченного BIOSа.

В общих чертах обновление BIOS происходит следующим образом.

1. Посети сайтфирмы-производителя твоей материнской платы, отыщи раздел BIOS Update, внимательно изучи инструкцию и скачай себе последнюю версию BIOS для своей системной платы (будь внимателен - в точности твоей:)), а также специальную программу для перепрограммирования флэш-памяти.
2. Операция обновления старых версий BIOS осуществляется, из-под DOS, поэтому придется создать загрузочную дискету, тщательно проверить ее на отсутствие bad-блоков, переписать туда все необходимые файлы.
3. . Перед загрузкой с системной дискеты зайди в BIOS (в подменю Advanced Chipset Features) и запретить копирование в SDRAM (System BIOS Cacheable - Disable, Video BIOS Cacheable - Disable), а также выбрать из подменю Advanced BIOS Features загрузку системы с флоппи-диска А:.
4. Существуют различные варианты защиты BIOS от перепрограммирования. Это, во-первых, перемычка на плате, аппаратно запрещающая перепрограммирование флэш-памяти, а во-вторых, опция Flash Protect в настройках самого BIOS. Для записи новой версии BIOS необходимо найти и снять эти защиты (только не забудь вернуть их после завершения процесса - это может спасти от некоторых вирусов, уничтожающих BIOS!!!).
5. загрузись с дискеты, запусти программу перезаписи флэш-памяти и... Нет, сначала сохраните текущую версию BIOS (все такие программы, как правило, предлагают сохранить текущую версию), а затем уже обновляйте свой BIOS. Файлы Award BIOS, как правило, имеют расширение ".BIN или *.AWD.

Не забудьте при первом после перепрограммирования включении компьютера войти в настройки уже новой версии BIOS, для начала выбрать из меню Load SETUP Defaults и только затем, возможно, изменять какие-то параметры.
При неудачном обновлении системного BIOS компьютер не загрузится:(

Почитай компьютер пресс №8 за 2001 год стр.52 там более подробно рассписано.






Отправил эксперт: Viktor
Эксперт отправил ответов (всего): 3

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №709

Привет всем !
Не подскажите, возможно ли законетиться к ftp серверу под дос(под виндовз я еще не умею писать проги на асме) и отослать туда некоторый файл, если да, то как? Может кто писал уже такую прогу. Help me please.

Ответ

Уважаемый aeron! Извините, но это вопрос из серии "а напишите ка мне прогу!!!". Так не канает. Задавай конкретный вопрос, или напиши сам и спроси че непонятно, тока не как тот товарисч, который прислал 200 строк текста и вежливо попросил прокомментировать!!!
p.s. Уважаемые эээээ..... подписчики! Убедительная просьба всем еще раз ознакомиться с правилами задавания вопросов! (мне наверно с правилами русского языка... ;( )
p.p.s. почему все эксперты ответили, что mov ax,$ - нету, нельзя и вообще это бред??? ничего подобного! я ее тыкал и мыкал так и этак, и если перед $ указать размер регистра, то все получается:
mov ax,word ptr $
mov al,byte ptr $
ну и т.п., тока вот записывает оно в указанный регистр действительно полный бред... код команды вот этой mov и еще от ip 2 цифры (кароче текущие байты)


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 112

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №709

Привет всем !
Не подскажите, возможно ли законетиться к ftp серверу под дос(под виндовз я еще не умею писать проги на асме) и отослать туда некоторый файл, если да, то как? Может кто писал уже такую прогу. Help me please.

Ответ

Здравствуйте, aeron!

В DOS не возможно, стека TCP/IP там нет. Можно поставить под DOS
пакет, например PCTCP, а в этом пакете есть ftp клиент, значит сделать такую программу можно (теоретически). Но сложно.


Отправил эксперт: Bitman
Эксперт отправил ответов (всего): 1

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №703

Как мне в асмовской проце определить локальные переменные???
Чтобы они могли совпадать с переменноме в главной проге и при этом не былоб ошибок при компиляции???

Ответ

Здравствуйте, Дмитрий!
Используешь директиву LOCALS и локальные переменные начинаешь с префикса @@. Например:

LOCALS
mov ax, @@var
.
.
.

@@var DB 0


Отправил эксперт: Василий
Эксперт отправил ответов (всего): 31

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


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

В избранное