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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 277
от 30.05.2002, 03:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 265
Отправлено ответов: 687
Активность: 259.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


Письмо читателя Андрей


Здраствуйте Калашников Олег !!!

Я являюсь вашим подписчиком рассылки на Subscribe.Ru --> RusFAQ.ru: программирование на языке Assembler и у меня такой вопрос( может тема для обсуждения в рассылке ) (поэтому большая прозьба опубликовать это письмо, если это возможно)

1. Не кажется ли вам (эксперты) что DOS, не только устарел лет так на 20, но и не является просто надежной операционной системой (не говоря уже о многозадачности и т.д.)и учится писать на нем программы на ассемблере просто ради процесса обучения - потеря времени. Просто эта платформа уже умерла.

2. Не кажется ли вам что Windows(масдай) тоже не только устарел, но и написан на скорую руку левой ногой(хотя и распостранен и является фактически стандартом операционной системы для многих). Не говоря уже о надежности и зашищенности.

3. Не кажется ли вам что Linux тоже устарел(не надо кидатся в меня фруктами) писался он тоже лет 10 назад (Тольвадос списывал его с Minix(MicroSoft)). Расчитан он был под командную стоку и пользователя-програмиста(отсюда графика приделана - тормозит и жрет ресурсы и пользователи рядовые его не используют - сложно) вобшем можно и дальше, но этого хватит.

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

Для начала предлогаю обсудить требования к системе и какая она должна быть.
1. Под процесоры совместимые с i386 в виду их доминирования на постсоветском пространстве. (MIPS,PowerPC и т.д. отпадают в силу их малочислености.
2. На асемблере -> самый эфективный код, так экспертам как говорится и карты в руки (а то проводяшиеся конкурсы у кого короче, просто детский сад.)
3. Далее ваши предложения
...

Я думаю, эта мысль должна быть опубликована и ответы экспертов тоже будут интересны читателям рассылки.


Андрей (ovt4@izpes-01.od.energy.gov.ua)



 Список экспертов, ответы которых опубликованы в данном выпуске

DiGiT
Статус: Профессиональный
Общий рейтинг: 150.26
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 159.87
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 151.55
URL: Операционная система с нуля!
[Подробней >>]
 
Beeblebrox
Статус: Опытный
Общий рейтинг: 132.33
URL: Beeblebrox / TMA HomePage
[Подробней >>]
igorash
Статус: Доверительный
Общий рейтинг: 146.87
[Подробней >>]
Shal
Статус: Начальный
Общий рейтинг: 108.57
[Подробней >>]
 
Blackeye
Статус: Опытный
Общий рейтинг: 126.97
URL: Delphi, my programms...
[Подробней >>]
Тorax
Статус: Доверительный
Общий рейтинг: 122.68
[Подробней >>]
Топор
Статус: Опытный
Общий рейтинг: 134.61
URL: Хорошая Русская Металлическая команда
Телефон: (8462)160302, 162918
[Подробней >>]
 
Zloy
Статус: Доверительный
Общий рейтинг: 105.21
[Подробней >>]
bin
Статус: Начальный
Общий рейтинг: 106.99
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 161.22
[Подробней >>]
 
Guess Who
Статус: Начальный
Общий рейтинг: 101.86
[Подробней >>]
Александр
Статус: Опытный
Общий рейтинг: 120.93
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 145.87
[Подробней >>]
 
Den
Статус: Доверительный
Общий рейтинг: 129.56
[Подробней >>]
Dark_Lord
Статус: Доверительный
Общий рейтинг: 124.19
[Подробней >>]
kostik
Статус: Профессиональный
Общий рейтинг: 126.05
URL: Все о программистах и для программистов
Телефон: (4212)393-276
[Подробней >>]
 
BlackBeast
Статус: Доверительный
Общий рейтинг: 105.16
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 229. Возникла проблема: Надо написать .sys прогу, для загрузки из config.sys может кто подскажет формат ф... (ответов: 1)
Вопрос № 230. Здравствуйте эксперты! Есть несколько вопросов, зачем нужна функция DOS LFN A1h - закончить поиск фа... (ответов: 1)
Вопрос № 231. Всем привет! Продолжение вопроса о безусловных переходах. Тогда каким образом формируется код здесь?... (ответов: 3)
Вопрос № 233. Уважаемые эксперты!!! Rто из Вас может объяснить подробно, как инсталировать и запустить TASM, какие... (ответов: 5)
Вопрос № 234. Добрый день Ув. Эксперты ! Помогите плиз новичку разобраться в следующих вопросах: 1) Зачем нужны и ... (ответов: 11)
Вопрос № 235. Привет... Думаю многие эксперты читали книги М.Гука "процессоры INTEL..." Вот собственно в... (ответов: 2)
Вопрос № 237. Подскажите, как программировать микроконтроллеры (Атмелы например) через LPT-порт.... (ответов: 1)
Вопрос № 238. Всем привет.Я хочу подучить ASM под Мастдай и столкнулся с проблемой выбора компилятора.Подскажите ,... (ответов: 6)

