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

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


Служба Рассылок Subscribe.Ru

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

Выпуск N 114

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

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


Вопрос №1144

Здравствуйте.
Мой линкер (TLINK, кажется 3.0) при создании exe-файла выдает 'Program has no starting address', и ни одна программа не работает. Не подскажете, как задать начальный адрес (желательно как можно доступней, т. к. я только начал изучать сей язык).
Спасибо.

Ответ

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


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 176

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

Вопрос №1147

esp/sp (Stack Pointer register) — регистр указателя стека.
Содержит указатель вершины стека в текущем сегменте стека.
ebp/bp (Base Pointer register) — регистр указателя базы кадра стека.
Предназначен для организации произвольного доступа к данным внутри стека.
can you please show me the examole of using this registers.

Ответ

Здравствуйте, ilya!
Например есть процедура принимающая параметры через стек:

прога:
push 3
push 4
call sum
проседура:
sum proc
a equ [bp+6]
b equ [bp+4] ; 4 байта на ip (call сохраняет) и bp (я сохраняю)
c equ [bp-2] ; локальную переменную сотворим
push bp
mov bp,sp
.... теперь общаемя с параметрами например так
mov ax,a
add ax,b
mov c,ax
.... че то делается
pop bp ; восстановим bp
ret 6 ; удаляем параметры из стека
endp sum


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 177

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

Вопрос №1151

Здравствуйте!
Я только начинаю программировать на Ассемблере.
Подскажите какие книги почитать(название, автор)
Спасибо за внимание.

Ответ

Здравствуйте, Вадим!
еще один.......... Сющяй сюда:
1. Юров (или Юров, Хорошилов). Assempler.
2. Зубков "Assembler - язык неограниченных возможностей"


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 178

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

Вопрос №1148

esp/sp (Stack Pointer register) — регистр указателя стека.
Содержит указатель вершины стека в текущем сегменте стека.
ebp/bp (Base Pointer register) — регистр указателя базы кадра стека.
Предназначен для организации произвольного доступа к данным внутри стека.
can you please show me the examole of using this registers.

Ответ

Доброе время суток, ilya!
Регистры sp/esp и bp/ebp используюстся комплексно, и каждый из них имеет своё функциональное назначение. Регистр sp/esp всегда указывает на вершину стека, то есть содержит смещение, по которому в стек был занесен последний элемент. Если нам необходимо получить доступ к элементам не на вершине, а внутри стека - то для этого применяют регистр bp/ebp. Например типичным приёмом при входе в подпрограмму является передачи нужных параметров путем записи их в стек. Если подпрограмма тоже активно работет со стеком, то доступ к параметрам становится проблематичным. Выход здесь в том, что после записи нужных данных в стек сохранить адрес вершины стека в регистре bp/ebp, и в дальнейшем использовать его значение для доступа к переданным параметрам.


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

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

Вопрос №1154

Здравствуйте, уважаемые коллеги !
Хочу у Вас спросить совет. Дело в том, что у меня стоит винчестер от Fujitsu MPG3307AT 30GB . Ему сейчас где-то полгода, но он себя уже как то странно ведет: периодически случается следующее: винт тормозит, система висит секунд 5, винт разгоняется и дальше работает нормально. Скачал я прогу S.M.A.R.T. Monitor, которая мне сказала, что у меня уже была замена дефектного сектора из резервной области (Reallocated Secotor Count = 99 вместо 100).
На то что диск сыпется - не похоже, секторов плохих не появляется при проверке NDD из NU 2001. Взглянул я вчера на температуру внутри корпуса - она была 40C.
Думаю, может сектор этот появился из-за перегрева а эти тормоза винта - были термокалибровкой?
Сейчас принял кой-какие меры - температура держится в районе 33-34C. И винт пока вроде хорошо себя ведет. Так вот - стоит передо мной сейчас вопрос - сдать ли мне мой хард (гарантия до марта 2002 года) или все-таки маловероятно появление новых BAD секторов и не стоит этого делать? Является ли мой хард достаточно надежным чтоб я не волноваться за возможную потерю информации? Fujitsu - вроде хорошая фирма, я сменил 2 винта этой фирмы (не потому что они сыпались а потому что не хватало дисковой памяти мне. Хотелось больше :))) ) Эти 2 винта хорошо работали и сейчас работают у тех людей, которым я их продал. Они не жалуются. И вот только этот третий винчестер меня озадачил...
Заранее благодарен :)

Ответ

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

