На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS

Дорогие друзья! Поздравляем вас с Новым 2018 годом!

Всем удачи, успеха и благополучия!
В новом году ожидаем новых рекордов при подсчёте количества ёлочек на экране ;)


msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Не поленитесь, загляните в эти разделы перед созданием темы. Возможно, так уже имеется решение вашего вопроса.

3. Настоятельно рекомендую обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).

Не забывайте также про главные ПРАВИЛА ФОРУМА!
Участники форума, нарушающие правила, будут наказываться, а вносящие вклад в развитие форума – приветствовать и, по возможности, награждаться :)

Приятного вам общения! ;)
Модераторы: Jin X, Qraizer
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> ASM DOS Создание TSR без PSP, Непонятки в использование INT 21H функции 55H и другие пояснения авторов на похожие темы.
    Цитата Jin X @
    если резидент используется int 21h, то какой при этом используется PSP? Надо думать, что программы, которая исполняется в данный момент, не иначе.

    Именно так. Поэтому обработчик, отдавая управление (неважно, обратно или вниз), не должен оставлять открытый файл.
    Сообщение отредактировано: Akina -
    Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
    Есть претензии ко мне как к участнику? да ради бога.
    Не нравятся мои ответы? не читайте их.
    В общем, берегите себя. Нервные клетки не восстанавливаются.
      Повторяюсь, PSP в TSR (или даже его часть) мне не нужен. Каждый байт на счету.
      Тема выяснена на 90% . Спасибо за советы.
        andr00
        А в чём тогда суть и вообще смысл создания темы-то?
        Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
        Есть претензии ко мне как к участнику? да ради бога.
        Не нравятся мои ответы? не читайте их.
        В общем, берегите себя. Нервные клетки не восстанавливаются.
          Цитата Akina @
          не должен оставлять открытый файл.
          ...без переключения PSP (ah=50h/int 21h) ;)
          user posted image Чат форума в Telegramuser posted image Чат форума в Discord (жми и подключайся!) ;)
            Akina, ты знаешь, то предыдущего поста не держал. Так ты попробовал? Только пробуй на ненужных файлах.

            Добавлено
            Цитата Jin X @
            Кстати, если резидент используется int 21h, то какой при этом используется PSP? Надо думать, что программы, которая исполняется в данный момент, не иначе.
            Именно. И где тогда твои открытые ранее хендлы? А если ты каждый раз будешь всплывать под разными приложениями, включая других резидентов? А если у прерываемого приложения кончатся его 20 дефолтных хендлов?

            Добавлено
            И в конце концов: кто-нибудь знает, что именно лежит в reserved-областях PSP и для чего ей это нужно там хранить? И какие ещё структуры данных в DOS и её драйверах завязаны на этот PID, каковым адрес PSP является?
            Одни с годами умнеют, другие становятся старше.
              Цитата Qraizer @
              Именно. И где тогда твои открытые ранее хендлы? А если ты каждый раз будешь всплывать под разными приложениями, включая других резидентов? А если у прерываемого приложения кончатся его 20 дефолтных хендлов?
              Ну, так переключай PSP на свой, когда это нужно, а потом возвращай обратно.
              В этих байтах хранится Job File Table
              user posted image Чат форума в Telegramuser posted image Чат форума в Discord (жми и подключайся!) ;)
                Цитата Qraizer @
                И где тогда твои открытые ранее хендлы?

                Какие это "ранее открытые"??? ты читаешь, что я пишу?

                Цитата Akina @
                Если нужна работа с файлом из TSR, то открытие-работа-закрытие выполняются в одном потоке по выставленному флагу в обработчике DOS Idle.

                Так что какая мне в пень разница, где тот хэндл, который я давным-давно закрыл?
                Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                Есть претензии ко мне как к участнику? да ради бога.
                Не нравятся мои ответы? не читайте их.
                В общем, берегите себя. Нервные клетки не восстанавливаются.
                  Попробовал тупо скопировать старый PSP в нужное место. Отлично работает и дешевле
                  обходится (не надо применять функцию INT 21H AH=55H или AH=26H), так же не надо
                  никаких корректировок нового PSP.

                  Добавлено
                  Попробовал запустить программу TSR в DOS окне WINDOWS-XP.
                  Вроде работает. MEM.EXE указывает, что TSR существует.
                  Но, просматривая DEBUG, обнаружил в этом сегменте одни нули ?
                    Цитата Jin X @
                    Ну, так переключай PSP на свой, когда это нужно, а потом возвращай обратно.
                    Ну а я что сказал вначале?
                    Одни с годами умнеют, другие становятся старше.
                      Цитата andr00 @
                      просматривая DEBUG, обнаружил в этом сегменте одни нули ?

                      Правильно. Ты же ничего не сделал, чтобы именно этот блок использовался под твоим кодом в качестве PSP.
                      Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                      Есть претензии ко мне как к участнику? да ради бога.
                      Не нравятся мои ответы? не читайте их.
                      В общем, берегите себя. Нервные клетки не восстанавливаются.
                        Цитата andr00 @
                        Попробовал тупо скопировать старый PSP в нужное место. Отлично работает и дешевле
                        обходится (не надо применять функцию INT 21H AH=55H или AH=26H), так же не надо
                        никаких корректировок нового PSP.
                        А там, в общем-то, и нет никаких абсолютных адресов, указывающих на область самой программы, поэтому и корректировки не нужны :)
                        Главное, чтобы не было утечки памяти при всех этих манипуляциях с перемещением, выделением памяти и пр.

                        Цитата Qraizer @
                        Ну а я что сказал вначале?
                        Так, никто ж и не спорит, коллега! ;)
                        user posted image Чат форума в Telegramuser posted image Чат форума в Discord (жми и подключайся!) ;)
                          Akina, все таки непонятки. Программа TSR (в окне DOS, WINDOWS-XP) работает, MEM.EXE указывает правильный размер и сегмент в памяти, а DEBUG в этом сегменте видит нули. Даже в MCB нули ?

                          Добавлено
                          Опа ! Оказывается DEBUG.EXE (а так-же TD.EXE) в окне DOS, под WINDOWS-XP вообще ничего не видит (т.е. видит какой то мусор)
                          Может кто посоветует, какой программой мне просмотреть память ?
                            Цитата andr00 @
                            Программа TSR (в окне DOS, WINDOWS-XP) работает, MEM.EXE указывает правильный размер и сегмент в памяти, а DEBUG в этом сегменте видит нули. Даже в MCB нули ?

                            MCB вообще-то на 16 байт ниже...

                            Цитата andr00 @
                            Оказывается DEBUG.EXE (а так-же TD.EXE) в окне DOS, под WINDOWS-XP вообще ничего не видит (т.е. видит какой то мусор)

                            :blink: Да ладно! у меня TD нормально всё показывает...
                            Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                            Есть претензии ко мне как к участнику? да ради бога.
                            Не нравятся мои ответы? не читайте их.
                            В общем, берегите себя. Нервные клетки не восстанавливаются.
                              Akina, Предлагаю посмотреть скрины. Программка Выводит на экран в верхнюю строку (по прерыванию 09h) строку "ABCDEFGHIJKLMNOP"
                              Это видно на всех скринах. TD.EXE (1992 год) то же самое )

                              Добавлено
                              Не могу отправить скрин.
                                Последний скрин.
                                Прикреплённый файлПрикреплённый файлDEBUG.EXE.rar (58,21 Кбайт, скачиваний: 15)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1366 ]   [ 19 queries used ]   [ Generated: 24.01.18, 11:29 GMT ]