Консультация № 191222
14.07.2017, 09:35
0.00 руб.
14.07.2017, 12:26
1 36 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
По Калашникову, данный код:
[code lang=asm]CSEG segment
org 100h
_beg:
mov ax,0B800h
mov es,ax
mov di,0
mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end _beg[/code]

должен вывести смайл, но (см приложение.)


Евгений.
Прикрепленные файлы:
5559c449eb37b7a5523634e620e421d991e9009e.png

Обсуждение

давно
Посетитель
7438
7205
14.07.2017, 12:39
общий
14.07.2017, 12:41
Адресаты:
Что за кнопочка {aa} ?
И при задании вопроса, и при записи в мини-форум, сверху есть ряд кнопочек
код надо вписывать между [ code] [ /code] (без пробелов)

Добавлю, что справа есть "еще кнопки", нажав на которую, появится еще много чего интересного...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
14.07.2017, 12:45
общий
АААААА Понятно))))))
давно
Посетитель
7438
7205
14.07.2017, 12:45
общий
Адресаты:
Какие еще исключения?
Я имел в виду неодинаковую работу под ДОС и в эмуляторе.
Одно из них, некорректность прямой записи в видеопамять.
Об остальных узнаете по ходу изучения... "Надо есть слона по частям"...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
14.07.2017, 12:46
общий
Человеческая натура, охота все и сразу))))
давно
Посетитель
401251
75
14.07.2017, 13:35
общий
а где можно достать материалы (файлы приложения), которые идут к книге Калашникова?
давно
Посетитель
7438
7205
14.07.2017, 13:42
общий
Адресаты:
Естественно, у нас
Вот самораспаковывающийся архив: enclosures.exe (148.1 кб)
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
14.07.2017, 13:43
общий
Вы мне нравитесь все больше и больше!
давно
Посетитель
401251
75
14.07.2017, 17:13
общий
как посмотреть на форуме все свои консультации (вопросы заданные мной и ответы на них), только по номеру?
давно
Посетитель
401251
75
14.07.2017, 17:27
общий
14.07.2017, 17:27
как установить ассемблер и все соответствующие инструменты (линковщик, отладчик..) на Linux Ubuntu 16.04.1 ?

и как компилировать и линковать файл asm?
давно
Посетитель
7438
7205
14.07.2017, 17:28
общий
Адресаты:
1) Нажмите в своем сообщении на "Профиль участника" (иконка - человечек на книжке)
2) Нажать на "посмотреть" в "Отправлено вопросов: N | посмотреть (N) " (на данный момент N=2, т.к. было два вопроса)
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.07.2017, 17:40
общий
Адресаты:
Для Ubuntu не писал. Руки не доходят до Linux-а. Думаю, Константин Николаевич тоже для Linux-а не пишет.
Но там, насколько знаю, используют пакет fasm.

Сейчас я вообще в основном работаю с микроконтоллерами типа AVR, ARM
Нельзя объять необъятное...

Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
14.07.2017, 17:44
общий
просто на рабочем компе у меня Windows а на домашнем linux. Я хотел и дома тоже заниматься.
Придется через виртуалку))))