Скорее всего Вы правы. Что-то они недоделали. Если винт греется и делает reallocation (а это значит, что bad block появился, просто сам винт его перераспределил и на первый взгляд, из тест-программ типа Scandisk, ничего не заметно), его надо менять.


Отправил эксперт: Vasily (versusvsl.narod.ru - йОЖПТНБГЙПООЩК УБКФ + ОЕУЛПМШЛП РТПЕЛФПЧ)
Эксперт отправил ответов (всего): 1

Экспертная группа: нПДЕМЙ, ЧЙДЩ Й ФЙРЩ ЛПНРШАФЕТПЧ (hard)

Вопрос №1159

Моей подружке требуется написать клавиатурный резидент.
Как я понимаю надо заменить комманду обработки 9-го прерывания на свою. Как это сделать? (Не хватает базовых знаний, а мув туда сюда написать смогу)
То есть 2 вопроса: про резидент и про обработку прерывания.

Ответ

Здравствуйте, Reanimator! Слушай, де ты таких подружек то находишь?! Повезло! )
Вообще ты не совсем правильно понимаешь: нужно заменить не "команду обработки 9-го прерывания", а, собснно, весь обработчик. См. прогу и привет подружке )!

Приложение:


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

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

Вопрос №1158

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

1) Объястните почему при обращении к функции
GetKeyboardState при просмотре буффера
(256 байт), то ячейки которые отвечают за
"индикатор" (0х14 - CapsLock,
0x90 - NumLock & 0x91 - ScrollLock)
Содержат не то!!! т.е. при всех "выключенных"
диодах отображаеться(на выходе), что нажата NumLock
Хотя пример из которого это содрал работал нормально!!!!
2) Есть ли другой способ проверить "индикатор"
или установить его новые значения т.е. аналог функций
GetKeyboardState & SetKeyboardState
3) Почему-то этот фрагмент не работает под Windows9х? Хотя
я слышал, что можно обращаться к портам....

mov al,0edh
out 60h,al
L1: in al,64h
test al,0010b
jnz L1
mov al,101b ; где бит:0-Scrol lock, 1-num lock, 2-Caps
out 60h,al

Ответ

Здравствуйте, Дмитрий!
Проще надо быть... Попробуй почитать по адресам 0040:0017 0040:0018.


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 179

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

Вопрос №1154

Здравствуйте, уважаемые коллеги !
Хочу у Вас спросить совет. Дело в том, что у меня стоит винчестер от Fujitsu MPG3307AT 30GB . Ему сейчас где-то полгода, но он себя уже как то странно ведет: периодически случается следующее: винт тормозит, система висит секунд 5, винт разгоняется и дальше работает нормально. Скачал я прогу S.M.A.R.T. Monitor, которая мне сказала, что у меня уже была замена дефектного сектора из резервной области (Reallocated Secotor Count = 99 вместо 100).
На то что диск сыпется - не похоже, секторов плохих не появляется при проверке NDD из NU 2001. Взглянул я вчера на температуру внутри корпуса - она была 40C.
Думаю, может сектор этот появился из-за перегрева а эти тормоза винта - были термокалибровкой?
Сейчас принял кой-какие меры - температура держится в районе 33-34C. И винт пока вроде хорошо себя ведет. Так вот - стоит передо мной сейчас вопрос - сдать ли мне мой хард (гарантия до марта 2002 года) или все-таки маловероятно появление новых BAD секторов и не стоит этого делать? Является ли мой хард достаточно надежным чтоб я не волноваться за возможную потерю информации? Fujitsu - вроде хорошая фирма, я сменил 2 винта этой фирмы (не потому что они сыпались а потому что не хватало дисковой памяти мне. Хотелось больше :))) ) Эти 2 винта хорошо работали и сейчас работают у тех людей, которым я их продал. Они не жалуются. И вот только этот третий винчестер меня озадачил...
Заранее благодарен :)

Ответ

Здравствуйте, CodeBuilder!
Собственно на сколько я понимаю NDD и ему подобныя скандиски нифига не видят как раз из-за Rellicate. Так что можешь считать что винт сыплется. Лично я к винтам Fujitsu отношусь весьма прохладно. Да они достаточно тихие. Да, вроде бы раньше считалось что еще и надежные. НО ОНИ ЖЕ ТОРМОЗНЫЕ КАК ХРЕН ЗНАЕТ ЧТО!!! Лично я бы из современных винтов выбрал бы IBM серии 35 че то там с буквами (!!! только не DTLA !!! - они глючные !!!), или Maxtor и чтоб 7200 оборотов! Да кстати не знаю как у Фуджицу но у других фирм нет блинов на 15. Т.е. и в винте на 40 и в винте на 30 стоят 2 блина по 20. Не о чем не говорит? Я бы 2 хороших блина в винт на 30 не поставил - т.е. скорее всего их лепят из всякого шлака (брака).


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 180

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

