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

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


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

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

Выпуск N 109

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

Дата выхода: 2001-10-02


Вопрос №1074

as far as i know from C++ the default base address for
.exe module is 0x00400000 in the address space of the process created for this exe module.
so the question is why i need to wright
org 100h
and not
org 400000h

Ответ

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

У меня такое впечатление, что вы немного не понимаете разницу между exe и com программами. При написании программы в формате com вы должны ВСЕГДА указывать org 100h, т.е. резервировать 256 байт памяти для PSP. COM-формат представляет собой дамп памяти размером не более 1 сегмента (64К) и его выполнение всегда начинается с адреса cs:100h.

EXE-файл немного сложнее. В его начале существует таблица привязки адресов, а кроме того записывается точка входа программы (cs:ip). Поэтому точка входа в exe-программе может быть любой. И ее размер не ограничивается 64К. Также при написании программы в exe-формате вы можете использовать несколько сегментов для данных, кода, стека и т.п. Можете использовать предкомпилированные библиотеки в виде obj-файлов. При выполнении операции линковки линковщик сам определит адрес точки входа и запишет его в заголовок exe-файла.

Кстати, при написании exe-файла обычно используется директива org 0.


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

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

Вопрос №1076

после компоновки с tlink.exe программа создает MAP File зачем он ???

без него и так все работает .

Ответ

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

Уберите ключ /m - и этого файла не будет. MAP-файл нужен при отладке для контроля размещения меток, сегментов и т.п. Иногда полезен.


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

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

Вопрос №1077

MANY BIG thanks to Orlando for trying to help me.
but my link.exe don't have options /x and /t
and even \x \t
I use versions 5.12.8181 and 5.12.8078 of link.exe
the exact error is:

C:\masm32\BIN>link \x \t my.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
LINK : fatal error LNK1181: cannot open input file "\x.obj"


thats becouse he thinks the \x is the name of object file
or



C:\masm32\BIN>link /x /t my.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : warning LNK4044: unrecognized option "x"; ignored
LINK : warning LNK4044: unrecognized option "t"; ignored
my.obj : fatal error LNK1190: invalid fixup found, type 0x0001


if you have link.exe with options \x \t I will be glad to have it.

Ответ

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

Ну, эксперт Orlando скорее всего имел в виду компилятор Borland'а tasm с линковщиком tlink. Как раз tlink поддерживает опцию /t для формирования com-файла. Какой ключ у link из комплекта MASM я не помню, но Вы всегда можете вызвать подсказку по ключам. Попробуйте запустить link без параметров или попробовать сочетания ключей (в качестве признака ключа попробуйте "/", "\", "-" или без префикса):
?
h
help

А еще лучше перейдите на программы tasm и tlink.


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

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

Вопрос №1081

Чем call отличается от jmp?

Ответ

Здравствуйте, Евгений!

Если Вы знаете хотя бы 1 язык высокого уровня, то разница такая же, как между вызовом процедуры и безусловным переходом. На примере Паскаля:

begin
My_proc; { аналогично call, управление вернется на следующую команду }
goto Label_1; { передача управления на метку Label_1, аналог jmp }
a:=1; { выполнено не будет }
Label_1:
;
end;

А если рассказывать в терминах внутренностей процессора, то разница выглядит так.

1. Команда jmp.
Короткий переход (jmp short label) - к указателю команд (регистр ip) прибавляется смещение, заданное в коде команды (от -128 до +127) - 1 байт знаковый. Кстати, все условные переходы выполняются именно так.
Ближний переход (jmp near label) - в регистр ip заносится адрес метки label. Переход в пределах сегмента.
Дальний переход (jmp far label) - изменяются регистр ip и сегментный регистр cs. Переход может быть на любой адрес в пределах адресуемой памяти (1Мб)

2. Команда call.
Может быть только 2-х видов - ближняя и дальняя. Отличается тем, что в стеке сохраняется адрес возврата, а среди команд, куда передается управление, желательно встретить команду ret :)
Ближний вызов может быть представлен следующим образом:
push ip
jmp near label

Дальний:
push cs
push ip
jmp far label


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

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

Вопрос №1081

Чем call отличается от jmp?

Ответ

Здравствуйте, Евгений!

Ну и вопросики...
jmp меняет ip, возможно cs. больше ничего.

call меняет ip, возможно cs, помимо этого сохраняет в стеке ip, возможно cs следующей инструкции, для того чтобы в дальнейшем можно было осуществить возврат командой ret или retf.


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

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

