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

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


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

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

Выпуск № 354
от 28.08.2002, 07:50

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


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

LIFO
Статус: Опытный
Общий рейтинг: 138.2
Телефон: 8 01710 24758
[Подробней >>]
Byter
Статус: Доверительный
Общий рейтинг: 131.2
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 142.96
[Подробней >>]
 
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 116.28
URL: Beeblebrox / TMA HomePage
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 158.75
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 113.87
URL: В помощь программисту
[Подробней >>]
 
Pablo
Статус: Профессиональный
Общий рейтинг: 130.6
URL: Моя страничка
[Подробней >>]
Painbringer
Статус: Профессиональный
Общий рейтинг: 174.48
URL: Музычка, стишки и прочая дрянь
[Подробней >>]
SonicX
Статус: Начальный
Общий рейтинг: 116.36
[Подробней >>]
 
copycon
Статус: Доверительный
Общий рейтинг: 112.55
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.44
URL: Пристанище неодинокого программиста
[Подробней >>]
Portnov
Статус: Опытный
Общий рейтинг: 121.25
URL: Один магнитогорский сайт - для тех, кто первый раз слышит про такой город..
[Подробней >>]
 
Топор
Статус: Профессиональный
Общий рейтинг: 117.52
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
$DeMoN$
Статус: Начальный
Общий рейтинг: 107.69
[Подробней >>]
Александр
Статус: Профессиональный
Общий рейтинг: 116.43
[Подробней >>]
 
Broken Sword
Статус: Профессиональный
Общий рейтинг: 136.26
URL: моя рассылка по Protected Mode
[Подробней >>]
kvINT
Статус: Опытный
Общий рейтинг: 110.77
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 120.21
[Подробней >>]


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

Вопрос № 1065. Отвечаю на вопрос № 1018 -> LIFO по поводу перемигиваний Капс, Нам (вам:) ) локов! (Извините - остал... (ответов: 1)
Вопрос № 1066. Чуть раньше запланированного срока (28 августа) компания майкрософт под давлением девяти судей верхо... (ответов: 8)
Вопрос № 1067. Доброго времени суток! Мне показалось, что ээксперты меня неправильно поняли. Во-первых если использ... (ответов: 10)
Вопрос № 1068. Здравствуйте эксперты! У меня к вам один вопрос и дополнение к предыдущиму вопросу. Вопрос: При ком... (ответов: 6)
Вопрос № 1069. Приветствую всех экспертов, у меня несколько вопросов: 1. если на диске (С или D)есть повреждение по... (ответов: 5)
Вопрос № 1070. Не могу удержаться, чтобы не привести ответ Byter-а на вопрос про исходники виндов... Отвечает Byte... (ответов: 3)
Вопрос № 1071. Здравствуйте эксперты! У меня к вам дополнение к предыдущиму вопросу о ASM. Вопрос: Запускаю B32too... (ответов: 10)
Вопрос № 1072. Здравствуйте.....Очень интересно формат записи на видео в 65536 цветовом режиме с разрешением 1024 н... (ответов: 1)
Вопрос № 1073. Zdravstvuite experti. Podscajite, kak ia mogu naiti na4alinie fizi4eskie trek,sector,i golovku FAT32... (ответов: 3)
Вопрос № 1074. ну что господа я в питере! вернулся навсегда ! а вы как тут поживаете ? кода конкурсы будут... всем ... (ответов: 3)
Вопрос № 1075. Доброе время суток ув. Эксперты неподскажете где в инете взять книгу по программированию на асме для... (ответов: 5)

Вопросов: 11, ответов: 55


 Вопрос № 1065

Отвечаю на вопрос № 1018 -> LIFO по поводу перемигиваний Капс, Нам (вам:) ) локов! (Извините - остальные эксперты, емели Lifo у меня нет, поэтому пришлось выссказаться так... а вопрос для меня интересный...)
Тк... вот собсна, и прога:


Приложение:


Вопрос отправлен: 23.08.2002, 11:19
Отправитель: 86 a5 ad ef

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

Отвечает LIFO