Вопрос №1159

Моей подружке требуется написать клавиатурный резидент.
Как я понимаю надо заменить комманду обработки 9-го прерывания на свою. Как это сделать? (Не хватает базовых знаний, а мув туда сюда написать смогу)
То есть 2 вопроса: про резидент и про обработку прерывания.

Ответ

Здравствуйте, Reanimator!
Поехали. Пишешь процедуру - обработчик прерывания. Основные аспекты:
1. Надо все регистры и флаги сохранить, а в конце восстановить.
2. Из сегментных регистров нормальное значение имеет лишь cs (типа аккуратнее надо быть).
3. Необходимо вызвать старый обработчик.
4. Собственно с этого начать надо было - необходимо сохранить вектор старого обработчика и повесить свой (функции дос 25h и 35h соответственно).
Как вешать резидент. Используй int 27h.
Для более подробных разъяснений опиши поподробнее что должно делаться (че это за "клавиатурный резидент" такой).


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 181

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

Вопрос №1161

Добрый день, позвольте ответить Илье на №1136 по поводу трудового спора. Вопрос нужно задать на форуме "Наши права" www.hro.org. но и так ясно, что Вам нужно обратиться в суд и по поводу задержки з\пл и по поводу нарушения ст.20 КЗоТ РФ. Муж директора может работать юристом, если по такому
поводу имеется решение СовМина России, и только в виде исключения. По суд.решению з\пл работникам начнут выплачивать сразу же, арестовав счета, только пусть нанятые Вами юристы предусмотрят возможность использования директором другого счета и переуступки долгов предприятия.
Геннадий Чернявский, правозащитник; Мурманская область
gengri@aprec.ru В затруднительных случаях пишите.

Ответ

Здравствуйте, GenGri!
А при чём здесь Ассемблер :) ?


Отправил эксперт: Digger (www.digger-mib.chat.ru/freeware.htm - Мой софт :))
Эксперт отправил ответов (всего): 9

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

Вопрос №1163

Здравствуйте, уважаемые эксперты!
Собираюсь абгрэйдить комп. Какую мамку посоветуете (под Duron, Athlon). Денег не густо - Asus не потяну. Может что есть дешевле, но не намного хуже. Хотелось чтоб один раз взять хорошую MB, и больше к этому вопросу не возвращаться(хотя-бы лет 10).
Заранее благодарен, Гена.

Ответ

Здравствуйте, gena!
10 лет - это ты, конечно, загнул - за эти годы любой навороченный комп станет раритетом. Я бы тебе посоветовал взять что-нибудь на 266А чипсете от VIA - именно с буквой А- сейчас они должны появиться в продаже - ну а производителя, по финансовым возможностям- на год другой, я думаю, должно хватить


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

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

Вопрос №1063

Возможно, кто то сталкивался с вирусом
I-WORM.HIBRIS.B
Данных по нему нет, берется сентябрской базой.(AVP)
Заловил на СD-приложении к журналу Submarine.
Чем он опасен?
Данные по I-WORM.HAPPY есть это интернет червь.

Ответ

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

Приходила мне эта тварь по мылу - червь это.


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

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

Вопрос №1076

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

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

Ответ

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

В этом файле содержится список всех переменных, меток и сегментов
и адреса, где они располагаются. Это так, для общего развития (и для
некоторых дебаггеров).

Можно запустить tlink /x ... и этот файл создаваться не будет!


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

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

Вопрос №1085

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

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

Ответ

Здравствуйте, Константин!

Это не к нам - это на Experts@kalashnikoff.ru


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

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

Вопрос №1105

Привет всем умным и очень умным!!!
Учитал я тут както в techhelp'e что еть такое прерывание биосовское int10 004h - read light pen position и вот подумал а ни сделать ли мне ентот ligth pen :) Вобщем если кто уже сталкивался с такой "проблемой" (как его сделать и куда воткнуть) , подскажите. :)

ЗЫ: помоему там всеголиш фотодиод , ну и возможно пара транзисторов......

Ответ

Здравствуйте, Dr.Zombie!

