24.09.2017, 06:23 [+3 UTC]
в нашей команде: 2 128 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
23.09.2017, 18:51

Последний вопрос:
23.09.2017, 14:31

Последний ответ:
23.09.2017, 08:43

Последняя рассылка:
23.09.2017, 22:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
15.12.2010, 01:04 »
Савенков Михаил
Очень быстро ответили! Понравилось smile [вопрос № 181367, ответ № 264783]
09.10.2009, 11:29 »
Болдырев Тимофей
Очень трудоёмкое решение. Спасибо вам большое! [вопрос № 173018, ответ № 255179]
19.01.2010, 19:30 »
Slo_nik
Благодарю за помощь, всё отлично работает. [вопрос № 176085, ответ № 258711]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 250
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 239
quirck
Статус: 1-й класс
Рейтинг: 29

Перейти к консультации №:
 

Консультация онлайн # 191231
Раздел: • Assembler
Автор вопроса: Caesar (Посетитель)
Отправлена: 19.07.2017, 14:35
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Почему при записи в sp числа 109, меняется код по адресу 105 и 107? Приложение.

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Состояние: Консультация закрыта

Здравствуйте, kveladze.kz!

Калашников и не рекомендует использовать отладчик.

© Цитата: гл.№6
Попробуйте запустить ее под отладчиком. Вы увидите, что CodeView, TurboDebuger, AFD будут выдавать какой-то "мусор": непонятные операторы, сообщения типа "программа завершилась", хотя до команды int 20h дело не дошло (рис. 6.7). Но если запустить ее просто из DOS, то строка появится на экране, т. е. программа будет работать корректно, при этом выводя строку на экран (рис. 6.8)! Данный пример — типичный случай "заламывания рук" многим отладчикам.


Причина, в том, что отладчики используют стек программы для своих нужд. А когда как бы выполняется код программы - его чистят, как будто ничего и не было.

© Цитата:
Если не то смещение то почему, процессор все равно затирает эту команду

В учебниках пишут, что команда push - заносит в стек слово и уменьшает указатель стека. А вот как это делается умалчивается. На самом деле уменьшается указатель стека и только потом число записывается в память по адресу SS : SP. Т.е. два nop'а будут записаны по адресу 0х0107, как раз вместо команды int 20h.

Удачи!


Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 19.07.2017, 18:52

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 191231

Caesar
Посетитель

ID: 401251

# 1

= общий = | 19.07.2017, 14:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

И может мне кто то поможет понять, что происходит в коде:

Код (Assembler) :: выделить код
CSEG segment
assume cs:CSEG,ss:CSEG,es:CSEG,ds:CSEG
org 100h
start:
    mov sp, offset Lab_1
    mov ax,9090h
    push ax
    int 20h
 Lab_1:
        mov ah,9
        mov dx,offset Mess
        int 21h
        int 20h
 Mess db 'Neveroyatno!$'
CSEG ends
end start

У меня не получается сделать как по Калашникову через отладчик. Меняются команды.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

 +1 
 
= общий = | 19.07.2017, 14:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

Система обслуживает не только Вашу программу. Прерывание клавиатуры тоже использует стек...
Кстати, использовать нечетный адрес для SP - некорректно. Вершина стека - слово, вот и надо его задавать четным адресом.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 3

= общий = | 19.07.2017, 14:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата:
У меня не получается сделать как по Калашникову через отладчик. Меняются команды.
А в том и соль :)
Под отладчиком портится. А само работает

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Зенченко Константин Николаевич
Модератор

ID: 31795

# 4

 +1 
 
= общий = | 19.07.2017, 15:01 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата: Caesar
У меня не получается сделать как по Калашникову через отладчик. Меняются команды.

А Калашников и не рекомендует пользоваться отладчиком.
© Цитата:
Попробуйте запустить ее под отладчиком. Вы увидите, что CodeView, TurboDebuger, AFD будут выдавать какой-то "мусор": непонятные операторы, сообщения типа "программа завершилась", хотя до коман-ды int 20h дело не дошло (рис. 6.7). Но если запустить ее просто из DOS, то стро-ка появится на экране, т. е. программа будет работать корректно, при этом выводя строку на экран (рис. 6.8)! Данный пример — типичный случай "заламывания рук" многим отладчикам.

Зенченко Константин Николаевич
Модератор

ID: 31795

# 5

 +1 
 
