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

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


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

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

Выпуск № 736
от 04.06.2004, 14:30

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


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

Pawel
Статус: Профессиональный
Общий рейтинг: 153.37
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 134.39
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 111.62
[Подробней >>]
 
Стас
Статус: Доверительный
Общий рейтинг: 128.12
[Подробней >>]
Foamplast
Статус: Профессиональный
Общий рейтинг: 149.3
URL: мой личный сайт
[Подробней >>]
Artemy
Статус: Опытный
Общий рейтинг: 110.99
Телефон: 8 905 549 38 66
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 116.64
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.58
[Подробней >>]
VOVAN
Статус: Опытный
Общий рейтинг: 105.63
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 118.71
[Подробней >>]


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

Вопрос № 5359. Уважаемые эксперты, здравствуйте! 1) В программе имеется буфер размером 1024 байт для размещения в н... (ответов: 5)
Вопрос № 5360. Добрый день! Хочу написать программу под Win9x, которая бы перехватывала все обращения к файловой ... (ответов: 2)
Вопрос № 5361. Здравствуйте!Я уже задавал вопрос по СофтАйс(№ 5298).Установил другой СофтАйс (из ДрайверСтудио2.7).... (ответов: 1)
Вопрос № 5362. Здарова всем. Из одной статьи взял следуйщий код: .386 .model flat, stdcall option... (ответов: 3)
Вопрос № 5363. Здарова всем. Подскажите plz ссылку на хорошее описание прерываний.... (ответов: 1)
Вопрос № 5364. Здравствуйте, уважаемые! Есть код: .data a db "hello",0 .data? b db 1 dup(?) Так вот как с... (ответов: 5)
Вопрос № 5365. День добрый! Может кто подскажет алгоритм преобразования чисел в формате float (IEEE 754) в BCD. Ну ... (ответов: 2)
Вопрос № 5366. Уважаемые эксперты! Как узнать количество цилиндров, головок и секторов на дорожку жёсткого диска из... (ответов: 1)
Вопрос № 5367. Здравствуйте, уважаемые эксперты! СОМ порт имеет скорость 9600 бод или 9600/8 = 1200 байт/сек. Обраб... (ответов: 2)
Вопрос № 5368. Здравствуйте, эксперты! У меня такой вопрос: В файле Setup.ini должен находится адрес LPT-порта, вво... (ответов: 1)
Вопрос № 5371. Привет Что означает инструкция ORG xxx перед кодом на FASM? ... (ответов: 5)

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


 Вопрос № 5359

Уважаемые эксперты, здравствуйте!
1) В программе имеется буфер размером 1024 байт для размещения в нем каких-то данных. Буфер заполняется обработчиком прерывания СОМ-порта. Как определить, то что буфер содержит нужные данные, а также количество байт этих данных, либо буфер пуст – в нем нет нужных нам данных.
2) Правильно ли я думаю? Выполняется цикл в основной программе. При возникновении прерывания СОМ-порта, цикл в основной программе «замораживается», выполняется процедура обработки прерывания, затем возобновляется цикл в основной программе. Если прерывание будет выполняться бесконечно, то основная программа не будет выполняться.


Приложение:


Вопрос отправлен: 29.05.2004, 18:06
Отправитель: Эдуард

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

Отвечает Pawel

Добрый день, Эдуард!
В чём проблема?
Buff rb 1024

Ответ отправлен: 30.05.2004, 19:52
Отправитель: Pawel


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

Добрый день, Эдуард!
1. Нужно завести такие переменные, которые бы всё это содержали.
2. Угу, правильно.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 29.05.2004, 22:29
Отправитель: Евгений Иванов


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

Здравствуйте, Эдуард!
1. Организуй кольцевой буфер (например, как для буфера клавиатуры). Создай две переменных - одна пусть указывает на начало данных в буфере, а другая на конец данных. По ним сможешь определить есть ли данные в буфере, их количество и оставшееся свободное место.
2. Точно так

Ответ отправлен: 30.05.2004, 10:57
Отправитель: ASMодей


