|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.02.2009, 22:58 | #1 | |
Регистрация: 22.07.2008
Сообщений: 9
|
Сегментацмя памяти в DOS и вопросы по книге Калашникова
Столкнулся со сложной темой, как сегментация памяти в DOS, так же меня смутили: функции, адреса, запись информации в память, не получается получить ожидаемого результата от программы из 3главы книги.
Цитата:
|
|
21.02.2009, 00:13 | #2 |
Пользователь
Регистрация: 12.11.2008
Сообщений: 27
|
запусти из-под нортона или FAR, ну или вот из под этого и всё выведется (просто дело в поддержке виндой досовского режима):
Программы на заказ Delphi, Pascal, С++, Assembler e-mail: greatrock@mail.ru
<--Если я вам помог не забываем жать на весы |
21.02.2009, 06:29 | #3 |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
Тут проблема в видео режиме. Добавь вот это в самое начало и будет работать.
Код:
|
21.02.2009, 07:21 | #4 |
Пользователь
Регистрация: 09.06.2008
Сообщений: 60
|
можно так:
Код:
Последний раз редактировалось smileman; 21.02.2009 в 07:33. |
21.02.2009, 10:34 | #5 | |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
Цитата:
Код:
Значит проблема не в этом =) |
|
21.02.2009, 10:36 | #6 | ||||
Регистрация: 22.07.2008
Сообщений: 9
|
ASSEMBLER,дейсвительно, запустил под этим командером и выполнилось!
Armorer,добавил эти строчки в начале кода и так же само выполнилось, как без запуска командера. Вопрос:Что эти строчки выполняют? Цитата:
mov al,3h; загрузка числа 3h в регистр al int 10h; в справочнике посмотрел,что означает видео сервис. Вопрос: зачем нужно было загружать сначала ноль в регистр ah, если можно было загрузить в сразу в al.Ведь ноль не имеет значения и в регистре AX окажется то же значение 0003H если не ошибаюсь. Не могу понять зачем загружать какие-либо значения, если можно обойтись без них? smileman , Попробовал так сделать заменил, это: Цитата:
Цитата:
Вроде бы с ожиданием нажатия клавимши у меня всё было нормально. Не пойму к чему это? Посмотрел в справочнике 08H; это функция, которая означает "Консольный ввод без эха".Что это значает? Есть ещё пару вопросов ко всем: Функция и любое загруженное чило это одно и тоже, и как, ведь в программах используют например один и тот же регистр для функции, а потом загружают в тот же регистр другое число?И непример загружая в регистр любое число, ямогу не нароком загрузить функцию? Armorer, Цитата:
Это конечно к теме не относится. Конечно, спасибо за твои намерения помочь!Думаю, что мне ещё надо решать проблему с лаконичностью речи Последний раз редактировалось Reign; 21.02.2009 в 12:14. |
||||
21.02.2009, 12:16 | #7 |
Пользователь
Регистрация: 09.06.2008
Сообщений: 60
|
Armorer,Reign
хехе..))) не внимательно прочитал ))) Reign Ты имеешь ввиду вызов процедуры прерывания? Чтобы вызвать прерывание необходимо прописать- int x,где x-номер прерывания.В регистрах перед вызовом пишешь параметры для вызова прерывания(номера функций и тд),а на выходе в этих же регистрах получаешь значения(результаты вызова прерывания),например: Код:
|
21.02.2009, 12:48 | #8 | ||
Регистрация: 22.07.2008
Сообщений: 9
|
Цитата:
Это значит, что вся эта функция проделывается, для того, что бы узнать код клавиши? Эта вызывается функция 10h прерывания int 16h. Что бы сделать, так что бы консольное приложение мс-дос оставалось на экране до тех пор пока не нажмется любая клавиша на клавиатуре. А вопрос вот в чём. Но зачем сюда загружается разные значения в разные в один регистр. Вот выделил, те значения и регистры. Цитата:
mov ah,0h; загрузка числа 0h в регистр ah mov al,3h; загрузка числа 3h в регистр al int 10h; в справочнике посмотрел,что означает видео сервис. Только те функции, что я написал Последний раз редактировалось Reign; 21.02.2009 в 18:59. |
||
21.02.2009, 23:50 | #9 |
Пользователь
Регистрация: 12.11.2008
Сообщений: 27
|
код
Код:
А значения загружаются в разные части одного и того же регистра, и делается это просто для удобства и наглядности, ты можешь и одним числом в ах писать.
Программы на заказ Delphi, Pascal, С++, Assembler e-mail: greatrock@mail.ru
<--Если я вам помог не забываем жать на весы Последний раз редактировалось ASSEMBLER; 21.02.2009 в 23:52. |
22.02.2009, 13:07 | #10 | |
Регистрация: 22.07.2008
Сообщений: 9
|
Сейчас хочу удостовериться правильно ли понимаю.
Цитата:
(19)-указвает на конец этого же сегмента. (2)-указывает на то что сегмент бедет отсчитываться с 100h смещения. (3)-указывает на начало программы. (20)-Указвает на конец программы. (4),(5),(6)- указвают на устанавливание текущей нулевой видео страницы. (8),(9) загружаем число 0b800h в сегментный регистр ES . (10) - загружаем в регистр DI нуль. (11),(12) - заноситься атрибут символа.(31- ярко-белый символ на синем фоне).В AL -ASC|| - код символа.(01- это рожица) (13)- в строке заносим по адресу 0b800h:0000h(т.е. первый символ в первой строке дисплея - верхний левый угол) атрибут и ASC|| код символа(31 и 01 соответственно). Это означает что атрибуты и расположение символа заносится в видео регистр 0b800h:0000h. (15),(16)указваеют на то что бы программа ждала нажатия клавиши на клавиатуре. (18)-указвает на то что сразу после выполнения функции программа вернётся туда откуда запускали. Вот в этом списке для меня туманно выглядит строки (10),(11),(12),(13). И ещё есть вопрос: Что означает число 0b800h? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск по книге | PIKA4Y | Microsoft Office Excel | 5 | 03.02.2009 20:23 |
поиск листа в книге | tat-besidovska | Microsoft Office Excel | 1 | 12.02.2008 11:00 |
Поиск в книге | Andr | Microsoft Office Excel | 1 | 20.11.2007 21:47 |
Проблема в Гостевой книге | Tempting | HTML и CSS | 4 | 10.02.2007 00:18 |
Поиск в книге | asale | Microsoft Office Excel | 7 | 26.01.2007 07:29 |