Light Pen поддерживается только до CGA. EGA/VGA/SVGA его уже не держат
:-(, т.к. "умные" дяди придумали графический планшет.


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

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

Вопрос №1142

при компоновке с link.exe (MAsm 6.12) выдается сообщение
"LINK : warning L4021: no stack segment"
Подскажите че делать а то я не разбираюсь как с masm работать(хелпа там нету).

Ответ

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

Если ты сделал com программу, то напиши tasm /t prog.obj
если ты хочешь exe, то пропиши стековый сегмент.


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

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

Вопрос №1144

Здравствуйте.
Мой линкер (TLINK, кажется 3.0) при создании exe-файла выдает 'Program has no starting address', и ни одна программа не работает. Не подскажете, как задать начальный адрес (желательно как можно доступней, т. к. я только начал изучать сей язык).
Спасибо.

Ответ

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

Недостаточно информации для ответа.
Скажи какую программу делаешь (exe или com) приведи кусок программы.


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

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

Вопрос №1147

esp/sp (Stack Pointer register) — регистр указателя стека.
Содержит указатель вершины стека в текущем сегменте стека.
ebp/bp (Base Pointer register) — регистр указателя базы кадра стека.
Предназначен для организации произвольного доступа к данным внутри стека.
can you please show me the examole of using this registers.

Ответ

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

Какие проблемы то???

Пример на си:

int main (int argc, char **argv)
{
int i;

for (i = 0; ... ну это не важно)


return -1;
}

как это обычно выглядит на асме?

main_:
push ebp
mov esp, ebp
sub esp, 4

mov [ebp - 4], 0 ; i = 0;

mov eax, [ebp + 4] ; argc
mov ebx, [ebp + 8] ; argv

....

mov esp, ebp
pop ebp
ret


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

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

Вопрос №1168

Привет всем!!
У меня такой вопрос хоть он и был. Что может вызывать сообщение ошибка четности памяти под виндой. Скорее всего какое-то устройство, т.к. в режиме защиты от сбоев вроде как не вылазит, хотяне знаю. Отключить в биосе настройку как предлагали ранее не подходит в связи отсутствия данной настройки. У меня подозрения на видеокарту. т.к в режиме 640х480 вроде бы работает, а при 800х600 выскакивает

Ответ

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

Приложение:


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

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

Вопрос №1154

Здравствуйте, уважаемые коллеги !
Хочу у Вас спросить совет. Дело в том, что у меня стоит винчестер от Fujitsu MPG3307AT 30GB . Ему сейчас где-то полгода, но он себя уже как то странно ведет: периодически случается следующее: винт тормозит, система висит секунд 5, винт разгоняется и дальше работает нормально. Скачал я прогу S.M.A.R.T. Monitor, которая мне сказала, что у меня уже была замена дефектного сектора из резервной области (Reallocated Secotor Count = 99 вместо 100).
На то что диск сыпется - не похоже, секторов плохих не появляется при проверке NDD из NU 2001. Взглянул я вчера на температуру внутри корпуса - она была 40C.
Думаю, может сектор этот появился из-за перегрева а эти тормоза винта - были термокалибровкой?
Сейчас принял кой-какие меры - температура держится в районе 33-34C. И винт пока вроде хорошо себя ведет. Так вот - стоит передо мной сейчас вопрос - сдать ли мне мой хард (гарантия до марта 2002 года) или все-таки маловероятно появление новых BAD секторов и не стоит этого делать? Является ли мой хард достаточно надежным чтоб я не волноваться за возможную потерю информации? Fujitsu - вроде хорошая фирма, я сменил 2 винта этой фирмы (не потому что они сыпались а потому что не хватало дисковой памяти мне. Хотелось больше :))) ) Эти 2 винта хорошо работали и сейчас работают у тех людей, которым я их продал. Они не жалуются. И вот только этот третий винчестер меня озадачил...
Заранее благодарен :)

Ответ

Здравствуйте, CodeBuilder!
Он начинает у тебя сыпаться потихоньку, эти тормоза-сектора, которые тормозят, просто плохо читаются.
По гарантии тебе его не заменят! При наличии бедов(которых у тебя еще нет, но скоро появятся), на фирме тебе их скроют, перемапив(переадрессовав) из резервной области. Это называется гарантийным ремонтом:)
При наличии 3 гарантийных ремонтов тебе должны заменить носитель.
Как заиметь беды на винте-думаю догадаешься, либо обратись лично-sensey@ukr.net-напишу


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

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

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

Рассылки 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

В избранное