= общий = | 19.07.2017, 15:16 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата: Caesar
И может мне кто то поможет понять, что происходит в коде

Всё дело в том, что основная масса отладчиков используют стек программы в собственных нуждах, как и система в момент аппаратного прерывания. В моменты выполнения кода отлаживаемой программы отладчики чистят стек от своей служебной информации, как бы он не изменялся, но баловство с указателем стека нарушает их "мечты".

Caesar
Посетитель

ID: 401251

# 6

= общий = | 19.07.2017, 15:19 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

По Калашникову

© Цитата:
Командой push ax (03) мы заносим в стек два числа 90h, которые процессор воспримет как два оператора nop. Так как смещение в регистре sp указывает на int 20h, то эта команда будет затерта двумя операторами nop. Все! Вместо int 20h (завершение работы программы) процессор выполнит два оператора nop, которые ничего не делают!


1. Смещение в sp указывает не на int 20h, а на mov ah, 09?
2. Если не то смещение то почему, процессор все равно затирает эту команду?
3. Команда push ax (в ах 2 nop) затирает int 20h или сдвигает, а сама записывает на ее место?

-----
 Прикрепленный файл (кликните по картинке для увеличения):

Caesar
Посетитель

ID: 401251

# 7

= общий = | 19.07.2017, 15:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Кстати, использовать нечетный адрес для SP - некорректно. Вершина стека - слово, вот и надо его задавать четным адресом.


Так не я задаю этот адрес, ассемблер сам его вычисляет и подставляет.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 8

= общий = | 19.07.2017, 15:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
Так не я задаю этот адрес, ассемблер сам его вычисляет и подставляет
Так я и не говорю, что не будет работать. Будет. Просто такая работа удлиняет на такт работу с памятью.
Это так - на будущее... Для нашего примера - это неважно.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 9

= общий = | 19.07.2017, 15:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Спасибо за ответы! с отладчиками более-менее разобрался. smile smile smile

Зенченко Константин Николаевич
Модератор

ID: 31795

# 10

 +1 
 
= общий = | 19.07.2017, 16:45 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата: Caesar
Смещение в sp указывает не на int 20h, а на mov ah, 09

В учебниках пишут, что команда push - заносит в стек слово и изменяет указатель стека. А вот как это делается умалчивается. На самом деле меняется(уменьшается) указатель стека и только потом число записывается в память.
Т.е. два nop'а будут записаны по адресу 0х0107, вместо int 20h.

Caesar
Посетитель

ID: 401251

# 11

= общий = | 20.07.2017, 05:32 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Спасибо! Все встало на свои места smile smile smile

Caesar
Посетитель

ID: 401251

# 12

= общий = | 20.07.2017, 08:09 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

команда push ax, занесла в стек 2 nop и как следствие, затерла int 20h.
Но int 20h не находится в стеке. Это как понимать?
Получается что push ax занесла запись не в стек, а по адресу, который был указан в стеке?




Caesar
Посетитель

ID: 401251

# 13

= общий = | 20.07.2017, 08:39 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Все разобрался вроде.
Вершина стека sp указывает на саму программу, т.е. командой mov sp, offset lab_1 мы перенесли стек в тело программы, так получается?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 14

 +1 
 
= общий = | 20.07.2017, 09:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

Именно! После чего любая запись в стек портит код самой программы... smile

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 15

 +1 
 
= общий = | 20.07.2017, 11:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

Забегу немного вперед...
Подобные фокусы в защищенном режиме процессора (в программах для ОС Windows NT+, Linux) просто так не пройдут.
В них поддерживается защита сегментов памяти. Сегменты могут иметь разрешение на чтение, запись, выполнение.
Сегмент кода обычно можно только читать и выполнять. Попытка записи туда любым способом приведет к краху программы smile
Хотя всегда есть возможность настроить, например, тот же стек так, что он будет совмещен с сегментом кода. И тогда все будет работать...

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

• Отредактировал: Лысков Игорь Витальевич (Старший модератор)
• Дата редактирования: 20.07.2017, 11:58

Caesar
Посетитель

ID: 401251

# 16

= общий = | 20.07.2017, 12:00 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Спасибо за инфу, я ее запомню!!!
Но я пока даже, что такое защищенный режим процессора не знаю)
smile smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 17

= общий = | 20.07.2017, 12:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