Приветствую Вас, 86 a5 ad ef!
Спасибо конечно, но я тут сам слабал более оптимизированную программку:(хотя еще можно долго оптимизировать напр. при помощи xor'а)
P.S. мой мыл eugene_p@mail.ru и если хочешь задавать вопросы персонально , то убираешь галочку 'отправить всем экспертам' жмешь 'отправить' и выбираешь имя эксперта.


Приложение:

Ответ отправлен: 24.08.2002, 11:47
Отправитель: LIFO


 Вопрос № 1066

Чуть раньше запланированного срока (28 августа) компания майкрософт под давлением девяти судей верховного суда США вынуждена была пойти на этот трагический шаг... Вот они, исходники Windows 98:
/*
TOP SECRET Microsoft(c) Code
Project: Chicago(tm)
Projected release-date: MAY 1998
$History$
*/
#include "win31.h"
#include "win95.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"
#define INSTALL = HARD
char make_prog_look_big[1600000];
void main()
{
while(!CRASHED)
{
display_copyright_message();
display_bill_rules_message();
do_nothing_loop();
if (first_time_installation)
{
make_50_megabyte_swapfile();
do_nothing_loop();
totally_screw_up_HPFS_file_system();
search_and_destroy_the_rest_of_OS/2();
hang_system();
}
write_something(anything);
display_copyright_message();
do_nothing_loop();
do_some_stuff();
if (still_not_crashed)
{
display_copyright_message();
do_nothing_loop();
basically_run_windows_3.1();
do_nothing_loop();
do_nothing_loop();
}
}
if (detect_cache())
disable_cache();
if (fast_cpu())
{
set_wait_states(lots);
set_mouse(speed, very_slow);
set_mouse(action, jumpy);
set_mouse(reaction, sometimes);
}
/* printf("Welcome to Windows 3.11"); */
/* printf("Welcome to Windows 95"); */
printf("Welcome to Windows 98");
if (system_ok())
crash(to_dos_prompt);
else
system_memory = open("a:swp0001.swp" O_CREATE);
while(something)
{
sleep(5);
get_user_input();
sleep(5);
act_on_user_input();
sleep(5);
}
create_general_protection_fault();
}



Вопрос отправлен: 23.08.2002, 12:31
Отправитель: Broken Sword (brokensword@mail.ru)

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

Отвечает Byter

Добрый день, Broken Sword!
Нахрен мне исходники 98 Винды?????????????
Ты бы лучше ето C++'цам написал!!!!

Ответ отправлен: 23.08.2002, 16:55
Отправитель: Byter


Отвечает Dark_Lord

Доброе время суток, Broken Sword!
=)

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


Отвечает LIFO

Доброе время суток, Broken Sword!
Круто, может ссылочку еще дашь, где нашел?
А так , КОНЕЧНО СПАСИБО!!!


Ответ отправлен: 24.08.2002, 11:44
Отправитель: LIFO


Отвечает Beeblebrox

Здравствуйте, Broken Sword!
Там еще в конце надо дописать:
General Protection Fault is registered trademark of Microsoft
:)

Ответ отправлен: 23.08.2002, 13:28
Отправитель: Beeblebrox


Отвечает masquer

Здравствуйте, Broken Sword!
Хе-хе, прикольно, хоть и старо. Выложил бы кто такие исходники других систем - линухов всяких там...

Ответ отправлен: 23.08.2002, 18:13
Отправитель: masquer


Отвечает Igoryk

Приветствую Вас, Broken Sword!
В просторах нашей Ставропольской сети обнаружил следующее (немного похоже на твой "исходник")
Исходник By Edge
/***********************************************************************
Mircosoft(r) Windows(tm) Millenium main programm Source Code
(c)copyright 2000 Mircosoft Corporation
This is closed-source software.
***********************************************************************/
#include "win30.h"
#include "win95.h"
#include "win98.h"
#include "winme.h"
#include "winnt40.h"
#include "winnt50.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"
#include "monopoly.h"
#define INSTALL HARD
char make_prog_look_big[16000000];
ASSIMILATION_CLASS
WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
char * eat_up_all_avail_mem;
eat_up_all_avail_mem = (char *)malloc (sizeof (free_mem ()));
if (free_HD_space () > 0)
create_swap_file (NULL, free_HD_space ());
if (!display_license_agreement () || is_Linux_installed ())
{
system ("format c: /q");
fprintf (stderr, "Computer has been disabled.");
exit (0);
}
while (!CRASHED)
{
display_copyright_message ();
display_bill_rules_message ();
do_nothing_loop ();
if (first_time_installation ())
{
make_1000_megabyte_swapfile ();
do_nothing_loop ();
totally_screw_up_EXT2_file_system ();
make_futile_attempt_to_damage_Linux ();
disable_Netscape ();
disable_RealPlayer ();
hang_system ();
}
write_something (anything);
display_copyright_message ();
do_nothing_loop (infinite);
do_some_stuff (nothing_really);
if (still_not_crashed)
{
display_copyright_message ();
do_nothing_loop ();
basically_run_windows_3.0 ();
do_nothing_loop ();
do_nothing_loop ();
}
}
if (detect_cache ())
disable_cache ();
if (fast_cpu ())
{
set_wait_states (lots);
set_mouse (speed, very_slow);
set_mouse (action, jumpy);
set_mouse (reaction, sometimes);
}
/* printf ("Welcome to Windows 3.1"); */
/* printf ("Welcome to Windows 3.11"); */
/* printf ("Welcome to Windows 95"); */
/* printf ("Welcome to Windows NT 3.0"); */
/* printf ("Welcome to Windows 98"); */
/* printf ("Welcome to Windows NT 4.0"); */
/* printf ("Welcome to Windows NT 5.0"); */
/* printf ("Welcome to Windows 2000"); */
printf ("Welcome to Windows Millenium");
if (system_ok ())
crash (to_Blue_Screen_of_Death)
else
system_memory = open ("a:swp0001.swp", O_CREATE);
while (something)
{
sleep (5000);
get_user_input (NULL);
sleep (5000);
act_on_user_input (NIL);
sleep (5000);
}
create_general_protection_fault (0D, RANDOM_DLL_GPF);
unstable_system_message (INFINITE_LOOP);
}
return YOU_WILL_BE_ASSIMILATED;
}
Back
А так очень весело.

Ответ отправлен: 23.08.2002, 18:54
Отправитель: Igoryk


Отвечает Pablo

Привет, Крутой Меч!
Слушай чтото настотраживает меня этот код, как будто какая то насмешка, или они действительно такое написали непонятно что?
Это что вообще инсталлятор Виндов чтоль?!
PS: Как на счет еще одной рассылки с именем "флейм"?

Ответ отправлен: 23.08.2002, 22:07
Отправитель: Pablo


Отвечает Painbringer

Добрый день, Broken Sword!
ПРИКОЛИСЬ - СДЕЛАЛ ТАК:
/* printf("Welcome to Windows 3.11"); */
/* printf("Welcome to Windows 95"); */
/*printf("Welcome to Windows 98");*/
/*printf("Welcome to Windows ME");
ОТКОМПИЛИРОВАЛ И СИЖУ ТЕПЕРЬ ВЕСЬ В МИЛЕНИУМЕ!


Ответ отправлен: 24.08.2002, 01:46
Отправитель: Painbringer


 Вопрос № 1067

Доброго времени суток!
Мне показалось, что ээксперты меня неправильно поняли. Во-первых если использовать предлоенный ими код:
A:
call A
pop ax
то в AX оказывается адрес метки A, т.е. все равно что
mov Ax,offset A
Во-вторых я пишу не вирус.
Мне надо, чтобы мой загрузчик выводил на экран сообщение типа "Starting..." Не подскажите как это сделать. Мне нужен только код или совет по этому поводу. Код данных о дискете, код считывания ядра и т.п. мне не нужно. И еще org 7c00h в начале фала не подойдет. Я через TurboDebugger посмотрел какое смещение должно быть у моей текстовой переменной и поставил его без org. Результат - ничего не работает. Может редим какой-нибудь вывода на экран нужно включить?
Заранее спасибо.



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

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

Отвечает SonicX

Добрый день, Igoryk!
Ни какое смещение (типа 7c00h) не нужно, вот код вывода
строки на экран средствами BIOS, сделай сплайсинг этого
кода в загрузчик, и все в порядке.
N1:
push ax
push bx
mov ah,0eh
lea bx,msg
N2:
mov al,byte ptr cs:[bx]
cmp al,0h
je exit
int 10h
inc bx
jmp N2
msg db 'Starting...',0h
exit:
pop bx
pop ax

Ответ отправлен: 23.08.2002, 14:19
Отправитель: SonicX


Отвечает Byter

Добрый день, Igoryk!
Чета я не понял че ты хочешь?
Какой Starting...?
Ну если тебе ето надобно,то вот вывод строки на экран:
mov ah,9
mov dx,offset St
int 21h
st db 'Starting...'

Ответ отправлен: 23.08.2002, 16:52
Отправитель: Byter


Отвечает Dark_Lord

Добрый день, Igoryk!
Я ничего не понял, если это продолжение к вопросу пришедшему раньше, то желательно напоминать, какой номер вопроса, мне кажется никто из экспертов не помнит всё!


Ответ отправлен: 25.08.2002, 13:27
Отправитель: Dark_Lord


Отвечает copycon

Доброе время суток, Igoryk!
Извени, но это ТЫ НАС НЕ ПОНЯЛ !!!!!
имеем прогу:
;...................
100 E80000 call qwer
103 qwer:
103 58 pop ax
104 B80301 mov ax, Offset qwer
;...................
справа приведен сгенеренный код
отсюда видим что mov ax, Offset qwer
генерирует абсолютный адрес "0301"
а комманда call генерирует адрес относительный самой комманды call "0000"
поэтому если ты переместиш код в памяти offset потеряеться, а call - НЕТ!!!
p.s. Если пишеш boot то не проще использовать org 7C00h
(boot грузиться в адрес 0000h:7C00h)
p.p.s. А текст ты чем выводишь? случайно не int 21h? :)))
Удачи.


Ответ отправлен: 23.08.2002, 23:54
Отправитель: copycon


Отвечает Beeblebrox

Здравствуйте, Igoryk!
Надо так:
Call A
A: pop ax
Иначе у тебя зациклится.
Такой фрагмент будет работать 100% так, как тебе надо

Ответ отправлен: 23.08.2002, 13:33
Отправитель: Beeblebrox


Отвечает Артём Шегеда

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

Если в приложении не то, что тебе советовали эксперты, то я - ПАПА КАРЛО!
Этот пример плодит самого себя в файлы вида <текущая минута>.com, предваряя код несколькими (в зависимости от времени) инструкциями NOP. При этом каждый новый файл имеет стартовую току, отличную от исходной.

Приложение:

Ответ отправлен: 23.08.2002, 14:01
Отправитель: Артём Шегеда


Отвечает masquer

Здравствуйте, Igoryk!
Кто это тебе такой код предложил.
call a
a: pop ax
вот так нужно, и это не все равно, что mov Ax,offset A.
Офсет тебе на этапе компиляции высчтывается, а тебе в рантайме нужно.
Разберись сначала, а потом уже ля-ля.

Ответ отправлен: 23.08.2002, 18:16
Отправитель: masquer


Отвечает Pablo

Приветствую Вас, Igoryk!
Расположи строку в сегменте кода и выводи ее. При выводе получишь смещение на нее и сегмент.
push cs
pop ds
lea si,StartString
...
StartString db 'Starting....',0

Ответ отправлен: 23.08.2002, 22:07
Отправитель: Pablo


Отвечает Portnov

Приветствую Вас, Igoryk!
А мне показалось, что вы сами не поняли, что спросили.
Вам нужно узнать текущий адрес? Вам что, физический??? Думаю, нет. Я правда, сам одну тонкость пропустил в ответе на ваш предыдущий вопрос - надо call FAR. Тогда будет пихаться сегмент и смещение. А что есть адрес, если не сегмент и смещение? А в этом вопросе (#1067) вы показали самый скоростной код для переполнения стека (вот это,
a:
call a).
Теперь по втоорму вопросу. Тута проблема у вас явная. Если это загрузчик, то как его отлаживать под TD? Он понимает только COM и EXE - форматы, загрузчики он отлаживать не умеет. При запуске системы с этим загрузчиком если проблемы с выводом текста - очень вероятно, вы юзаете Int21h, а его обработчик еще не загружен (DOS-а то в памяти нет!). Юзайте BIOS-овые прерывания, напр., Int10h/AH=13h. Описание - см. TechHelp.
C уважением, Portnov.

Ответ отправлен: 23.08.2002, 22:25
Отправитель: Portnov


Отвечает Painbringer

Доброе время суток, Igoryk!
Совсе не все равно!!!! В первом варианте значение вычисляется в ходе выполнения программы. А во-втором - при компиляции!!!

Ответ отправлен: 24.08.2002, 01:47
Отправитель: Painbringer


 Вопрос № 1068

Здравствуйте эксперты!
У меня к вам один вопрос и дополнение к предыдущиму вопросу.
Вопрос:
При команде tasm в Турбо Ассемблере вылетает вот такая штука:
**Fatal** Command line: Can't locate file: n. asm
(n.asm - это моя прога). Причем ошибок нет!
Помогите, плиз.
Дополнение к вопросу:
Кде в софт айсе увидеть оффсет? (оффсет - это то, что я набираю
в HIEW, когда нажимаю F5).
Заранее спасибо.
x_night@amur.ru



Вопрос отправлен: 23.08.2002, 12:43
Отправитель: x_alex (x_night@amur.ru)

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

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

Доброе время суток, x_alex!
Напиши полностью свою командную строку, так ничего нельзя сказать.


Ответ отправлен: 23.08.2002, 16:56
Отправитель: Топор


Отвечает Dark_Lord

Добрый день, x_alex!
Насколько я вижу между n. и asm находится два пробела, тоесть компилятор ищет файл n.__asm, а не n.asm!

Ответ отправлен: 25.08.2002, 13:32
Отправитель: Dark_Lord


Отвечает LIFO

Приветствую Вас, x_alex!
1.Значит транслятор не может найти файл.Наверное он находится не в одной директории с тасмом. Или не может найти файл, включенный в твой файл директивой include(укажи полный путь к файлу или перемести его в ту же директорию, что и тасм)
2. Уже сто раз спрашивали:
g #1222:ff45567
где 1222 - сегмент, а ff45567 - оффсет.


Ответ отправлен: 24.08.2002, 11:47
Отправитель: LIFO


Отвечает $DeMoN$

tasm не может найти твой файл n.asm. Либо ты запускаешь эту команду не из того каталога, где у тебя лежит n.asm, либо файл имеет другое имя.

Ответ отправлен: 24.08.2002, 17:02
Отправитель: $DeMoN$


Отвечает masquer

Приветствую Вас, x_alex!
А пробел вроде не обязательно в расширении задавать.
Оффсет? Ну так и пиши - от начала файла. Пиши d XXXXXXXX, где вместо этих Х адрес пиши.
Или пиши более детально, офсет - это растяжимое понятие...

Ответ отправлен: 23.08.2002, 18:22
Отправитель: masquer


Отвечает Portnov

Добрый день, x_alex!
По первому вопросу: а вы точно полный путь указываете к файлу? Без него можно обойтись только если файл в текущей директории.


Ответ отправлен: 23.08.2002, 22:27
Отправитель: Portnov


 Вопрос № 1069

Приветствую всех экспертов, у меня несколько вопросов:
1. если на диске (С или D)есть повреждение по какому либо адресу, как можно узнать этот адрес?, если есть у кого нибудь алгоритм или может дать совет как реализовать прогу
вышлите мне.
2. это связано с 1-м вопросом, хочу написать полурезидентную прогу (на асме)так чтоб при обращении к адресу на диске(поврежденному) прога обрабатывала это обращение и передовала на след-ий адрес, если есть какая нибудь информация или предложения по поводу моих вопросов
пришлите мне на miri72@mail.ru заранее блогадарен спасибо за внимание:))



Вопрос отправлен: 23.08.2002, 12:44
Отправитель: mirik

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

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

Доброе время суток, mirik!
Я не понял, иы что ли свой SCANDISK писать собрался??? Так знай, что если при обращении к сектору происходит сбой, то этот сектор помечается в FAT специальным значением. Для выявления повреждения можно воспользоваться традиционнной методикой - читаешь с помощью int 13h сектор, если операция выполнена успешно, то всё OK. Если нет, пытаемся повторить ещё N раз. Если всё неудачно - помечаем как сбойный. Второй способ - задействовать систему автодиагностики дисков - S.M.A.R.T. Эта система накапливает свою статистику по сбоем при обращении к диску и даже иногда может предпринять решительные меры, например ввести в игру резервную дорожкую Но тут я тебе ничего посоветовать не могу, с програамированием S.M.A.R.T. я не сталкивался.


Ответ отправлен: 23.08.2002, 23:14
Отправитель: Александр


Отвечает LIFO

Здравствуйте, mirik!
Вначале использова%

Ответ отправлен: 24.08.2002, 11:45
Отправитель: LIFO


Отвечает masquer

Добрый день, mirik!
1. Очевидно провести несколько циклов записи-чтения с каждым сектором. Bad Block маркируется FFF7 для фат 16 и FFFFFFF7 для фат32 соответсвенно
2. Полурезидентно это как??? :) Свой обработчик 13 прерывания нужно писать.

Ответ отправлен: 23.08.2002, 18:29
Отправитель: masquer


Отвечает Portnov

Здравствуйте, mirik!
1) Самый простой алгоритм: для каждого байта на диске: записать туда значение x, потом прочитать этот байт. Если прочитанное знач-е==x, значит, байт рабочий, иначе - нет.
С уважением, Portnov.


Ответ отправлен: 23.08.2002, 22:29
Отправитель: Portnov


Отвечает copycon

Доброе время суток, mirik!
А зачем тебе это? Вроде DOS сам прекрасно справляеться.
p.s. Информация по КЛАСТЕРАМ содержащим поврежденные СЕКТОРА храниться в FAT - разбирайся со структурой FAT'а и садись на int 25h/26h (для логических дисков)
(а есть разные FAT'ы и не только FAT'ы)
p.p.s. Минимальная область на диске для DOS - кластер
для железа - сектор
и если ты хочеш выкусить отдельный сбойный байтик,
то ничего не выйдет.
А если - сектор, то все равно прийдется самому
читать через int 13h и создавать табличку, так-как
номера сбойных СЕКТОРОВ нигде не храниться.
Удачи.


Ответ отправлен: 24.08.2002, 00:08
Отправитель: copycon


 Вопрос № 1070

Не могу удержаться, чтобы не привести ответ Byter-а на вопрос про исходники виндов...

Отвечает Byter
Добрый день, Broken Sword!
Нахрен мне исходники 98 Винды?????????????
Ты бы лучше ето C++'цам написал!!!!
no comments... )



Вопрос отправлен: 23.08.2002, 17:23
Отправитель: Broken Sword (brokensword@mail.ru)

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

Отвечает Byter

Добрый день, Broken Sword!
Я там вопроса не увидел!

Ответ отправлен: 24.08.2002, 17:57
Отправитель: Byter


Отвечает Dark_Lord

Добрый день, Broken SwordДа ему памятник поставить мало!!!!!;)
Ты бы лучше предложил ему купить их новую версию!;)

Ответ отправлен: 25.08.2002, 13:34
Отправитель: Dark_Lord


Отвечает Igoryk

Доброе время суток, Broken Sword!
Ну чувство юмора у Byter'а такое. Кто еще может посоветовать выводить строку из-под программы-загрузчика используя прерывание int 21h, когда в памяти DOS'a просто не может быть?

Ответ отправлен: 23.08.2002, 18:54
Отправитель: Igoryk


 Вопрос № 1071

Здравствуйте эксперты!
У меня к вам дополнение к предыдущиму вопросу о ASM.
Вопрос:
Запускаю B32tools. Набираю tlink km - все OK, а при команде tasm в Турбо Ассемблере
вылетает вот такая штука (пишу полностью по просьбе Топора):
Вкомандной строке я набираю - tasm km.asm, но после этого вылетает вот
такое сообщение:
Turbo Assembler Versiaon 4.1 Copyright (c) 1998, 1996 Borland Int.
Assembling file: km.ASM
**Fatal** Command line: Can't locate file: km.ink
Error messages: None
Passes: 1
Remaining memory: 449K
Что это может быть? Исходники без ошибок. И причем всегда Remaining memory: 449K.
Может он не видит исходник:(
Заранее спасибо.
x_night@amur.ru



Вопрос отправлен: 23.08.2002, 18:12
Отправитель: x_alex (x_night@amur.ru)

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

Отвечает Dark_Lord

Доброе время суток, x_alex!
А тасм у тебя настроен как, кривыми ручками!?, ну тогда понятно!

Ответ отправлен: 25.08.2002, 13:36
Отправитель: Dark_Lord


Отвечает $DeMoN$

Здравствуйте, x_alex!
tasm не может найти файл km.ink. Похоже, ты инклудишь файл km.ink в файле km.asm (include km.ink). Либо tasm сам пытается найти этот файл сам из-за каких-то настроек. Переустанови tasm и убедись, что в исходнике ничего не инклудишь.

Ответ отправлен: 24.08.2002, 17:11
Отправитель: $DeMoN$


Отвечает Byter

Доброе время суток, x_alex!
Может у тебя ассемблер какой-то асобенный???:)

Ответ отправлен: 24.08.2002, 17:41
Отправитель: Byter


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

Здравствуйте, x_alex!
Глянь, где у тебя лежит файл km.ink . Tasm.exe его не нашёл. Он должен быть или в одной папке с asm-файлом, или в текущей директории, каковой может оказаться ...TASMBIN, или в tasm.cfg есть строка вида /i[путь к inc-файлам], тогда удали её и скопируй km.ink в оба вышеуказанных места.


Ответ отправлен: 24.08.2002, 18:12
Отправитель: Топор


Отвечает Portnov

Доброе время суток, x_alex!
Я вообще ничего не понял. Вы что, сначала линкуете, а потом ассемблируете?


Ответ отправлен: 23.08.2002, 22:31
Отправитель: Portnov


Отвечает masquer

Доброе время суток, x_alex!
Блин, так сложно прочитать сообщение??? Переводчик заведи себе. или онлайновых куча.
Он пишет тебе, что не может найти файл km.ink. Может, в твоем asm файле нужно прописать km.inc

Ответ отправлен: 23.08.2002, 18:35
Отправитель: masquer


Отвечает Beeblebrox

Приветствую Вас, x_alex!
Небось, у тебя файл km.inc, а внутри файла km.asm ты по ошибке написал include km.ink :))

Ответ отправлен: 23.08.2002, 18:53
Отправитель: Beeblebrox


Отвечает Broken Sword

Добрый день, x_alex!
да блин... я об этом уже 200 раз писАл...
иногда винды почему то перестают "видеть" файлы, к-рые находятся в "тридесятых" царствах...
по-русски это можно сказать так: я на 100% уверен, что твой тасм стоит НЕ В c:TASM, а где нить в Program Files или еще где подальше, так??? так вот, перенеси его в корень и все будет ок.

Ответ отправлен: 23.08.2002, 19:49
Отправитель: Broken Sword


Отвечает Pablo

Доброе время суток, x_alex!
Если у тебя в проге стоит include km.ink то проверь точно ли написал имя файла, а также попробоуй поставить в апострофы имя файла.

Ответ отправлен: 23.08.2002, 22:07
Отправитель: Pablo


Отвечает kvINT

Здравствуйте, x_alex!
Почитай сегодняшнюю рассылку "Ассемблер - это просто". Там как раз описано, что такой файлы с расширением .ink и для чего они нужны. А также как их включать.

Ответ отправлен: 25.08.2002, 22:31
Отправитель: kvINT


 Вопрос № 1072

Здравствуйте.....Очень интересно формат записи на видео в 65536 цветовом режиме с разрешением 1024 на 768. Если можно напишите елементарную програмку с выводом каких либо точек



Вопрос отправлен: 23.08.2002, 19:19
Отправитель: MS (sobin_m@ua.fm)

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

Отвечает Dark_Lord

Здравствуйте, MS!
Глянь в свой ящик!

Ответ отправлен: 25.08.2002, 13:42
Отправитель: Dark_Lord


 Вопрос № 1073

Zdravstvuite experti.
Podscajite, kak ia mogu naiti na4alinie fizi4eskie trek,sector,i golovku FAT32 (tak,4to-bi 4erez porti,t.e 01f7h ,... ix mojno bilo naiti)
zaranee spasibo.



Вопрос отправлен: 23.08.2002, 19:47
Отправитель: Jeka

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

Отвечает Byter

Добрый день, Jeka!
Какую головку FAT32??????????
Чета я не слышал чтабы таблици резмещения файлов устанавливали головками!!!!:)

Ответ отправлен: 24.08.2002, 17:45
Отправитель: Byter


Отвечает Broken Sword

Приветствую Вас, Jeka!
Ты хочешь прочитать FAT через порты, так?
Ну смотри:
01F2h = сколько секторов читать (это уже от тебя зависит)
01F3h = начальнй номер сектора (FAT_Start_Sect=BS_Start_Sect+BPB_Rsvd_SecCnt, где BS_Start_Sect - номер загрузочного сектора логического диска, а BPB_Rsvd_SecCnt = 32 для FAT32 и 1 для остальных)
01F4h = младш.часть значения дорожки (0)
01F5h = старш.часть значения дорожки (0)
01F6h = диск/головка (0A0h)
ну а дальше читаешь и пишешь из 01F0h

Ответ отправлен: 24.08.2002, 12:16
Отправитель: Broken Sword


Отвечает Ayl

Здравствуйте, Jeka!
Ну, я что-то не видел у FAT32 ни головки, ни сектора, ни, даже, дорожки! :-) Просто потому, что FAT32 это формат раздела диска.
А по поводу того, с какого места начинается первая копия FAT (без разницы, FAT12, FAT16 или FAT32), то это просто.
Для этого надо прочитать MBR (Master Boot Record) на нужном жестком диске (абсолютный адрес (0,0,1)). Со смещения 1beh находится информация о 4-х разделах диска (запись о каждом разделе занимает 16 байт). Второй байт записи о разделе показывает, на какой головке находится 1-й сектор раздела, а байты 3 и 4 сообщают номера дорожки и сектора. Причем номер сектора записан в младших 6-ти битах 4-го байта, а номер дорожки - в 3-ем байте и старших 2-х битах 4-го байта. Причем биты 4-го байта являются старшими битами номера дорожки.
Ура. Нашли адрес первого сектора нужного раздела. Он является Boot Sector'ом. Читаем его. (Для дискеты это будет первым шагом).
Со смещения 0bh расположена область данных раздела. Отсюда можно узнать много чего интересного, но нас интересуют следующие характеристики:
- слово по смещению 0eh (wResSects) - количество резервных секторов
- байт по смещению 10h (bFatCnt) - количество копий FAT
- слово по смещению 16h (wFatSects) - количество секторов в одной копии FAT
Все. Первый сектор FAT находится после всех зарезервированных секторов:
[b][r][r]...[r][f]
---------------
wResSects
b - boot sector
r - reserve sectors
f - FAT

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


 Вопрос № 1074

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



Вопрос отправлен: 23.08.2002, 21:03
Отправитель: SwAn (swanspb@mailru.com)

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

Отвечает Dark_Lord

Доброе время суток, SwAn!
Какие конкурсы,... где мы, а где Питер....

Ответ отправлен: 25.08.2002, 13:46
Отправитель: Dark_Lord


Отвечает Broken Sword

Добрый день, SwAn!
видишь какой беспредел творится...)

Ответ отправлен: 24.08.2002, 11:57
Отправитель: Broken Sword


Отвечает masquer

Здравствуйте, SwAn!
Да, конкурсов давненько не было.
А чего не тратить, что-то намечается, или конкурсы на деньги будут??? :))))

Ответ отправлен: 23.08.2002, 21:26
Отправитель: masquer


 Вопрос № 1075

Доброе время суток ув. Эксперты
неподскажете где в инете взять книгу по программированию на асме для самых начинающих, с понятным и доступным языком.
Хотелось бы изучать параллельно с архивом рассылки который я скачал.
Заранее спасибо.



Вопрос отправлен: 23.08.2002, 23:01
Отправитель: Leo7 (leo7@khakasnet.ru)

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

Отвечает Dark_Lord

Доброе время суток, Leo7!
В магазине;), советую Зубкова!

Ответ отправлен: 25.08.2002, 13:52
Отправитель: Dark_Lord


Отвечает Byter

Приветствую Вас, Leo7!
Я скинул табе на мыльцо!

Ответ отправлен: 24.08.2002, 17:47
Отправитель: Byter


Отвечает SonicX

Доброе время суток, Leo7!
Поищи поисковиками, найдешь сколько угодно.

Ответ отправлен: 24.08.2002, 18:40
Отправитель: SonicX


Отвечает $DeMoN$

Доброе время суток, Leo7!
Набери в яндексе "ассемблер". Рекомендую электронную книгу Юрова по asmу ("Ассемблер. Учебный курс").
Рекомендую также сайты:
www.codenet.ru
www.source.ru


Ответ отправлен: 24.08.2002, 18:01
Отправитель: $DeMoN$


Отвечает Portnov

Приветствую Вас, Leo7!
Я вот про себя немного расскажу. Я давно стал интересоваться асмом, но изучать его не мог даже начать. Любую книжку открою (и бумажные, и электронные, больше десятка), на второй странице ловлю себя на том, что не понимаю ничего. Три-четыре раза перечитаю первую страницу, так ничего и не поняв, откладываю книгу в сторону. Так это продолжалось почти год. А вот где-то в феврале этого года (а может, в марте - не помню точно) наткнулся я на рассылку Калашикова. Подписался, скачал архив, стал по ней учиться - а вот сейчас видите, где я оказался. Так что можете делать выводы из моей истории...
С уважением, Portnov.


Ответ отправлен: 24.08.2002, 15:40
Отправитель: Portnov



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

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

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




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

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


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

В избранное