Вопросов: 8, ответов: 30


 Вопрос № 229

Возникла проблема: Надо написать .sys прогу, для загрузки из config.sys
может кто подскажет формат файла?
а так же треба exe2bin.exe



Вопрос отправлен: 24.05.2002, 15:30
Отправитель: AmuLenkoSA (AmuLenkoSA@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает DiGiT

Приветствую Вас, AmuLenkoSA!
Там формат насколько помню такой же как у ком файла только без org 100h.

Ответ отправлен: 25.05.2002, 04:26
Отправитель: DiGiT


 Вопрос № 230

Здравствуйте эксперты!
Есть несколько вопросов, зачем нужна функция DOS LFN A1h - закончить поиск
файла? Важен ли регистр букв, задаваемый в маске для поиска
файлов? Какой алгоритм нахождения всех файлов(LFN) в директории
начинающихся с одной и той же буквы, но имеющих разные атрибуты?
--
С уважением, ILYA D.



Вопрос отправлен: 24.05.2002, 20:29
Отправитель: ILYA D.

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Добрый день, ILYA D.!
1. Как пишет наш любимый Ральф Браун, эта ф-ция канает только при запущенном IFSMGR.SYS (не в "голом" ДОС-е)
Теперь, для чего нужна. Оказывается, мы must(!) вызывать ее после 714Eh чтобы отметить, что search handle, возвращаемый этой самой 714Eh (в AX) больше не будет использоваться. Вот так. Больше ничего вразумительного.
2. Регистр букв не важен (хотя хрен его знает...:)
3. Маска поиска - Б*.*, где Б - буква. А алгоритм таков: ищешь с пом. 4Eh (в ch - нолик сначла). Если нашелся - инкремент ch и опять поехал 4Eh ф-цией, если не нашелся - все равно инкремент (т.к. разные - это наверно имеется ввиду "один из зеленых", "один из белых" и все это шарики, ну ты понял )

Ответ отправлен: 24.05.2002, 22:21
Отправитель: Broken Sword


 Вопрос № 231

Всем привет!
Продолжение вопроса о безусловных переходах.
Тогда каким образом формируется код здесь?:-
00000017: 0F84F503 je 000000410
0000001F: 0F84FE03 je 000000421
00000023: 0F84FB03 je 000000422
0000002F: 0F84D203 je 000000405
Может я все-таки чего-то недопонимаю. Объясните, пожалуйста, как первокласнику на яблоках;))
Меня интересуют сами коды, и их формирование, TASM мне до фени...



Вопрос отправлен: 24.05.2002, 21:08
Отправитель: Atma Manas

[Следующий вопрос >>] [Список вопросов]

Отвечает Dron

Доброе время суток, Atma Manas!
0f 84 - код команды je...
остальные два байта - относительное смещение...
17: je +3f5h (1bh + 3f5h = 410h)
1b:
1f: je +3feh (23h + 3feh = 421h)
23: je +3fbh (27h + 3fbh = 422h)
27:
2f: je +3d2h (33h + 3d2h = 405h)
33:


Ответ отправлен: 27.05.2002, 11:30
Отправитель: Dron


Отвечает Beeblebrox

Доброе время суток, Atma Manas!
0fh,84h - opcode
17h+4(command length)=1bh
1bh+03F5h=410h
Надеюсь, понятно

Ответ отправлен: 27.05.2002, 10:31
Отправитель: Beeblebrox


Отвечает igorash

Доброе время суток, Atma Manas!
Все просто, как и все гениальное:
OF84 - je far
1Fh+03FEh(ты же помнишь что у интел процев формат чисел задом наперед)+4h(длина команды, т.е. типа je от адреса следующей команды)=0421h
Что и требовалось доказать. Можешь проверить на остальных.
Будут вопросы, спрашивай. (igoras@mailru.com)


Ответ отправлен: 25.05.2002, 14:21
Отправитель: igorash


 Вопрос № 233

Уважаемые эксперты!!! Rто из Вас может объяснить подробно, как инсталировать и запустить TASM, какие кнопки нажимать,и что будет появляться после каждого нажатия??? У меня Win98.
До сих пор торчу на первом уроки Олега. Заранее спасибо Игорь



Вопрос отправлен: 24.05.2002, 23:30
Отправитель: Игорь

[Следующий вопрос >>] [Список вопросов]

Отвечает Shal

Здравствуйте, Игорь!
Находишь два файла: tasm.exe, tlink.exe.
Написал прогу на асме, допусти в файл as.asm.
Заходишь в Nc, Far, Wincmd и пишешь в командой строке:
1)tasm as.asm-->появляется файл as.obj.
2)tlink as.obj-->появляется exe-шник.

Ответ отправлен: 26.05.2002, 10:15
Отправитель: Shal


Отвечает Blackeye

Доброе время суток, Игорь!
Ставишь ТАСМ на винт, в папку, можно C:TASM... там будет папка BIN в ней лежат tasm.exe и tlink.exe. Запускаешь их, с параметрами командой строки которын тебе нужны. Только помни что это консольные приложения

Ответ отправлен: 26.05.2002, 11:18
Отправитель: Blackeye


Отвечает Тorax

Приветствую Вас, Игорь!
А че, тяжело купить книгу, например Зубкова, или с Интернета скачать???
А насчет уроков, так кинь этот первый иди дальше, может станет понятней. А когда станет понятней, тогда возвратись назад.
Вообще-то Олег очень даже доступно все обьясняет.


Ответ отправлен: 28.05.2002, 18:42
Отправитель: Тorax


Отвечает Топор

Приветствую Вас, Игорь!
В установочном пакете TASM есть файл install.exe, и работать он может и в DOS, и в Windows. Запускаешь его и действуешь по подсказкам.
Что касается самого TASM, то там все программы командно-строчные, заточены под DOS и DOS32, интерфейса не имеют и запускаться должны с параметрами, какими - запусти любую с ключом /h и увидишь, а не увидишь - тогда так:
proga.exe /h >proga.txt
и в .txt файле прочтёшь. Если нужен мощный интерфейс, то лично я юзаю Easy Assembler Shell 4.17, который бесплатно доступен здесь:
http://noro.chat.ru/easrus.html
А книжек тебе сейчас народ целую тучу насоветует, одних и тех же.


Ответ отправлен: 25.05.2002, 09:06
Отправитель: Топор


Отвечает igorash

Здравствуйте, Игорь!
НУ ладно, тезка, начнем.
Должна быть папка в которой есть куча файлов *.pak и инсталл.ехе. Папка (весь путь) желательно чтобы без русских букв и в формате 8.3
Запускаешь инсталл.ехе, жмешь ентер, потом вводишь имя диска на котором инсталл, жмешь ентер, потом путь к инсталлу - по идее уже тот, что надо - жмешь ентер , выбираешь че инсталлить и путь куда инсталлить (диск совпадает с диском на котором инсталл) и путь к винде, оставь все как есть и жми F9, процесс копирования, потом readme открывается, жмешь esc. Все, инсталл завершен.
а запускать, там кнопок нет, только параметры командной строки, берешь NC, VC, DN (я лично предпочитаю последний), пишешь в нем прогу (ну можно и в любом другом текстовом редакторе, но не в Ворде), пихаешь ее в папку тасмбин, чтобы не мучаться с путями (ну или прописываешь путь к tasm.exe и tlink.exe в path). пишешь
tasm /m hello-1.asm
tlink /t /x hello-1.obj
для сом-файла и
tasm /m hello-2.asm
tlink /x hello-2.obj
для ехе-файла. Если в проге не было ошибок, то имеешь готовую прогу.
А теперь почему я пользуюсь Дос Нафигатором. В настройках программы dn.com на закладке "разное" резервируешь сочетание клавиш alt+enter (т.е. убираешь с него галку и можешь им пользоваться в ДН). Потом в ДН становишься на *.асм и жмешь альт-ентер и имеешь меню где видишь что делать с этим асм-файлом (только ассемблировать, ассемблировать и линковать в ехе и асм+линк в ком). По моему это очень удобно, но тасм опять же должен быть или в текущем каталоге или в path.
з.ы. А ассемблирование и линкование есть кстати у Олега в приложении №1 к 1 части книги.


Ответ отправлен: 26.05.2002, 00:51
Отправитель: igorash


 Вопрос № 234

Добрый день Ув. Эксперты !
Помогите плиз новичку разобраться в следующих вопросах:
1) Зачем нужны и на что указывают "[" и "]" ? (если можно,пример..)
2)Зачем нужны следующие строки,что они делают, и когда их надо ставить?
CODESEG
assume cs:CODESEG,ds:CODESEG,ss:CODESEG
3) -=- assume ?
4) -=- 15 dup (?) ?
5) - =- equ ?
6) как узнать какой STACK надо ставить, когда пишеш программу? И в каких случаях без него можно обойтись?
7) Почему, очень часто вижу, напротив следующих строк
mov ax,@data
mov ds,ax
делают следующие пояснения:
"Свазываем регистр dx с сегментом данных через ax"...
Мне непонятно: причём тут dx?
8)Какую книгу по Ассму посоветуют Эксперты? (желательно последних лет, потому, что старые издания
нигде не достать)
Заранее благодарен..
С Уважением, pAcU.



Вопрос отправлен: 25.05.2002, 00:18
Отправитель: pAcU

[Следующий вопрос >>] [Список вопросов]

Отвечает Zloy

Здравствуйте, pAcU!
Первые семь - RTFM !!!
8 - Скачай себе уроки с http://Kalashnikoff.ru.


Ответ отправлен: 27.05.2002, 13:24
Отправитель: Zloy


Отвечает Dron

Здравствуйте, pAcU!
1. косвенная адресация... то что написано в скобках, после вычисления представляет собой адрес в памяти, по которому нужно обратиться.
2. это только для tasm... ассоциации с сегментами.
4. зарезервировать 15 байт... если разместить в конце программы, то не прибавит размера файлу.
5. equ - то же самое что и =... присвоить какое-то значение на время компиляции.
6. в com программах стек ставить не надо. он располагается по умолчанию в конце сегмента данных. размер стека - зависит от программы.
7. про dx - явно ошибка. должно быть ds. напрямую в ds заслать значение нельзя.


Ответ отправлен: 27.05.2002, 11:34
Отправитель: Dron


Отвечает bin

Дмюоьх делщ, pAcU!
1) Лятль...
дмняъпук еъпщ ъпомич нм ъкешелув XXXX:0000
di яичцьачеп лч лчбчйм ъпомиу, п.е di = 0
лчнуъча mov ax, di нмйябук а ax 0
лчнуъча mov ax, [di] нмйябук а ax неоаье дач ъукамйч
Ъкьъй зъел???
2)ък 3.
3)Дуоеипуач ASSUME яичцьачеп почлъйзпмоя лч ичиуе ъежкелпь яъпчлмайель ъежкелплье оежуъпоь. Ыпм лятлм дйз имлпомйз дмъпянлмъпу ъежкелпч у дйз чапм-
кчпубеъимжм аьюмоч ъежкелплмжм оежуъпоч ноу очюмпе ъ мноедейелльк ъежкелпмк.
Мюшух ауд дуоеипуаь:
ASSUME <укз_ъежкелплмжм_оежуъпоч>:<укз_ъежкелпч>, ...
лчноукео,
ASSUME CS:TEXT, DS:DATA1, SS:STACK
Ачтлм нмклупщ, бпм ъчкч дуоеипуач ASSUME ле яъпчлчайуачеп ъежкелплье оежуъпоь лч яичцчллье ъежкелпь! Дйз ыпмжм лятлм уънмйщцмачпщ ъммпаепъпаявшуе
улъпояифуу. Ноу неоеяъпчлмаие ъежкелпльс оежуъпома лятлм ле цчюьачпщ ыпм мпочтчпщ а дуоеипуае ASSUME, улчбе почлъйзпмо кмтеп ъжелеоуомачпщ леаеольх имд. Еъйу ъежкелпльх оежуъпо ле яъпчлмайел лч имлиоепльх ъежкелп, а ичбеъпае
укелу ъежкелпч уънмйщцявп ийвбеаме ъймам NOTHING.
4) DUP - нмапмоупщ. XXX DB 15 DUP (?) - 15 очц цчоецеоауомачпщ ючхп. "?" мцлчбчеп бпм дчллье леулефучйуцуомачллье. П.е. пе, импмоье пеюе лчдм пмйщим ноу аьнмйлелуу номжочккь (сочлелуе номкетяпмбльс дчлльс). Лч аулпе млу кеъпч ле цчлукчвп.
5) EQU лчдм дйз мноедейелуз ичиус йуюм нчочкепома. Лчноукео пь бчъпм уънмйщцяеэщ "эуоулч ыиочлч", у аецде номнуъчй еT очалмх 80. Лм нмлчдмюуймъщ нмкелзпщ, у лчбчйъз жекмо. Ч еъйу пь а лчбчйе номжу мноедейуй Shirina_Ekrana equ 80 у аецде аъчайзй еT, акеъпм пмбльс фуро, пм уцкелупщ 2 ъеиялдь. Яйябэчеп амъноузпуе имдч. Нмдъпчайзепъз ам аоекз почлъйзфуу. Лч очцкео номжу ле айузеп.
6) ъпчлдчоплм 100h = 256 ючхп, кмтлм у келщэе, лм ле аъеждч мночадчллм. Кмтлм очцкео ъбупчпщ аоябляв, лм йябэе ле лчдм. Цчлуцуа очцкео ЪПЕИЧ еъпщ эчлъ цчнмомпщ дчллье уйу цчпеоепщ ияъми имдч уънмйлзекмжм кмдяйз. ЕшT нм кмекя памх ъпеи вцчепъз аъеку оецуделпчку импмоае чипуауцуоявпъз ам аоекз аьнмйлелуз памех номжу. Пчи бпм 100h у аъе няпTк.
7) ds - ъежкелп дчлльс. ъ лук ъазцчлль dx у si. п.е. еъйу пь юеоTэщ (ък. нялип 1) бпм-пм уц si уйу dx, пм пь юеоTэщ уц DS:DX, DS:SI. пмте у ъ es -- ES:DI.
8)нмушу а ыйеипомллмк ачоучлпе. ус клмжм. лейщцз мюсмдупъз мюлук ъночамблуимк уйу ябеюлуимк. бек юмйщэе уъпмблуима, пек юмйщэе эчлъма очцмюочпщъз.


Ответ отправлен: 25.05.2002, 07:09
Отправитель: bin


Отвечает Shal

Приветствую Вас, pAcU!
1) mov ax,[bx]-поместить в ах содержимое ячейки памяти, адрес которой находится в bx.
4)messs db 15 dup(?)-массив под именем mass, состоящий из 15 неопределенных(любых) цифер.
5)
метка equ выражение:
Директив equ присваивает метке значение, которое определяется как результат целочисленного выражения в правой части. Результатом этоого выражения может быть число, адрес или любая строка символов.
6)для ехе-проги- можно .stack 100h- Это значит, что мы выделили в области пямати место под прогу размером в 256 байт. Для cjv-проги- всегда указывается org 100h.
8)Зубков "Программирование на assm под Dos, Windows, Unix".

Ответ отправлен: 26.05.2002, 10:11
Отправитель: Shal


Отвечает masquer

Приветствую Вас, pAcU!
1. mov eax, [eax] - скопировать, то что находиться по адресу eax в eax - так плнятно.
2. указываем, что сегмент данных, кода и стека бедет в CODESEG
3. assume - по англ. принимаем.
4. db 15 dup (?) зарезервировать 15 байт (если db)
5. equ - равно
6. это ты сам определяешь, сколько тебе надо.
7. Потому что из памяти в ds нельзя заносить