Вопрос №1090

Уважаемые эксперты.
Где можно найти информацию о том, за сколько тактов выполняется та или иная команда процессора?
Заранее благодарю.

Ответ

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

Лучше всего конечно пройтись по первоисточникам... (www.intel.com, www.amd.com, www.ciryx.com...)

Но есть способ еще лучше! :))

www.x86.org
Там есть про все процессоры...

есть способ проще. :)
www.chat.ru/~phg

Достаточно актуальная информация.


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

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

Вопрос №1092

Привет всем старожилам нашего ФАКА!
Присоединяюсь к раздумьям Орландо... (#1085)
Надо придумать что-нибудь посущественней... И, чтобы не влом было голосовать и не слишком навязчиво ... Над идеей надо подумать... Мне кажется, это должно быть что-то вроде ежемесячной формы, высылаемой сабскрайбом, в которой будут указаны все вопросы и ответы на них подписчика. Там же и "обаллить" экспертов.
А зачем нужно указывать город??? И вот вопросец... Кто-нибудь получал "награду" за заветные 150 баллов???
Ладненько, поменьше спама и глюков всем экспертам (мне в том числе)... :--))))

Ответ

Здравствуйте, Эксперт Anvar!

Олег сейчас работает в некотором отдалении от интернета...
Возможно дома скоро наладит... надо ему звякнуть, узнать как дела. :)
По поводу баллов... он что-то хотел сделать... чтобы помимо ответов можно было бы писать дополнения, замечания, чтобы вопрошающие могли оценить ответ эксперта, именно со своей точки зрения. типа помогло, не помогло, что за отстой... и тд.. я думаю это все в скором времени появится.

А по поводу вознаграждений... я точно знаю что один эксперт по законодательству уже получал вознаграждение.

ЗЫ: а у меня уже 303 балла! :)))


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

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

Вопрос №1094

У меня монитор LG Studioworks 520si.В Win98 он определяется как дисплей StudioWorks520si,но в Win2000 он как Plug and Play.Ни каких драйверов от монитора нет,у меня.В интернете находил драйвер но когда открывал его то там был цветовой профиль,а толку то от него.Что делать.И что такое Build(билд)

Ответ

Здравствуйте, Max!
в Вынь2000 устанавливать драйвер монитора необязательно. Ты можешь подключать к компу любой монитор, лишь бы разрешалово и частота на выходили за рамки возможностей подключаемого...
Полазь на сайте у ЛГ, если там нету - значит не судьба. :)


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

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

Вопрос №1090

Уважаемые эксперты.
Где можно найти информацию о том, за сколько тактов выполняется та или иная команда процессора?
Заранее благодарю.

Ответ

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

Ну что тут сказать... По реальному режиму вплоть до 286 есть у Джордейна. Но, как мне кажется, в современных компах точно сказать, за сколько тактов будет выполнена команда, практически невозможно. Особенно в защищенном режиме. Слишком много разных факторов должно учитываться. Единственное, на что можно точно положиться - это на взаимоотношения разных команд друг с другом. Например, mul всегда будет медленнее, нежели add.


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

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

Вопрос №1086

Здравствуйте эксперты.
Скачал Detonator v.21.81 под Win98 но не могу его установить,пишет "The contents of this file cannot be unpacked.The executable you attempting to run has been corrupted.Please obtain another copy of the file,verify its integrity,and try again".Помогите.Что делать.

Ответ

Здравствуйте, Max!
Твой детонатор криво скачался, повтори попытку и подучи английский


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

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

Вопрос №1088