Я ознакомился с защищенным режимом в далеких уже 90-х годах по книжке Фроловых
Где-то до сих пор валяется бумажная книжка... Если интересуешься, то это весьма захватывающее чтиво.
То, что сейчас изучаете, называется реальный режим процессора... В 8086 это был единственный режим.
Короче, Вы в начале чрезвычайно интересного пути! Грызите камень науки! smile

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 18

= общий = | 20.07.2017, 14:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Калашников

© Цитата:
Максимальное количество одновременно открытых файлов указывается в переменной FILES=XX файла config.sys, где XX — число не более 99. MS-DOS резервирует для каждого файла определенное количество байтов памяти

В Windows 7 есть такой файл, также одна строчка, изменил с 40 на 1, ничего не произошло.
Почему?

И что должно было произойти? (Я мог бы открыть только один документ или одну папку или одно приложение). В смысле один файл? что под этим понимается?

• Отредактировал: Caesar (Посетитель)
• Дата редактирования: 20.07.2017, 14:34

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 19

= общий = | 20.07.2017, 14:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

В Windows NT+ этот файл не используется.
Полагаю, он оставлен для совместимости с досовскими программами.
Хочу отметить, что в ДОС есть 5 заранее открытых "файлов"- устройств, поэтому необходимо задавать больше 5,
все, что свыше, есть максимальное количество одновременно открытых пользовательских файлов. Именно файлов.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 20

= общий = | 20.07.2017, 14:59 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Как пользоваться отладчиком, чтоб когда попадались прерывания, после их выполнения не выкидывало в какую - то другую область (где не мой сегмент кода)?
А то пока идут команды я нажимаю f1, а на прерывании я нажимаю стрелкой вниз. При прерываниях меняются флаги, после прерывания 16h функции 10, хотелось бы посмотреть на изменения в регистре.

Caesar
Посетитель

ID: 401251

# 21

= общий = | 20.07.2017, 15:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
максимальное количество одновременно открытых пользовательских файлов. Именно файлов.

т.е. любых файлов (.exe, .jpg, .doc, .txt и т.д.) в "совокупности" максимальное число?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 22

= общий = | 20.07.2017, 15:19 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата:
т.е. любых файлов (.exe, .jpg, .doc, .txt и т.д.) в "совокупности" максимальное число?
ОДНОВРЕМЕННО открываемых файлов. Т.е. если программа открывает файлы, то не сможет одновременно открыть больше, чем разрешено.

Открыть, потом закрыть, снова открыть не считается. В данном случае, в каждый момент времени открыт всего один файл.

Такая проблема сказывалась, в свое время, когда использовалась база данных, работающая с файлами dbf. Обычно в базе было довольно много файлов и которые СУБД открывало все сразу. По умолчанию, насколько помню, было FILES=20. Ставили FILES=60 и все работало.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 23

= общий = | 20.07.2017, 15:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Как так ОДНОВРЕМЕННО открываемых? Процессор в один момент делает одно действие. Один такт - одно событие. Следовательно в каждый момент времени и открыт один файл, как не крути. Может я туплю по не знанию.
Я понял так. Вот например я поставил максимум 1 и открыл один документ , так вот пока он открыт я не могу ничего другого открыть (ни приложения, ни картинки ....)?
Так получается?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 24

= общий = | 20.07.2017, 15:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата:
Как пользоваться отладчиком, чтоб когда попадались прерывания, после их выполнения не выкидывало в какую - то другую область (где не мой сегмент кода)? А то пока идут команды я нажимаю f1, а на прерывании я нажимаю стрелкой вниз. При прерываниях меняются флаги, после прерывания 16h функции 10, хотелось бы посмотреть на изменения в регистре.
В отработке прерываний обычно участвует не одна программа, а их цепочка. Т.е. первой получает управление та, на которую показывает вектор. Она обычно проверяет, надо ли ей что-то делать, если надо, делает и передает управление следующей программе по цепочке. Если ничего не надо делать, то сразу передает управление дальше. Это значит что при установке своего отработчика прерывания необходимо сохранить старый вектор в двойном слове, как длинный адрес и делать длинный переход по тому адресу, когда надо закончить свою работу.

Поэтому, когда смотреть в отладчике работу отработчика прерывания, то там будут и отработчики отладчика, и установленные ранее резиденты, и системная отработка...

А чтобы сразу попасть на свой отработчик, проще всего установить в нужном месте точку останова, как int 3
Некоторые ассемблеры превращают команду в 0cdh 03h, что неверно, надо 0cch. поэтому я уже давно, на автомате ставлю 0dbh 0cch

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 25