Спасибо за ответы.
давно
Посетитель
401251
75
17.07.2017, 14:58
общий
17.07.2017, 14:59
Здравствуйте. Созрел вопрос!
При выводе символа на экран, все происходит превосходно, но если я начинаю менять смещение di, начиная с 3-х (до 3-х - нормально) то выводится не рожица.
В чем проблема?
Прикрепленные файлы:
f9b365d4ae374796de0d581ca4aa2517.png
давно
Посетитель
7438
7205
17.07.2017, 15:24
общий
Адресаты:
Для начала надо знать структуру видеоинформации:
Все символы кодируются двумя байтами, сначала код, следом атрибут(цвет).
Задавая адрес 3, тем самым попадаем на атрибут, а не на символ.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
17.07.2017, 15:41
общий
А ну точно, мог сам догадаться. Спасибо!
Я по тексту так понял, что смещение не только в памяти, но и на экране (это сдвиг на 1, 2,3,... и т.д. позиции).
Мой разум был одурманен)))
давно
Посетитель
401251
75
18.07.2017, 07:21
общий
Здравствуйте.
Как сделать в видеорежиме, не фиксированный размер экрана?
Для того чтобы можно было вывести каждый символ по нескольку раз, и прокрутить посмотреть что получилось?
Как в приложении, но чтоб можно было увидеть все символы?
Прикрепленные файлы:
9fc356b8cec1ffb5396b8f61baafec95.png
давно
Посетитель
401251
75
18.07.2017, 07:32
общий
Вот кое что поменял (приложение), выходит ошибка, что нет поддержки широкоэкранного монитора. Это можно как то обойти?
Прикрепленные файлы:
b0b7bb75783f194b3cd12a4092631695.png
давно
Посетитель
401251
75
18.07.2017, 08:44
общий
Помогите понять. Написал программку для для изучения cli и sti. На время ее работы (примерно 7 сек.), cli должен был заблокировать прерывания, но компьютер реагирует на все (мышь, клавиатура, и т.д. ).
Почему?
Прикрепленные файлы:
5b189da82d048ca61b9ad49da3c7f5ee.png
давно
Посетитель
7438
7205
18.07.2017, 10:15
общий
Адресаты:
Помогите понять. Написал программку для для изучения cli и sti. На время ее работы (примерно 7 сек.), cli должен был заблокировать прерывания, но компьютер реагирует на все (мышь, клавиатура, и т.д. ).
Почему?
Ну вот Вы столкнулись со вторым отличием работы под ДОС и под Windows. В режиме эмуляции команда запрета/разрешения прерывания не работает. Скажу больше: эта команда является привилигированной, т.е не будет работать и в обычных программах под Windows, она даже вызовет исключение, т.е прерывание. Под Досом она просто игнорируется. Ну не имеет права пользовательская программа управлять этим глобальным флагом.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
18.07.2017, 11:03
общий
Ясненько. Спасибо!!! А вопрос на счет изменения экрана вывода консоли в видеорежиме также является исключением?
давно
Посетитель
7438
7205
18.07.2017, 11:16
общий
Адресаты:
Момент, отвечал с телефона. Несколько неудобно. Добрался до компа Итак:
Как сделать в видеорежиме, не фиксированный размер экрана? Для того чтобы можно было вывести каждый символ по нескольку раз, и прокрутить посмотреть что получилось? Как в приложении, но чтоб можно было увидеть все символы?
Тут все работает в штатном режиме. Данная задача решается прокруткой экрана с помощью функций 6 и 7 прерывания 10h, как реакцию на какие-нибудь кнопки. Естественно, надо обеспечить все самому. Прокрутку, заполнение освободившегося места...
Возможно, это будет у Калашникова дальше. Честно говоря, даже не знаю Не смотрел. Как-то не было необходимости.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
18.07.2017, 11:19
общий
Адресаты:
А Alt-Enter разве не переводит окно на весь экран?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
18.07.2017, 11:20
общий
Адресаты:
Код лучше подавать текстом - ничего не видно...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
18.07.2017, 11:22
общий
Адресаты:
Система не поддерживает fullscreen mode...
Какая ОС?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
18.07.2017, 11:24
общий
ОC Windows 7 32bit
давно
Посетитель
401251
75
18.07.2017, 11:35
общий
alt+Enter, также свойства окна консоли(все меняется кроме размера) системой не воспринимаются, выходит ошибка "Эта система не поддерживает работу в полноэкранном режиме".
Если попробовать что то поменять программно, то сообщение на английском языке (см. вопрос выше в приложении), а если из ос (настройки или alt+Enter) то на русском.
давно
Посетитель
7438
7205
18.07.2017, 11:50
общий
Адресаты:
В сущности, можно и так посмотреть. Т.к. программы под ДОС никому сейчас не нужны.
Ознакомиться можно и так.
Надо переходить на программирование под Windows. Там, в консоли, все работает
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401251
75
18.07.2017, 12:50
общий
Спасибо!!
давно
Старший Модератор
31795
6196
18.07.2017, 13:43
общий
Адресаты:
Цитата: Caesar
Вот кое что поменял (приложение), выходит ошибка, что нет поддержки широкоэкранного монитора. Это можно как то обойти?

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

Цитата: Caesar
Для того чтобы можно было вывести каждый символ по нескольку раз, и прокрутить посмотреть что получилось?

Функции прокрутки тут тоже не помогут, т.к. видимая часть текстового режима это область памяти 0хВ800:0х0000 - 0х0F00, и функция 6 копирует ячейки 0х00А0 => 0x0000, 0х00А1 => 0x0001, 0х00А2 => 0x0002 и т.д. тем самым затирая верхнюю строку снизу-вверх, для функции 7, тоже самое только сверху-вниз. Только после этого память читается видео-контроллером и отображается на экране.
Если нужно организовывать именно прокрутку, то сами данные можно будет записывать в память выше 0хВ800:0х0F00, а отображение имитировать записью в текущую страницу
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401251
75
19.07.2017, 14:32
общий
Спасибо за ответ!!! (Как немного наберусь опыта поиграюсь с прокруткой, ради интереса)
Форма ответа