Здравствуйте, уважаемые эксперты!
Очередная странность W2K. Переустановка на обкатанный ПК
(GygaByte KX133A, Duron 800, 256Mb,WD 40Gb, GeForce, InelliMouse Explorer, sound -Quadro ForteMedia). До этого
W2K с полгода стоял и работал, переустановка из-за замены
винта. С недели 2 , пока оснащал и настраивал, все было без особых замечаний, но с какого-то момента при открытии просто
какой-то папки с файлами щелчком по ярлыку, через проводник или через какой-нибудь файл-менеджер машина мгновенно улетает в Reset. Софт - MsOffice XP, Касперский, NU 2001, TweakUI, драйвера железа. Эффект как у Администратора так и у пользователя. Выгрузка и отключение всего что выгружается и отключается, не влияет. Название папки и ее содержимое то же. Иногда может и открыться, но вылететь на втором - третьем подкаталоге. Что любопытно - те же папки нормально открываются из приложений Офиса (Word or Exel) через (Файл - Открыть), но не всегда это подходит.
В общем то понятно, что лечится это переустановкой системы, но:
1. Просто интересно что бы это могло быть и как такое можно
реализовать во вроде бы защищенной от неприятностей системе.
2. Обидно заново все перегружать и настраивать. Вдруг таки можно вылечить. (Все что могли Касперский и Нортон, они сделали, но это оказалось не по их части).
Если все же переустанавливать, то подскажите, как корректно перенести учетную запись сервера новостей из Outlook Express - где это все лежит знаю, но что-то в прошлый раз не удалось новоустановленный Экспресс работать со старой записью.
И немного о другом. К вопросу 992 о вылете из системы из-за нехватки ресурсов. Не все так просто. На некоторых машинах сталкивался с таким и подобными явлениями. Какая-то хитрая комбинация взаимодействия железа и Эксплорера с линейкой задач Офиса 2000(именно линейкой задач именно Офиса 2000). Лечится только переустановкой с дальнейшим линейки неприменением. От версии Окон не зависит. Усугубляется применением такой штуки как Netsonic. В сети об этом было, но без детализации механизма.


Ответ

Здравствуйте, Poul_N!
Могет я и не прав, но возможно твои глюки связаны с багом в чипсете. Ты тут пишешь что винт поменял, и наверно не на фигню какую, а на ATA 100, а KX133A глючит с ATA 100, и что самое смешное, лечится это тем, что все устройства ATA желательно вешать на один шлейф. AMD признала свою ошибку, но устраняется она путем перепрашивки BIOS, хотя и это не всем помогает. Когда я взял мамку на этом чипсете, то при включении винт страшно тормозил, а винда сказала что будет устанавливаться 480 минут, прикинь да :)
Да, а после того как без CD я поставил WINDOWS с винта, потом поставил на место CD, комп позволял копировать файлы только в корень дисков, а при попытке копирнуть в папку, посылал и перезагружался. Но когда я повесил CD и винт на 1 шлейф то все стало нормально :) Уже гдето полгода работаю, и не каких проблем:)

Так что перепрашивка мамки или перевеска винтов может конкретно помочь.


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

Экспертная группа: Дизассемблеры

Вопрос №1092

Привет всем старожилам нашего ФАКА!
Присоединяюсь к раздумьям Орландо... (#1085)
Надо придумать что-нибудь посущественней... И, чтобы не влом было голосовать и не слишком навязчиво ... Над идеей надо подумать... Мне кажется, это должно быть что-то вроде ежемесячной формы, высылаемой сабскрайбом, в которой будут указаны все вопросы и ответы на них подписчика. Там же и "обаллить" экспертов.
А зачем нужно указывать город??? И вот вопросец... Кто-нибудь получал "награду" за заветные 150 баллов???
Ладненько, поменьше спама и глюков всем экспертам (мне в том числе)... :--))))

Ответ

Здравствуйте, Эксперт Anvar!
Привет Старожилам...
Всякий либерализм для постоянной обязанности губителен... Недельку поотвечеют учашиеся, а потом будут ставить только спецы, и то если ответ доведёт их до экстаза. Вот если бы блокировали для задавания вопросов e-mail вопрошавшего, не проставившего оценки наглым образом, тогда бы ладно. Еще хорошо бы учредить новую подгруппу и еженедельно выкидывать экспертам в ней вопросы/ответы/оценки. Уж они-то за свои ответы грудью постоят.

Приложение:


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

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

Вопрос №1074

as far as i know from C++ the default base address for
.exe module is 0x00400000 in the address space of the process created for this exe module.
so the question is why i need to wright
org 100h
and not
org 400000h

Ответ

Здравствуйте, ilya!
org 100h - это для досовских *.com-файлов.Под PSP.В СИ все компилируется практически также, только сложнее. А для любого exe стартовое смещение далеко не постоянное и зависит от кол-ва сегментов и прочего в заголовке.
P.S.dk - это что за домен?


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

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

Вопрос №1097

Эксперту Painbringer?! (К вопросу №1072)
Очень остроумно....

Скачать драйвер с инета видно не судьба, не нашел я его там. Узнавал у знакомых - помочь не могут. Заходил на фирменный сайт, искал информацию через поисковики, видел только то, что не хвалят модем Motorola @World SURFR ext. 56,6!. Но мне кажется, что модем не плохой если о нем знать по-больше.
И еще, если бы не было проблем или на все было бы наплевать, не подписывался бы на рассылки.

Ответ

Доброе время суток Yury!


Если Вам модем нужен только как МОДЕМ, то установите на него драйвериз списка изготовителей "[Standard Modem Types]" а модель поставьте например "Standard 57600 bps Modem" если Ваш провайдер поддерживает такую скорость соединения. Ну а если не поддерживаетто смело ставьте модель "Standard 33600 bps Modem" и наслаждайтесь. Единственное знание которое от Вас может потребоваться - это номер порта на котором висит модем. Обычно это пара вариантов, либо COM1 либо COM2(если у вас только в BIOS не стоят "экзотические" настройки портов).

Ну а если в модеме есть что то вроде факса или войса, то тоды без дров не обойтись.


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

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

Вопрос №1099

what is the psp
That is taking 256 bytes of the .com's file memory?

Ответ

Здравствуйте, ilya!
Ну второй раз на этот вопрос отвечаю и опять предлагаю инфу из Зубкова!

Приложение:


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

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

Вопрос №1098

Привет Вам ПРОФИ!!!
Я полный Лам,но тоже хочу учиться!Где можно
достать по ассемблеру азы:типа как писать,что
писать,список прерываний и тд?В общем мне нужны основы!!!
Напишите плз.

Ответ

Здравствуйте, Vovan!
Скачай с архива выпуски по программированию на асме - с сайта www.Kalashnikoff.ru
Купи книгу какую-нить! А какую см. прошлые рассылки!

ЗЫ: Как на счет провести конкурс на самый часто задаваемый вопрос! По-моему этот будет на первом месте!


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

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

Вопрос №1074

as far as i know from C++ the default base address for
.exe module is 0x00400000 in the address space of the process created for this exe module.
so the question is why i need to wright
org 100h
and not
org 400000h

Ответ

Здравствуйте, ilya!
YO! в смысле панки хой! 400000h - это вообще больше размера сегмента.
З.Ы. Ваш английский меня напрягает.


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

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

Вопрос №1085

Здравствуйте!
Мой вопрос, собственно, не вопрос, а предложение, поэтому
я направил его первой попавшейся подгруппе.
Во-первых, предлагаю спрашивающим оценивать полученные ответы. Для этого в письмо с ответом нужно всего-навсего добавить форму, где можно будет указать, какой степени полезности оказался ответ эксперта. Эта мера поможет избежать зачисления очков липовым экспертам и выявит самых-самых.
Во-вторых, неплохо бы указывать город, в котором находится эксперт.

С уважением, Константин.

Ответ

Здравствуйте, Константин!
Как и все подобные в принципе неплохие предложения упирается в одно - а кто этим будет заниматься? Люди получившие удовлетворяющий их ответ? - Сомневаюсь (типа в лом будет). Люди получившие неудовлетворяющий их ответ? - Тогда все эксперты будут в отстое. Эксперты будут оценивать друг друга? - На фиг им это надо (да и вообще, чтобы меня всякие типа Michael'a оценивали? Хрена с два). Выборная кондидатура? - Ну был у нас уже прецедент с модераторами. Поболтали поболтали, да и положили на это дело, как говорит наш физрук, орган.


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

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

Вопрос №1096

Эксперту Painbringer?! (К вопросу №1072)
Очень остроумно....

Скачать драйвер с инета видно не судьба, не нашел я его там. Узнавал у знакомых - помочь не могут. Заходил на фирменный сайт, искал информацию через поисковики, видел только то, что не хвалят модем Motorola @World SURFR ext. 56,6!. Но мне кажется, что модем не плохой если о нем знать по-больше.
И еще, если бы не было проблем или на все было бы наплевать, не подписывался бы на рассылки.

Ответ

Здравствуйте, Yury!
Ах простите-простите...


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

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

Вопрос №1098

Привет Вам ПРОФИ!!!
Я полный Лам,но тоже хочу учиться!Где можно
достать по ассемблеру азы:типа как писать,что
писать,список прерываний и тд?В общем мне нужны основы!!!
Напишите плз.

Ответ

Здравствуйте, Vovan!
А собственно на калашникове усё есть! (www.kalashnikoff.ru). Из литературы читай, Зубкова, Юрова, Свана.


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

Экспертная группа: Общие вопросы по программированию на Ассемблере под 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

В избранное