= общий = | 20.07.2017, 15:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

А где находится это нужное место? Перед прерыванием?
0dbh 0cch это заместо int 3?

Caesar
Посетитель

ID: 401251

# 26

= общий = | 20.07.2017, 15:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

И куда это записать? в стек? или в какой-то регистр?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 27

= общий = | 20.07.2017, 15:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата:
Как так ОДНОВРЕМЕННО открываемых? Процессор в один момент делает одно действие. Один такт - одно событие. Следовательно в каждый момент времени и открыт один файл, как не крути
Процессор тут не при чем. Он выполняет код, он к файлам не имеет никакого отношения

Для всех открытых файлов в ДОСе жестко выделялся массив памяти. Один элемент под один файл. Элемент представляет собой структуру данных, в элементах которой хранилась необходимая информация о файле, как то начальный кластер файла на диске, длина файла, текущий указатель в файле и многое другое. При открытии какого-файла некоторый элемент связывался с этим файлом, в программу возвращался индекс связанного элемента. При всех файловых операциях данный индекс (называется еще описатель файла, handle) обязательно передавался в регистре BX. При закрытии файла буфера записывались на диск, заполнялась запись в оглавлении и... освобождалась структура элемента. Готовая к открытию следующего файла.

Так как таких структур ограниченное число, потому одновременно можно было открыть не более указанного количества.
Вот такая внутренняя суть работы с файлами. Я когда-то даже смотрел код ДОСа smile Было дело...

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 28

= общий = | 20.07.2017, 15:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата:
А где находится это нужное место? Перед прерыванием?
В том месте, где надо остановиться. После чего запускаем на работу под отладчиком (под AFD команда g) Отладчик остановится на команде int 3

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 29

= общий = | 20.07.2017, 15:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

© Цитата:
0dbh 0cch это заместо int 3?
Команда int 3 является однобайтовой и имеет код 0cch
В отличие от всех остальных, которые двубайтовые и имеют код 0cdh xx

Командой 0dbh 0cch мы явно вписываем байт данных 0cch, что является кодом int 3

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 30

= общий = | 20.07.2017, 15:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
И куда это записать? в стек? или в какой-то регистр?
В текст программы, в том месте, где хотим остановиться под отладчиком.
Компилируем, запускаем под отладчиком и наблюдаем.

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 31

= общий = | 20.07.2017, 15:55 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Минуточку я все обмозгую) smile smile smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 32

= общий = | 20.07.2017, 15:56 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

По сути, команда int 3 - команда пошаговой отладки. Отладчик ее также использует, когда (в AFD) нажимаем на F1
Остановиться в нужном месте можно и по-другому: запустить на работу командой g start,break. Где start - hex-адрес старта, а break - адрес останова.
Кстати, у AFD есть справка по клавише f4

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 33

= общий = | 20.07.2017, 15:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Кстати, у AFD есть справка по клавише f4


Да я видел, с английским пока туго smile ((

Caesar
Посетитель

ID: 401251

# 34

= общий = | 20.07.2017, 16:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Я не правильно изначально свой вопрос сформулировал! Я хотел узнать про:

© Цитата: Лысков Игорь Витальевич
Отладчик ее также использует, когда (в AFD) нажимаем на F1


вот к примеру код:
Код (Assembler) :: выделить код
mov ax,21
 mov bx, 72
 add ax, bx
 mov ah,9h
 mov dx, offset Mes
 int 21h
 mov bx, 72
 add ax, bx


нажимаем F1 еще раз F1... и вот дошли до прерывания "int 21h" нажимаем опять F1 после этого код следующий за прерыванием меняется (с этим Вы мне помогли разобраться) как мне продолжить выполнение моего кода.
Т.е. Я хочу начинать программу не с того места где уже прерывание закончилось, а просмотреть всю программу, не уходя в дебри кода прерывания?
Надеюсь Вы меня поняли?
По крайней мере "Я сам себя понимаю"))))))))) smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 35

= общий = | 20.07.2017, 16:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

Кроме кнопки F1 есть еще кнопка F2, которая не заходит во внутрь прерываний и вызовов подпрограмм

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Caesar
Посетитель

ID: 401251

# 36

= общий = | 21.07.2017, 05:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Все так просто! smile smile smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16254 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн