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

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


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

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

Выпуск № 609
от 07.08.2003, 05:40

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


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

Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 125.16
URL: Методы оптимизации работы ПК
[Подробней >>]
WerWolf
Статус: Начальный
Общий рейтинг: 112.19
[Подробней >>]
Евгений Иванов
Статус: Опытный
Общий рейтинг: 145.14
URL: Super Assembler Software
Телефон: +7 905 6601206
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.29
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 127.05
URL: Эхоконференция по вирмейкингу
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Igoryk
Статус: Профессиональный
Общий рейтинг: 111
URL: IgorykSoft
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 111.63
[Подробней >>]
dimka
Статус: Доверительный
Общий рейтинг: 143.47
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 121.26
URL: мой сайт
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 111.96
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Илья
Статус: Опытный
Общий рейтинг: 103.42
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 135.43
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 119.91
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 113.3
[Подробней >>]


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

Вопрос № 3830. Здраствуйте разрещите свами по говорить есть вопросы?????? по Ассемблеру я наченаюший и мне н... (ответов: 8)
Вопрос № 3831. Добрый день. У меня вопрос по теме № 3787. К сожалению, не успел скачать документацию. Насколь... (ответов: 2)
Вопрос № 3832. Здравствуйте, господа эксперты! У меня такая проблема - не получается работать с SoftIce, точнее не ... (ответов: 1)
Вопрос № 3833. Warning Danger! Всем привет ! Подскажите кто как может. Под виндой изменил значение BIOS (tweak*)==>... (ответов: 1)
Вопрос № 3834. Доброго времени суток! я недавно задавал вопросы про бмп-формат, ргб-модель цвета. Вот ссылки, что я... (ответов: 2)
Вопрос № 3835. Уважаемые эксперты! Помогите разрешить сомнения новичка. Дело в том, что я совсем недавно занимаюсь... (ответов: 3)
Вопрос № 3836. Уважаемые эксперты! Мне надо разделить одно число на другое, причем делимое - единица, делитель - ог... (ответов: 3)
Вопрос № 3837. Приветствую уважаемых экспертов. У меня такой вопрос: как состряпать программку из множества сегмент... (ответов: 4)
Вопрос № 3838. Здраствуйте господа! У меня проблема следующего характера: не обладает ли кто-нибудь из Вас информац... (ответов: 1)

Вопросов: 9, ответов: 25


 Вопрос № 3830

Здраствуйте
разрещите свами по говорить есть вопросы?????? по Ассемблеру я наченаюший и мне не понятно не которые веши Заранее спасибо Я все понял порочёл первую главу 21h шестнадцатеричная а десятичная 33 как это 21 это 21h ше.. а как перевести на 33 де.. будте добры помогите разобратся
(если F'это 15) то (ffff то это 60)



Вопрос отправлен: 01.08.2003, 14:37
Отправитель: Makc (Amirov77@narod.ru)

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

Отвечает Tigran K. Kalaidjian

Добрый день, Makc!
Вы немного запутались:ffffh = 65535
Что касается перевода, то это можно сделать следующим образом:
Возьмем 16-ричное число. Сумма=0.
Берем последнюю цифру и умножаем на 16 в степени 0(т.е. на 1). Прибавляем к сумме.
Берем предпоследнюю цифру и умножаем на 16 в степени 1. Прибавляем к сумме.
Берем предпредпоследнюю цифру и умножаем на 16 в степени 2, Прибавляем к сумме.
.
.
.
Берем первую цифру и умножаем на 16 в степени (n-1), где n-число разрядов
16-ричного числа. Прибавляем к сумме.
В сумме будет лежать 10-чное число, эквивалентное данному.
Единственное, что ещё надо будет прописать-cоответствие "цифр" > 9:
A->10
B->11
C->12
D->13
E->14
F->15
Пример: F1A->10*16^0+1*16^1+15*16^2=3866
Для преобразования в HEX формат следует последовательно делить число на степени 16-ти, при этом понижая показатели степени. Например:
a=456
a div 256 = 1 -> 1
a:=a mod 256
a div 16 = 12 -> C
a:=a mod 16
a div 1 = 8 -> 8
Итого: 456->1C8
Подробнее смотрите в архиве на RusFaq.ru

Ответ отправлен: 01.08.2003, 16:49
Отправитель: Tigran K. Kalaidjian


Отвечает WerWolf

Приветствую Вас, Makc!
Не вопрос... вот смотри что значит в десятичной число к примеру 123 - это значит что у нас есть 1 сотня 2 десятка и 3 еденици, так??? По моему этому во втором класе учат я уже не помню... так вот в десятичной системе счисления всё считаеться десятками (десять десяток это сотня, десять сотен - тысяча и т.д.), а в шеснадцатиричной шеснадцатками, т.е. кпримеру запись числа 21 в шеснадцатеричной системе означает что у нас есть 2 шеснадцатки и одна еденица, т.е. 21 = 2*16 + 1 = 33. Аналогчино получаем что ffff = 15*16*16*16*16 + 15*16*16*16 + 15*16*16 +15*16 + 15 = 65535... так что тут надо не складывать а то можно поличть что даже в десятичной системе счисления запись 999 = 27...
Вообще существует два типа систем счисления, позиционная и не позиционная. Позиционная называеться так потому что имеет значение на каком месте стоит чило т.е. в числе 99 вторая девятка имеет другой смысл (она показывает что у чила 9 десяток), а первая это всего лишь обычная девятка. К не позиционным относиться римская, так как всё таки там меньшая зависимость значения всего числа от позиции знака.

Ответ отправлен: 01.08.2003, 23:20
Отправитель: WerWolf


Отвечает Евгений Иванов

Здравствуйте, Makc!
Ты так торопился, что можно подумать, пишешь с вулкана... :-)
Запоминаешь начальные десятки:
0 = 0
10h = 16
20h = 32
30h = 48
40h = 64
...
F0h = 240
Потом прибавляешь от 1 до 15... Вроде несложно! :)
Например:
9Ch = 90h + 0Ch = 144 + 12 = 156
Так же быстро можно преобразовывать из двоичного в десятичный.
Я помню, когда учился в колледже, у нас была информатика, и там было время,
проходили это дело... перевод чисел.
Так мне было смешно!
Все сидят, корпят над формулами, а я в уме пару секунд и перевёл...
Всего лишь простейшая арифметика!
0010.0110 = 26h = 32 + 6 = 38d
так же и слова:
5E4Fh = (5Eh = 94)*256 + (4Fh = (50h-1) = 80 - 1 = 79 {так проще, чем 64 +
15}) = 94*256+79 = 24143



Ответ отправлен: 02.08.2003, 01:09
Отправитель: Евгений Иванов


Отвечает Ayl

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

Мда... А что у нас с русским языком?
разрешите (через "ш", а не "щ", хотя мог описаться)
с вами (скорее всего, просто описка)
поговорить - слитно
непонятны (в данном предложении слитно и неправильная форма)
некоторые - слитно

Просто не мог проигнорировать такое кол-во ошибок.

Теперь по вопросу. Вчера уже писал по поводу 16-ричной с.с. Попробую пояснить.

Начну с конца. Почему это FFFF - это 60? С какой-такой радости? У тебя что, 9999 - это 36? А 1111 - это 4? Я же писал, что такое позиционная с.с.

FFFF=F*16^3+F*16^2+F*16+F=15*4096+15*256+15*16+15=65535.

Тоже самое с 21h. 21h=2*16+1=32+1=33

То есть каждая цифра шестнадцатеричного числа показывает, сколько соответствующей степени 16 содержится в числе. Так же как для 10-ного числа каждая цифра показывает, сколько единиц, десятков, сотен и т.д. содержится в числе. То есть, соответствующей степени десятки (10^2=100, 10^3=1000 и т.д.)

В общем, см. соответствие:

245d = 2*10^2 + 4*10 + 5 = 200 + 40 + 5
245h = 2*16^2 + 4*16 + 5 = 512 + 64 + 5 = 581

Как видишь, при разложении числа отличается только множитель, равный основанию системы.

Напиши подробнее, что именно непонятно. Помогу.

Ответ отправлен: 01.08.2003, 15:09
Отправитель: Ayl


Отвечает Maverick

Здравствуйте, Makc!
Не, ты меня конечно извини, но почему 60?
1234, это тысяча двести тридцать четыре или десять?


Ответ отправлен: 03.08.2003, 11:13
Отправитель: Maverick


Отвечает Igoryk

Добрый день, Makc!
Смотри:
33 : 16 = 2 (в остатке 1)
17 : 16 = 1 (в остатке 1);
1 : 16 = 0
Ну вот и получется 33d = 21h
Если 0Fh=15, то 0FFFFh это не 0FFh + 0FFh, 0FFFFh = 64535

Ответ отправлен: 03.08.2003, 14:52
Отправитель: Igoryk


Отвечает Dark_Lord

Приветствую Вас, Makc!
Всё совсем не так. Итак, десятичную систему исчисления можно представить как ячейки, в которые может поместиться до 9 едениц. При переполнении ячейки (когда в ней находится 10 едениц) ячейка обнуляется, при этом увеличивая соседнюю ячейку на 1, например
[0][9]+1=[1][0]
в 16-ричной системе всё так-же, за исключением того, что в каждой ячейке может находиться до 15 -и едениц, тоесть при записи в первую ячейку 16 -и в ней останется 0, а во второй ячейке станет 1 еденица
[0][15]+1=[1][0]
только в компьютерном языке числа от 10 до 15 обозначаются буквами от a до f, чтоб они бали односимвольны, тоесть если записать прошлый мой пример на языке компьютера, то он будет выглядеть как
[0][f]+1=[1][0]

Ответ отправлен: 01.08.2003, 18:44
Отправитель: Dark_Lord


Отвечает dimka

Здравствуйте, Makc!
Ты не прав Макс!
Буквы в шестнад. сис. можно назвать "цифрами"
Смотри приложение:

Приложение:

Ответ отправлен: 04.08.2003, 12:00
Отправитель: dimka


 Вопрос № 3831

Добрый день. У меня вопрос по теме № 3787. К сожалению, не успел скачать документацию. Насколько я понял адрес прикрыли, и ничего не скачивается. Подскажите, пожалуйста, где ещё можно скачать эти доки. Заранее благодарен. С уважением Сергей.



Вопрос отправлен: 01.08.2003, 14:41
Отправитель: Sergey (savor2000@mail.ru)

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

Отвечает WerWolf

Доброе время суток, Sergey!
http://kalaidjian.narod.ru/vir/*.*
ну и само сабой вместо *.* нужный файл.
там же в вопросе 3791 дан правильный адрес. У меня всё работает....

Ответ отправлен: 01.08.2003, 23:26
Отправитель: WerWolf


Отвечает Tigran K. Kalaidjian

Добрый день, Sergey!
Ничего не закрывали. Маска для скачки следующая:
http://kalaidjian.narod.ru/vir/[file]
где [file] - имя файла из списка с учётом регистра.
Если возникнут еще вопросы, пишите на kalaidjian@pochtamt.ru

Ответ отправлен: 01.08.2003, 16:28
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3832

Здравствуйте, господа эксперты!
У меня такая проблема - не получается работать с SoftIce, точнее не с самим SI, а с его Symbol Loader. Не могли бы вы объяснить как с ним работать (лоадером этим чертовым)? Раньше у меня под 98 стоял сайс 4.05, так никаких проблем не было - запускал Symbol Loader->Module->Load и все было ok - появлялся сайс. Теперь делаю тоже самое, но почему то запускается само приложение без каких либо признаков сайса, хотя внизу написано SoftIce is active. Подскажите, пожалуйста, а то замучился уже бряки ставить на апи! Мне нужно в entry point попасть. Ах да, сайс - из Driver Suite 2.7, os - WinXP.
TIA



Вопрос отправлен: 01.08.2003, 15:10
Отправитель: Dr.00py (stepipatov@mail.ru)

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

Отвечает Broken Sword

Добрый день, Dr.00py!
Проверь Settings->вкладка Debugging чтоб стояла птичка stop at WinMain....
А вообще это баг SL-а. Чтоб он брякался именно на первой инструкции (хоть убей не пойму зачем это так важно) нужно в nmtrans.dll по адресу 1001CD7A:
1001CD7A 25FFFF0000 AND EAX, 0000FFFF
изменить на:
1001CD7A B8FFFF0000 MOV EAX, 0000FFFF


Ответ отправлен: 02.08.2003, 08:34
Отправитель: Broken Sword


 Вопрос № 3833

Warning Danger!
Всем привет !
Подскажите кто как может.
Под виндой изменил значение BIOS (tweak*)==>Произошло зависание.Перезагрузился.
(Video (GeForce mx400))Вверху надпись Award *Boot Bloock 1998 * Shecksumm erorr *.По члучайности осталась старая перепрошивка.
....Нашёл,записал на дискету перепрошил(Award Flash Writer 8.12) с ключами /sb(не менять бутблок) /tiny(при малой памяти) .Всё заработало.
...Так как у меня осталась старая плата 440LX(тоже 32 ножки Flash(28F001b)) с запоротой Bios.Почувствуя опыт решил перепрошить (надеясь на всемогущий бутблок).Перепрошивать собирался на родной микросхеме 49F001T в 440BX/VIA86P и вставить в LX .Нашёл Перепрошивку,показало что размеры файла не совпадают.
Жаль!
.......и Начал перепрошивать по старой (2года назад сохранённой) перепрошивке для родной платы на случай
вируса в BIOS.Загр. под DOS, ключи те же /sb /tiny
-->"**Complete","Press F1 to *",нажал F1 ,перезагрузка и вечное молчание,переставлял перемычки СМОSA.
1.А где же всемогущий бутблок?
2.Понимают ли разные материнки разные Flash?
3.В чём моя ошибка?
4.Лазил по Биосу не найду бутблок??
(5.ISA Video карточка нужна для ботблока? или в ней свой бутблок.)
......................
Вливайвася:)



Вопрос отправлен: 02.08.2003, 06:21
Отправитель: Yuri (ivanovx@inbox.ru)

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

Отвечает baldr

Добрый день, Yuri!
Для каждой материнки должен быть ТОЛЬКО свой родной флэш!!!!!
Прошивать надо ТОЛЬКО под DOS!
Не понял про бутблок. В контроллере записана инфа по инициализации и материнка просто вызывает для каждого контроллера эту его процедуру.
Рекомендую хватать все, что ты прошивал в охапку и бежать к знакомому (или не очень) крутому компьютерщику. :) Но ты мог железо и убить своими опытами...

Ответ отправлен: 04.08.2003, 11:19
Отправитель: baldr


 Вопрос № 3834

Доброго времени суток!
я недавно задавал вопросы про бмп-формат, ргб-модель цвета. Вот ссылки, что я нашел в инете, на эту тему:
http://compression.graphicon.ru/download/articles/color_space/colorfaq.pdf (~300KB 24 страницы на англ.) очень полезный фак, жаль только, что на английском
http://ifcity.info/infocity/graf/tex_scan.zip (~300kb 12 страниц) "Техника сканирования и основы коррекции изображений"
http://www.osp.ru/pcworld/2001/10/099.htm - "формат bmp-файла" с примерами на паскале
http://pmg-ru.narod.ru/russian/compr.htm - "Основы алгоритма сжатия JPEG"
http://shop.piter.com/library/978531400113/gwin.phtml?fil=wgp01 - "Графика для Windows, б-ка программиста"
http://www.sources.ru/cpp/cpp_cbitmap_onpaint.shtml - "Битовые образы. Контекст памяти" с исходниками на VC++
http://ifcity.info/graf/content/graf145.phtml?id=2476 - "Зависимость количества цветовых градаций печати от разрешения выводного устройства"
http://www.sources.ru/cpp/cpp_skinsystem.zip ~300kb исходники недоделанного mpegplayer'a с поддержкой скинов на VC++
+ на http://www.sources.ru в разделе "паскаль" есть исходники: "bmp2txt", "bmp2pas". тамже несколько полезных статей на эту тему
+ в экзамплах масм32 очень много нужного( "showbmp", "showdib", "bitblt", "imagedit", "palette"- названия говорят сами за себя), на cpp переводится достаточно легко
ЗЫ: отправьте, пожалуйста, в рассылку - таким, как я, должно пригодится :) не одни же эксперты на этот фак подписанны :)



Вопрос отправлен: 02.08.2003, 12:32
Отправитель: вова

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

Отвечает dimka

Приветствую Вас, вова!
Cool!!!!!!!!

Ответ отправлен: 04.08.2003, 11:27
Отправитель: dimka


Отвечает Илья

Отправляю...

Ответ отправлен: 02.08.2003, 13:24
Отправитель: Илья


 Вопрос № 3835

Уважаемые эксперты!
Помогите разрешить сомнения новичка.
Дело в том, что я совсем недавно занимаюсь ассемблером и у меня возникли сомнения
по поводу использования invoke. Это, конечно, удобно, но вот некто
Зубков С. В. пишет, что если использовать invoke, то увеличивается размер
и время выполнения программы и что надо всё писать с помощью push. Кроме того он
пишет, что если использовать invoke то придется отказаться от некоторых приемов
оптимизации. Посоветуйте что лучше? :)).
И еще. Может кто-то подскажет где найти какую-нибудь литературу о программировании
в windows на асме для новичков?
Заранее огромное спасибо :).



Вопрос отправлен: 02.08.2003, 16:45
Отправитель: Ramala (Ramala@hotmail.ru)

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

Отвечает Tigran K. Kalaidjian

Добрый день, Ramala!
ИМХО он не совсем это имел ввиду. Цитирую из его книги:
"И этот текст компилируется в точно такой же код, что и у нас"
Макрос invoke - суть тот же набор из push и call.
От некоторых приемов действительно придется отказаться, но их отсутствие, уверен, Вам не помешает.
Из программирования под Win32 Вам могут понадобиться туториалы Iczelion'a на первых порах, а также справочник по WinAPI-функциям. И то, и другое можно достать на моей ББС(если Вы находитесь в Москве).
Также различные статьи Вы можете найти на http://www.wasm.ru

Ответ отправлен: 02.08.2003, 22:04
Отправитель: Tigran K. Kalaidjian


Отвечает masquer

Здравствуйте, Ramala!
Размер и время? Это либы ты недочитал либо СВ Зубков заблуждается и не знает того, как построен макрос invoke. Это те же push-и и call, только в скрытой форме. Насчет отказаться - есть такое, при такой, например конструкции:
local bla-bla :RECT
...
invoke Foo, bla-bla, edx ; здесь нельзя использовать eax
Но это не так уж и критично и частный случай. Я только invoke пользуюсь, пару раз только пришлось отказаться

Ответ отправлен: 02.08.2003, 19:08
Отправитель: masquer


Отвечает Dark_Lord

Добрый день, Ramala!
Я считаю, что использовать invoke не следует, ну если очень хочется, то легче написать свой макрос. invoke забирает у тебя следующие плюсы программирования, полноценное использование регистра еах, возможности передавать параметры процедуре задолго до её выполнения (что то-же помогает оптимизировать программу), например в eax находится handle окна, надо вызвать две функции, послать сообщение и SetFocus
push eax ;этот параметр остаётся в стеке и используется следуещей процедурой!
push _lParam
push _wParam
push _Message
push eax
call SendMessage
call SetFocus
, это только пара наиболее понятных объяснений, есть ещё куча! Программирование Win32: www.learnasm.narod.ru


Ответ отправлен: 03.08.2003, 12:00
Отправитель: Dark_Lord


 Вопрос № 3836

Уважаемые эксперты!
Мне надо разделить одно число на другое, причем делимое - единица, делитель - огромное число (может состоять из 10 тысяч знаков). Частное требуется получить с точностью до заданного знака после запятой. Из алгоритмов в голову ничего не приходит, кроме классического деления в столбик. Такое деление работает слишком медленно, так как делимое и делитель - это строки. Можете ли вы предложить алгоритм поэффективнее?



Вопрос отправлен: 03.08.2003, 00:04
Отправитель: MathMan (sunwarrior@rambler.ru)

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

Отвечает Евгений Иванов

Доброе время суток, MathMan!
Используй FPU.


Ответ отправлен: 03.08.2003, 10:35
Отправитель: Евгений Иванов


Отвечает Tigran K. Kalaidjian

Добрый день, MathMan!
Пользуйтесь возможностями сопроцессора - один из типов данных подразумевает число в пределах 3.37*10^(-4932).. 1.18*10^(4932), с 19-ю значащими цифрами, что ИМХО Вам и нужно.
Для деления используется команда FDIV сопроцессора.
В двух словах не объяснишь, поэтому подробно читайте у С.В.Зубкова (скачать можно с http://www.bobjohnson.nm.ru) или у Юрова("Ассемблер. Учебник.").
Могу уверить, что ничего в работе с сопроцессором сложного нет - похоже на работу с языками высокого уровня.

Ответ отправлен: 03.08.2003, 11:49
Отправитель: Tigran K. Kalaidjian


Отвечает Dark_Lord

Приветствую Вас, MathMan!
Используй FPU!
fld1
fild some_value64bit
fdivp st(1),st(0)
fstp some_value_80bit
после этого в some_value_80bit смотришь экспоненту (биты 78-64, она со знаком!), потом загружаешь обратно в FPU, создаёшь переменную 32 бита равную 10 и умножаешь число, в стеке FPU на десять N раз, где N=нужное число знаков после запятой.
fld some_value_80bit
fild 32bit_10_dec
fimul N
fmulp st(1),st(0)
поле чего переменную просто нужно записать как значение со знаком,
fistp some_64bit_value
вот и твоя переменная!
Если ничего непонял, но идея нравиться, мыль на Dark_Lord@RusFAQ.ru, объясню подробней!

Ответ отправлен: 03.08.2003, 12:00
Отправитель: Dark_Lord


 Вопрос № 3837

Приветствую уважаемых экспертов. У меня такой вопрос: как состряпать программку из множества сегментов данных и одного сегмента кода. В каждом сегменте данных предполагается хранить большой массив (60 К). Пробовал объединить сегменты (name group data1,data2,data3), компановщик пишет, что общий размер объединяемых сегментов больше 64 К. Возможно ли вообще написать такую прогу, не используя модель памяти FLAT?(до 4Гб). Заранее благодарен.


Приложение:


Вопрос отправлен: 03.08.2003, 01:47
Отправитель: Sergey (asker@rbcmail.ru)

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

Отвечает _vt

Здравствуйте, Sergey!
Компоновщик такое пишет, если пытаешься получить СОМ-файл, т.е. модель памяти tiny, а табе надо ЕХЕ(модель small или medium)... Твой кусок компилю тасмом и тлинком без параметров, получается ЕХЕ-файл без ошибок...Единственно, что "No stack"...Добавь описание стэка...

---===*** E-Man 1.4: I really need in 1.5... Help me!!!***===---


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


Отвечает ASMодей

Добрый день, Sergey!
Ну, допустим, их объединять и не надо, они и так подряд идти будут (надо только указать компилятору определенный ключ). Другое дело, что обращаться к этим данным ты будешь все равно с помощью сегментных регистров и смещения, а они 16-разрядные. Так что придется постоянно переключать сегментные адреса.

Ответ отправлен: 04.08.2003, 08:20
Отправитель: ASMодей


Отвечает Евгений Иванов

Здравствуйте, Sergey!
Объединить не получится, он правильно пишет.
Зачем тебе это?
Пиши в win32 - там линейная память и нет с... сегментов.
Попробовал твою прогу - работает.
VERSION T400
IDEAL
P386
Model use16 Small,Normal StdCall
SMART
Locals @@
b equ byte
w equ word
ww equ dword
t equ type
ofs equ offset
m equ mask
segment data1
MAS1 dt 6000 dup(?)
ends data1
segment data2
MAS2 dt 6000 dup(?)
ends data2
segment data3
MAS3 dt 6000 dup(?)
ends data3
segment data
tmp dw ?
seed dw 1
seed_2 dw 1
one dw 1
sone dw -1
hx dw 160
c128 dw 128
c320 dw 320
c240 dw 240
n dw 1000
accel dt 1.01
ends data
segment code
assume CS:code
proc StartInit
;................
;здесь заполняется массив...
;................
ret
endp StartInit
begin:
assume DS:data1
mov AX,data1
mov DS,AX
lea DI,[MAS1]
call StartInit
assume DS:data2
mov AX,data2
mov DS,AX
lea DI,[MAS2]
call StartInit
assume DS:data3
mov AX,data3
mov DS,AX
lea DI,[MAS3]
call StartInit
mov AH,4ch
int 21h
ends code
segment stack STACK
db 512 dup (?)
ends stack
End begin
;--------------- make.bat
@echo off
cls
e:asmin asm.exe /m9 /t /ml /ie:asminclude %1.ase,%1.obj >_errors.obj
if errorlevel 1 goto exit
e:asmin link.exe /Tde /c /C /x /yx %1.obj ,%1.exe
if errorlevel 1 goto exit
del %1.obj
goto end
:exit
e:asmintohiewhiew.exe _errors.obj
:end


Ответ отправлен: 03.08.2003, 10:35
Отправитель: Евгений Иванов


Отвечает Tigran K. Kalaidjian

Добрый день, Sergey!
У меня всё нормально компилируется и собирается(т.е. Ваша программа работает - проверял в отладчике). Для удобства можно работать с 3-мя дополнительными сегментами (сегментные регистры ES, FS, GS).
А вообще переходите на Win32, там не надо так ограничиваться.

Ответ отправлен: 03.08.2003, 11:31
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3838

Здраствуйте господа!
У меня проблема следующего характера:
не обладает ли кто-нибудь из Вас информацией о книге "Проектирование и реализация ОС" э.Таненбаума????
Линк или аналог меня вполне устроят!
Заранее благодарен.



Вопрос отправлен: 03.08.2003, 05:31
Отправитель: Gamussa

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

Отвечает Tigran K. Kalaidjian

Здравствуйте, Gamussa!
Таненбаума не знаю где достать, но могу предложить по проектированию ОС:
http://codenet.ru/progr/os/intro.php

Ответ отправлен: 03.08.2003, 18:19
Отправитель: Tigran K. Kalaidjian



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (36)
C / C++ (24)
Perl (3)
Builder / Delphi (19)
Pascal (23)
Basic / VBA (12)
Java / JavaScript (12)
PHP (10)
Криптография (9)
WinAPI (14)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (54)
"Железо" (42)
Поиск информации (28)
Администратору
Windows NT/2000/XP (29)
Linux / Unix (11)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (7)
КоАП (5)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


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

В избранное