Отвечает Стас

Добрый день, Эдуард!
1) когда принимашь данные из порта прибавляй их количество к некой переменной скажем NN.
В основной программе если NN>0, (запрет прерываний) то данные в буффере есть, декодируешь их и сбрасываешь NN в 0 (разрешение прерываний).
2) Да. Прерывание цикла основной программы произойдет само. После выхода из обработчика прерывания программа продолжится с той же команды на которой была прервана.
Если прерывание зацикленно на вечно - комп зависнет.

Ответ отправлен: 29.05.2004, 19:47
Отправитель: Стас


Отвечает Foamplast

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



Ответ отправлен: 02.06.2004, 00:55
Отправитель: Foamplast


 Вопрос № 5360

Добрый день!
Хочу написать программу под Win9x, которая бы перехватывала все обращения к файловой системе и корректировала бы их результаты. Укажите, пожалуста, какие API надо использовать и может ли такая программа быть выполнненна в формате .exe (т.е. не драйвером).
У кого-нибудь есть пример программы (или куска кода), которая пишет в память RAMDAC контроллера видиокарты.
Alexej



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

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

Отвечает Pawel

Приветствую Вас, Alexej!
Можно править таблицу прерываний, и ставить свой обработчик.

Ответ отправлен: 30.05.2004, 19:48
Отправитель: Pawel


Отвечает Foamplast

Здравствуйте, Alexej!
Я тоже хотел бы. Но информация о драйверах файловых систем не входит в DDK, а продаётся отдельно за 900 долларов.
Есть бесплатный проект, освещающий часть информации: http://www.insidewindows.info/


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


 Вопрос № 5361

Здравствуйте!Я уже задавал вопрос по СофтАйс(№ 5298).Установил другой СофтАйс (из ДрайверСтудио2.7).Но теперь другая проблема: SimbolLoader пишет,что Айс активен,всё ok,но после загрузки модуля выдаёт ошибку.Вычитал в какой-то статье,что "Если SL вывел сообщение типа "An error occured during symbol translation/load",значит в отлаживаемом файле отсутствует отладочная информация, жмите OK и наслаждайтесь [диз]ассемблером. " Я так понял,после "ok" должен запускаться Айс,т.е. появляться его окно.Но ничего не происходит.И при тестовом Ctrl+D комп вообще виснет:(
Подскажите,в чём может быть причина.
И ещё вопрос по поводу чайников (кажется,был в одной из недавних рассылок вопрос про чайников):было сказано,что после того,как чайник научится обращаться с Windows,то он уже Юзверь.А как узнать чайнику,что он достаточно знаком с Windows и теперь гордо может именоваться Юзверем?:)
Заранее спасибо за ответы!



Вопрос отправлен: 29.05.2004, 22:54
Отправитель: gnev_makaki

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

Отвечает Foamplast

Добрый день, gnev_makaki!
Знаю, что найду много противников своего совета, однако:
СофтАйс - драйвер режима ядра, то есть его использование само по себе серьёзно изменяет работу системы. Любые ошибки в работе такого отладчика (возможно из-за ошибок пользователя или взломщика) незамедлительно сказываются на всей системе. Не говоря уже о том, что в программном обеспечении такого типа сложно предусмотреть совместимость со всеми версиями ОС.
Вывод: попробуйте отладчик уровня пользователя - OllyDbg. Если вы не пишете драйверы, то это как раз то, что Вам нужно.
http://home.t-online.de/home/Ollydbg


Ответ отправлен: 02.06.2004, 00:55
Отправитель: Foamplast


 Вопрос № 5362

Здарова всем.
Из одной статьи взял следуйщий код:

.386
.model flat, stdcall
option casemap :none ; case sensitive
; ######################################################
include oolsmasm32includewindows.inc
include oolsmasm32includekernel32.inc
includelib oolsmasm32libkernel32.lib
; ######################################################
.data
Msg1 db "Type something > "
Msg2 db "You typed > "
ConsoleTitle db 'Input & Output',0