Ответ отправлен: 25.05.2002, 00:34
Отправитель: masquer


Отвечает Guess Who

Здравствуйте, pAcU!
1) Оператор [] - оператор косвенной или индексной адресации. Чтобы понять, что это значит, скомпилируйте и запустите под отладчиком следующий код(см. приложение).
2)CODESEG - условное имя сегмента кода(это нужно компилятору). Директива ASSUME указывает с каким сегментом связан сегментный регистр. В данном случае, похоже что используется модель памяти TINY, в которой код, данные и стек находятся в одной сегменте. Именно это вы и описываете строкой с ASSUME.
4)Запись "15 dup (?)" - указывает компилятору, что он должен зарезирвировать в программе 15 единиц(байт, двойных слов и т.д.) не инициализированной памяти. Обычно записывается: [имя переменной] d(b,w,...) 15 dup(?)
5)equ - директива, которая присваивает метке или переменной значение, которое не может быть в последствии переопределено.
7)Возможно вы выдернули эти строки из программы(скорее всего с моделью памяти SMALL), которая использует какие либо функции, которые требуют на входе данные на которые указывает пара ds:dx, а возможно простая опечатка.
8)Хорошая книга Зубкова С.В. "Assembler для DOS,Windows,Unix" и "Assembler. Учебник" В.Юров, в книге много неточностей, ошибок и опечаток, но тем интереснее ее читать и исправлять найденные!:)

Приложение:

Ответ отправлен: 25.05.2002, 01:16
Отправитель: Guess Who


Отвечает Тorax

Приветствую Вас, pAcU!
Напиши мне на Torax@dotes.west.energy.gov.ua, кину доки всякие.


Ответ отправлен: 25.05.2002, 01:30
Отправитель: Тorax


Отвечает Александр

Здравствуйте, pAcU!
1) Число в скобочках - адрес, а сами скобочки показывают, что надо взять значение, которое леэит по данному адресу.
2) CODESEG - это автоматически присваемовое название для сегмента кода(ну когда для начала кода используешь .code). Для сегмента данных - DATASEG. Такой случай, когда у тебя COM - программа.
3) Чтобы не инициализировать сегментные регистры ручками используется команда assume.
4) Перед этим должно стоять db, dw, dd, dq, dp или dt. Означает, что надо зарезервировать память под 15 значений одинакового типа. Вопросительный знак означает, что их значения не определяются. Вместо ? можно поставить любое значение, тогда это значение будет занесено в зарезервированные ячейки.
5) Ass equ -1 - означает, что везде где встретит в программе значение Ass заменит на -1. Полный аналог #define Ass -1 в языке C.
6) Если у тебя немного вложенных вызовов подпрограмм, тогда можно поставить 1024, с запасом хватит. Если есть где-нибудь рекурсия(факториал например считаешь так) - чем больше, тем лучше. Обычно ставится от 4096 до 8192.
7) Какой такой DX? Наверное опечатка, должно быть DS. Это то, во что компилятор превращает ASSUME DS:DATASEG
8)
- П.И.Рудаков, К.Г.Финогенов "Язык ассемблера: уроки программирования", Москва, "Диалог-МИФИ", 2001год.
- Зубков С.В. "Assembler язык неограниченных возможностей", Москва, ДМК, 2000 год.


Ответ отправлен: 28.05.2002, 19:15
Отправитель: Александр


Отвечает Blackeye

Доброе время суток, pAcU!
1) На смещение в памяти
2) привязка сегментного регистра CS,DS,SS к сегменту в твоей программе
4) Чтобы не писать number db 0,0,0,0,0 надо написать number db 5 DUP(0)
5) Метка смещения в файле
7) Потому что в exe программах DS не равен CS программы, в отличии от СОМ проги
8) Зубков, Юров

Ответ отправлен: 26.05.2002, 11:18
Отправитель: Blackeye


Отвечает igorash