; ######################################################
.code
; ######################################################
Main proc
LOCAL InputBuffer[128] :BYTE ;буффер для ввода
LOCAL hOutPut :DWORD ;хэндл для вывода
LOCAL hInput :DWORD ;хэндл для ввода
LOCAL lpszBuffer :DWORD ;адрес буфера
LOCAL nRead :DWORD ;прочитано байт
LOCAL nWriten :DWORD ;напечатано байт
;устанавливаем титл окна
invoke SetConsoleTitle, addr ConsoleTitle
;получаем хэндл для вывода
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hOutPut, eax
;печатаем "Type something > "
invoke WriteConsole, hOutPut, addr Msg1, 17, addr nWriten,NULL
;получаем хэндл для ввода
invoke GetStdHandle,STD_INPUT_HANDLE
mov hInput, eax
;вводим
invoke ReadConsole, hInput, addr InputBuffer, 10, ADDR nRead, NULL
;печатаем "You typed > "
invoke WriteConsole, hOutPut, addr Msg2, 12, addr nWriten, NULL
;печатаем то, что ввели
invoke WriteConsole, hOutPut, addr InputBuffer, nRead, addr nWriten, NULL
;задержка, чтобы полюбоваться
invoke Sleep, 2000d
;выход
invoke ExitProcess,0
Main endp

; ######################################################
end Main

По идее он должен создать консоль, потом прочитать в InputBuffer, потом вывести то что мы написали. Но ничего не происходит. Даже консоль не появляется. Что делать?


Приложение:


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

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

Отвечает Artemy

Приветствую Вас, voxel!
Линкe в параметрах укажи /SUBSYSTEM:CONSOLE

Ответ отправлен: 01.06.2004, 13:30
Отправитель: Artemy


Отвечает Pawel

Добрый день, voxel!
Как компилируешь?
Вроде скодом всё в порядке.

Ответ отправлен: 30.05.2004, 19:30
Отправитель: Pawel


Отвечает Foamplast

Добрый день, voxel!
Беглый просмотр текста ошибок не обнаружил. Может быть, вы компилируете приложение как графическое? Необходимо скомпилировать его как консольное приложение. (Или подправить байтик в файле :)


Ответ отправлен: 02.06.2004, 00:55
Отправитель: Foamplast


 Вопрос № 5363

Здарова всем.
Подскажите plz ссылку на хорошее описание прерываний.



Вопрос отправлен: 30.05.2004, 15:22
Отправитель: voxel

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

Отвечает Pawel

Здравствуйте, voxel!
Для какой ОС???????
например http://sasm.narod.ru
А вообше читайте Абеля или Зубкова

Ответ отправлен: 30.05.2004, 19:12
Отправитель: Pawel


 Вопрос № 5364

Здравствуйте, уважаемые!
Есть код:
.data
a db "hello",0
.data?
b db 1 dup(?)
Так вот как скопировать в B второй символ A('e')?



Вопрос отправлен: 30.05.2004, 18:09
Отправитель: voxel

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

Отвечает Pawel

Здравствуйте, voxel!
FASM:
mov eax,[a+1]
mov b,eax


Ответ отправлен: 30.05.2004, 19:09
Отправитель: Pawel


Отвечает Ayl

Здравствуйте, voxel!
mov al, byte ptr a[1]
mov b, al


Ответ отправлен: 31.05.2004, 12:24
Отправитель: Ayl


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

Приветствую Вас, voxel!
lea esi, [a+1]
lea edi, [b]
movsb

* EMan: -=- Любовь существует! =-=


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


Отвечает Стас

Приветствую Вас, voxel!
Чуть напутал Pawel.
Размер B - 1 байт!
mov al,[a+1]
mov b,al

Ответ отправлен: 30.05.2004, 19:56
Отправитель: Стас


Отвечает Dark_Lord

Приветствую Вас, voxel!
mov al,byte ptr [a+01h]
mov b,al
или
mov al,a[1]
mov b,al

Ответ отправлен: 01.06.2004, 16:30
Отправитель: Dark_Lord


 Вопрос № 5365

День добрый!
Может кто подскажет алгоритм преобразования чисел в формате float (IEEE 754) в BCD. Ну или ссылочку на ресурс.Заранее спасибо.



Вопрос отправлен: 30.05.2004, 18:32
Отправитель: Nick

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

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

Здравствуйте, Nick!
А вроде как в BCD только целые числа переводить можно.

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


Отвечает Dark_Lord

Доброе время суток, Nick!
Используй FPU, например есть число float и 80битный приёмник BCD числа, то:
.data
float dd ?
BCD dt ?
_10 dd 1000
.code
fld float
fimul _10
fbstp BCD
после этого в BCD твоё число умноченное на 1000 (чтоб три знака после запятых было!). Нужно точнее - увеличивай _10

Ответ отправлен: 01.06.2004, 16:35
Отправитель: Dark_Lord


 Вопрос № 5366

Уважаемые эксперты!
Как узнать количество цилиндров, головок и секторов на дорожку жёсткого диска из-под DOS? PartitionMagic говорит, что у меня 10011 цилиндров, 255 головок и 63 сектора; видимо, правильно (у меня 80 Гб); функция int 13h, AH=8, DL=80h возвращает неправильный результат (смотрю в CX цилиндр и сектор, в DH -- головку); смотрю вектор int41h -- тоже неправильно.
Какие API есть в Windows для чтения/записи секторов?
Заранее большое спасибо.



Вопрос отправлен: 31.05.2004, 00:53
Отправитель: Шнапс

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

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

Приветствую Вас, Шнапс!
Надо использовать не 8 функцию, а функцию для LBA (48h, по моему).
Есть раширение BIOS. Им и пользуйся.
Вот небольшая выдержка из справки по дисковому интерфейсу.
1. BIOS Extensions
If compatibility with current and future software is to be maintained, the BIOS must provide several extended Int 13h functions to deal with the changes in system architecture that allows for more than two drives to be supported as well as making the FDPT Extension available to application and OS software. The major purpose of these Int 13h Extensions is to remove the current requirement of using Int pointers to point at the FDPT information and to give the BIOS better control over how this data is manipulated. Phoenix has chosen to integrate this information with the Int 13h Extensions adopted by both IBM and Microsoft. The following sections fully describe the Int 13h Extensions. Modifications to the Int 13h Extensions which support changes required by this specification are printed in BOLD.
1.1 Calling Conventions
The extended Int 13h functions are numbered 41h-48h. These new functions are fundamentally different from the conventional Int 13h interface in the following ways:
All addressing information is passed via a buffer, not registers.
Register conventions have been changed to support the passing of data structures.
Flags are used to identify optional capabilities.
4
-------
Check Extensions Present (41h)
Extended Read (42h)
Extended Write (43h)
Verify Sectors (44h)
Extended Seek (47h)
Get Drive Parameters (48h)
8 ------
И вот это главное!
1.1.1.1 Enhanced Disk Drive (EDD) Support
These functions are necessary for a BIOS to provide Enhanced Disk Drive Support (EDD) as follows:
Check Extensions Present (41h)
Get Parameters with EDD extensions (48h)
Set Hardware Configuration (4Eh)
5
============
1.1.1 Get Drive Parameters
Entry:
AH - 48h
DL - Drive number
DS:SI - address of result buffer.
Exit:
carry clear
AH - 0
DS:SI - result buffer
carry set
AH - error code
Return physical device characteristics. This function is mandatory regardless of the interface subset which is supported.
Bit Description
0 DMA boundary errors are handled transparently
1 The geometry supplied in bytes 8-12 is valid
2 Device is removable
3 Device supports write with verify
4 Device has change line support (bit 2 must be set)
5 Device is lockable (bit 2 must be set).
6 Device geometry is set to maximum, no media is present (bit 2 must be set). This bit is turned off when media is present in a removable media device.
7-15 Reserved, must be 0
Result Buffer
Offset Type Description
0 Word Buffer Size, must be 26 or greater. The caller sets this value to the maximum buffer size. If the length of this buffer is less than 30, this functions does not return the pointer to the Enhanced Disk Drive structure (EDD). If the Buffer Size is 30 or greater on entry, it is set to exactly 30 on exit. If the Buffer Size is between 26 and 29, it is set to exactly 26 on exit. If the Buffer Size is less than 26 on entry an error is returned.
2 Word Information Flags In the following table, a 1 bit indicates that the feature is available, a 0 bit indicates the feature is not available and will operate in a manner consistent with the conventional Int 13h interface.
4 Double Word Number of physical cylinders. This is 1 greater than the maximum cylinder number. Use Int 13h Fn 08h to find the logical number of cylinders.
8 Double Word Number of physical heads. This is 1 greater than the maximum head number. Use Int 13h Fn 08h to find the logical number of heads.
12 Double Word Number of physical sectors per track. This number is the same as the maximum sector number because sector addresses are 1 based. Use Int 13h Fn 08h to find the logical number of sectors per track.
16 Quad Word Number of physical sectors. This is 1 greater than the maximum sector number.
24 Word Number of bytes in a sector.
26 Double Word Pointer to Enhanced Disk Drive (EDD) configuration parameters. This field is only present if Int 13h, Fn 41h, CX register bit 2 is enabled. This field points to a temporary buffer which the BIOS may re-use on subsequent Int 13h calls. A value of FFFFh:FFFFh in this field means that the pointer is invalid.


Удачи!

* EMan: -=- Любовь существует! =-=


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


 Вопрос № 5367

Здравствуйте, уважаемые эксперты!
СОМ порт имеет скорость 9600 бод или 9600/8 = 1200 байт/сек. Обработчик прерывания СОМ порта использует буфер FIFO размером 16 байт, т.е. оно будет возникать если в буфере FIFO будут 14 байт данных (размер буфера устанавливается в регистре UART: 1, 4, 8, 14 байт). Таким образом за 1 секунду при скорости 9600 бод возникнет 1200 байт/сек / 14 байт = 86 прерываний/сек. Тактовая частота процессора 486DX2 равна 66 MHz, т.е. он может выполнять 66000000 операций/сек. Обработчик прерывания СОМ порта пишет данные из порта в промежуточный буфер buffer1 и по времени он займет 1/86 сек. Оставшееся время – 1 сек – 1/86 сек = 85/86 сек отдается главной программе, которая занимается конвертированием данных и записывает эти преобразованные данные в другой промежуточный буфер buffer2. За это оставшееся время 85/86 сек. процессор совершит 66000000 операций/сек * 85/86 сек = 65232558 операций.
Вопрос:
1) Правильно ли я расписал свои мысли?
2) Хватит ли времени процессору выполнить конвертацию (анализ каждого байта и формирование нового) и отправку данных между прерываниями?


Приложение:


Вопрос отправлен: 31.05.2004, 02:04
Отправитель: Эдуард

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

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

Приветствую Вас, Эдуард!
Что-то ты напутал. Если тебе приходит 86 прерываний в секунду, то это не значит, что обработка прерывания займет 1/86 секунды, обработка займет гораздо меньше времени, возможно даже меньше миллисекунды. Вот это время и нужно умножить на 86 (кол-во прерываний в секунду) и вычесть из 1 секунды.

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


Отвечает Стас

Добрый день, Эдуард!
Вообщем правильно. Только вот 66Mhz в 66000000 операций/сек ты перевел не верно, каждая команда исполняется за разное количество тактов(если не так ЭКСПЕРТЫ поправят). Но в твоем случае это роли играть не должно. Скорости проца должно хватить с лихвой. Представь 486 с Win3.1(с её "многозадачностью") прекрасно спраляется с модемом на порту в 19200 бод.
Вообщем пробуй, тебе осталось только написать это все.
И протестить! И ты будешь знать ТОЧНО!

Ответ отправлен: 31.05.2004, 23:43
Отправитель: Стас


 Вопрос № 5368

Здравствуйте, эксперты!
У меня такой вопрос:
В файле Setup.ini должен находится адрес LPT-порта, вводимый при предыдущем запуске программы, или файл может быть пустым, если это первый запуск программы. Пусть это будет первый запуск программы. На экран в DOS должно быть выведено сообщение - "Введите базовый адрес LPT - порта, например, 0278h и нажмите Enter - _____". Курсор должен
стать на место первого вводимого знака. После нажатия клавиши Enter значение с экрана должно быть записано в файл Setup.ini по адресу C:SpySetup.ini в прямом виде, т.е. 0278h, например. Как его потом считать из файла и применить я знаю. Ввестись должны только пять знаков, ошибочно введенный шестой знак при нажатии Enter должен
игнорироваться. Если это не первый запуск программы, то в файле Setup.ini находится адрес LPT-порта, введенный при предыдущем запуске, это значение должно быть считано из файла и отображено на экране, курсор должен стать на место после ввода последнего знака - "Введите базовый адрес LPT - порта, например, 0278h и нажмите Enter - 0278h".
При нажатии Enter это значение или другое измененное должно быть записано вместо предыдущего в установочном файле по адресу C:SpySetup.ini.
Собственно, вопрос в том, как позволить пользователю редактировать адрес во втором случае и получить измененный адрес в программе. Нигде в книгах не нашел как это сделать.
Заранее благодарен, EraSer



Вопрос отправлен: 31.05.2004, 10:10
Отправитель: EraSer

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

Отвечает Стас

Доброе время суток, EraSer!
Вот попробуй, для тебя примерчик накатал, будут вопросы обращайся.

Приложение:

Ответ отправлен: 31.05.2004, 23:30
Отправитель: Стас


 Вопрос № 5371

Привет
Что означает инструкция ORG xxx перед кодом на FASM?



Вопрос отправлен: 31.05.2004, 14:21
Отправитель: voxel

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

Отвечает Ayl

Добрый день, voxel!
То же самое, и для других компиляторов - установить счетчик команд в значение, равное xxx. Например, начало программы в формате COM:
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME cs:CSEG
ORG 100h ; <== установить IP как 100h, потому что первые 256 байт кодового сегмента занимает PSP
Start:
То же самое для драйвера:
CSEG SEGMENT PAPA PUBLIC 'CODE'
ASSUME cs:CSEG
ORG 0 ; а вот драйвер начинается сразу же



Ответ отправлен: 31.05.2004, 17:37
Отправитель: Ayl


Отвечает VOVAN

Здравствуйте, voxel!
org xxx
начинать выполнение со смещения ххх.

Ответ отправлен: 31.05.2004, 19:57
Отправитель: VOVAN


Отвечает Pawel

Добрый день, voxel!
В COM прогах - это адрес начальной загрузки.
org 100h - чаще всего

Ответ отправлен: 31.05.2004, 15:59
Отправитель: Pawel


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

Здравствуйте, voxel!
Адреса начинаются с указанного.
* EMan: -=- Любовь существует! =-=


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


Отвечает _vt

Доброе время суток, voxel!
Эта не инструкция, а директива, есть в любых ассемблерах и означает смещение, с которого компилятор вычисляет внутренние адреса программы. В основном, требуется для программ MS-DOS в формате *.com - они загружаются по адресу CS:0100h и в начале кода, для правильного вычисления адресов переменных, нужна директива org 100h
* Origin : Life begins at 1000Mhz!


Ответ отправлен: 01.06.2004, 03:06
Отправитель: _vt



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (20)
C / C++ (14)
Builder / Delphi (15)
Pascal (19)
Basic / VBA (2)
Java / JavaScript (4)
PHP (12)
Криптография (7)
WinAPI (9)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (49)
"Железо" (29)
Поиск информации (16)
Администратору
Windows NT/2000/XP (22)
Linux / Unix (7)
Юристу
Гражданское право (12)
Семейное право (9)
Трудовое право (12)
КоАП (8)

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




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


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


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


В избранное