Добрый день, pAcU!
1) это значит не значение (константа, регистр) , а значение по адресу указанному, т.е.
mov ax, [dx] - заслать в ах то, что находится по адресу ds:dx
2) Из какой-то книги (сам не помню откуда скачал):
ASSUME сегментный_регистр:имя_сегмента,,,
или
ASSUME NOTHING.
Задает сегментный регистр, который будет использоваться
для вычисления исполнительных адресов всех меток и переменных,
определенных под заданным именем сегмента или группы ("имя сег-
мента").
3) см. выше
4) 15 dup (?) - это 15 раз по ?, т.е. по неопределенному символу, Таким образом можно удобно заполнять массивы повторяющимися значениями, не писать 0,0,0,0,0 а 5 dup (0).
5) equ - присвоить чему-нибудь имя (из той же книги):
name EQU expression .
6) Ну примерно сам рассчитай сколько ты в стек пихаешь (с учетом того что еще и достаешь), но учти что некоторые процедуры тоже используют стек. Вообще-то в ехе-файле стек в отдельном сегменте, так что все равно сколько ты под него отведешь.
7) Тут очевидная очепятка - не dx а ds, это в ехе-файлах связывание регистра ds с сегментом данных.
8) Про книги уже писал - Зубков, Юров, Интернет (правда в инете не очень много, но зато есть то, чего в книгах нет, а базовые знания, типа ответов на вопросы выше конечно в книгах).
з.ы. не стоит благодарности.
Кинь мылом на igoras@mailru.com и я в тебя кину этой книгой из которой выдержки приводил (если будет иметь место спам, сорри, на русфак.ру показано, что я ответ не отправлял, поэтому отправляю его в 3 раз)


Ответ отправлен: 26.05.2002, 11:46
Отправитель: igorash


Отвечает Ayl

Здравствуйте, pAcU!
1. Квадратные скобки указывают на косвенную адресацию памяти. Сравни:
а) mov ax, bx
б) mov ax, [bx]
В случае а) в регистр ax заносится то, что находится в регистре bx
В случае б) в регистр ax заносится то, что находится в памяти по некоторому адресу. Этот адрес формируется так:
сегмент берется из регистра ds (это нигде не указано, так считается по умолчанию), а смещение равно тому значению, которое находится в регистре bx.
Разница, надеюсь, понятна.
2. CODESEG - описание сегмента кода в режиме IDEAL. Ставится в начале описании кодового сегмента. Используется для сокращения исходного текста программы и удобства программиста. В режиме MASM соответствует инструкции .CODE
3. ASSUME - директива компилятора, указывающая, какой сегментный регистр на какой сегмент программы будет указывать. В вашем случае указывается, что регистры CS, DS и SS указывают на сегмент кода
4. 15 dup (?) - зарезервировать 15 элементов памяти (не понятно, каких: перед этим выражением должно идти еще указание на размер выделяемой памяти:
db - байт,
dw - слово (2 байта),
dd - двойное слово (4 байта)
и т.п.
5. EQU - команда присваивания значения константе. Например:
ZERO EQU 0
В дальнейшем вместо константы 0 можно использовать имя ZERO.
6. Без стека можно обойтись только в одном случае - когда у тебя программа не использует стек явно (push/pop) или неявно (вызовы подпрограмм и прерываний) и работает с запрещенными аппаратными прерываниями (команда cli). В остальных случаях стек будет использован. Другое дело, что обычно хватает стека по умолчанию. Например, так как у вас COM-программа вряд ли будет занимать 64Кбайт, то остатка кодового сегмента вполне хватит под стек. Так что пока не заморачивайся с ним.
7. Ну опечатка вышла, прости людей... :-) Конечно, имеется в виду DS
8. Из новых - насколько я понял из рассылки, то хорошая книжка Зубкова "Программирование на ассемблере под DOS, Windows и UNIX". Сам я ее не видел, так что советую с чужих слов.


Ответ отправлен: 27.05.2002, 02:11
Отправитель: Ayl


 Вопрос № 235

Привет... Думаю многие эксперты читали книги М.Гука "процессоры INTEL..." Вот собственно вопрос:
В книгах представлены таблицы, в которых описаны управляющие сигналы сокетов. Кто знает как можно использовать эти сигналы????



Вопрос отправлен: 25.05.2002, 14:14
Отправитель: AlienSky (m-kunderra@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Александр

Здравствуйте, AlienSky!
При программировании на Ассемблере? НИКАК! Эти сигналы будут тобой использованы при разработке собственного супермодного чипсета Pentium - fireStarter или просто суперПоджигатель, ну или Обгреватель Чукотского Чума. Учи схемотехнику, но это не ко мне. Электроники отзовитесь. Может кто-нибудь заведёт на RusFAQ рассылочку по схемотехнике и прочему радиолюбительству?
P.S. Обогреватель можно сделать на полном серьёзе, надо просто подавать на процессор немного повышенное питание. Хотя для последних процессоров можно и пониженное, всё равно греть/гореть будет.


Ответ отправлен: 28.05.2002, 19:16
Отправитель: Александр


Отвечает igorash

Здравствуйте, AlienSky!
Сокета в смысле разьема в который воткнут проц?
Тогда никак, ну в программном смысле. А в железном вперед, посылай себе сигналы на одни ноги и снимай с других, что и делает чипсет. Это что-то типа вопроса про то что в байте аппаратно 9 бит, а не 8.


Ответ отправлен: 26.05.2002, 00:51
Отправитель: igorash


 Вопрос № 237

Подскажите, как программировать микроконтроллеры (Атмелы например) через LPT-порт.



Вопрос отправлен: 25.05.2002, 22:20
Отправитель: Олд

[Следующий вопрос >>] [Список вопросов]

Отвечает Den

Добрый день, Олд!
У Вас какие-то конкретные проблемы или просто принцип нужен? Могу помочь с принципом: во-первых нужен программатор, во-вторых нужна программа для прошивки - мне нравится ICProg. Найти все это через поисковики - дело нескольких минут. Проблемы могут возникнуть с прошиваемым кодом - но это зависит от того, что Вы собираетесь с этими микроконтроллерами делать :)
Еще могу посоветовать серию книг Патрика Гелля (изд-во ДМК)
PS Всех Питерцев - с днем города!

Ответ отправлен: 26.05.2002, 00:41
Отправитель: Den


 Вопрос № 238

Всем привет.Я хочу подучить ASM под Мастдай и столкнулся с проблемой выбора компилятора.Подскажите , кто чем может.Спасиба.



Вопрос отправлен: 26.05.2002, 03:49
Отправитель: s0urcer

[Следующий вопрос >>] [Список вопросов]

Отвечает Dark_Lord

Приветствую Вас, s0urcer!
Если хочешь учит сам, без книги или учителя masm32, а если с учителем, лучше tasm. А если по книжке, то там говорится!

Ответ отправлен: 26.05.2002, 20:19
Отправитель: Dark_Lord


Отвечает Тorax

Доброе время суток, s0urcer!
Под Win рекомендуется MASM хотя лично я пользуюсь TASM.
Torax


Ответ отправлен: 26.05.2002, 21:03
Отправитель: Тorax


Отвечает masquer

Доброе время суток, s0urcer!
MASM32, www.movsd.com

Ответ отправлен: 26.05.2002, 09:49
Отправитель: masquer


Отвечает Blackeye

Приветствую Вас, s0urcer!
Классические компиляторы - MASM,TASM, но мне в последнее время FASM очень нравиться

Ответ отправлен: 26.05.2002, 11:18
Отправитель: Blackeye


Отвечает kostik

Приветствую Вас, s0urcer!
Тут говорят, что MASM32 от Iczelion самый лучший. К тому же с ним идут туториалы, правда на английском языке. Загрузить можете с www.hi-tech.nsys.by


Ответ отправлен: 26.05.2002, 13:58
Отправитель: kostik


Отвечает BlackBeast

Здравствуйте, s0urcer!
Рекомендую Tasm (Turbo Assembler) от Borland/


Ответ отправлен: 27.05.2002, 00:58
Отправитель: BlackBeast



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "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 (49)
C / C++ (28)
Perl (10)
Delphi (18)
Pascal (29)
Basic / VBA (12)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (50)
Windows NT/2000/XP (35)
"Железо" (40)
Поиск информации (19)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (7)
Юристу
Гражданское право (13)
Уголовное право (1)
Семейное право (5)
Трудовое право (7)
КоАП (4)

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




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

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


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

В избранное