Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для NEWd
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 98

Установка видеорежима 116h

20.07.2016, 20:05. Показов 2607. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Я тут работал с очередной програмкой из книги Зубкова и столкнулся с неожиданными трудностями... Дело в том, что при запуске программы ( код проверял 3 раза, но мог конечно и ошибиться) вместо "конуса" появляются какие-то скучковавшиеся красные пиксели. Они неподвижны, а конус должен был двигаться вверх и вниз. Когда разбирал в отладчике, понял, что вся проблема именно в переключении режима. Написав отдельную програмку, устанавливающую 116h режим и пропустив ее через отладчик (AFD) увидел те самые пиксели и + вертикальные полоски зеленые и синие. Объясните, пожалуйста, в чем дело?! Вот код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
        .model tiny
        .code
        .386
        org 100h
        
LP:
 
        mov     ax,4F01h
        mov     di,rej_buff
        mov     cx,116h
          int 10h
          
        mov     ax,4F02h
        mov     bx,116h
          int 10h 
        
        push    word ptr [rej_buff+8]
        pop     es
        
        cld
        
        mov     cx,-1 
        mov     si,100 
        mov     bx,300
        mov     ax,200
        
lloop:
        inc     si 
        inc     ax 
        inc     bx 
        call    print_circle
        sub     cx,0000100000100001b
        cmp     si,350
        jb      lloop
        xor     cx,cx 
        call    print_circle
 
 
        
        xor     bx,bx 
        xor     dx,dx 
 
lloop2:
        mov     ax,4F07h
          int 10h 
        mov     ah,7
          int 21h 
        test    al,al 
        jnz     exit_lloop2
          int 21h
        cmp     al,50h
        je      k_DOWN
        cmp     al,48h
        je      k_UP
 
exit_lloop2:
        mov     ax,3 
          int 10h 
        
        ret
        
        
k_DOWN:
        dec     dx 
        jns     lloop2
        
k_UP:
        inc     dx 
        jmp     lloop2
        
        
putpixel_16b:
 
        push    dx 
        push    di 
        xor     di,di 
        shrd    di,dx,6
        shr     dx,5
        inc     dx 
        cmp     dx,current_bank 
        jne     bank_switch
        
switched:
        add     di,bx 
        mov     ax,cx 
        shl     di,1 
        stosw 
        pop     di 
        pop     dx  
        ret 
        
bank_switch:
 
        push    bx 
        xor     bx,bx 
        mov     current_bank,dx 
        call    dword   ptr [rej_buff+0Ch]
        pop     bx 
        jmp     switched
        
        
        
print_circle:
        
        push    si 
        push    ax 
        push    bx 
        xor     di,di 
        dec     di
        mov     ax,1
        sub     ax,si 
        
circle_loop:
        inc     di 
        cmp     di,si 
        ja      exit_lloop
        
        pop     bx
        pop     dx 
        push    dx 
        push    bx 
        
        push    ax 
        add     bx,di 
        add     dx,si 
        call    putpixel_16b
        sub     dx,si 
        sub     dx,si 
        call    putpixel_16b
        sub     bx,di 
        sub     bx,di 
        call    putpixel_16b
        add     dx,si 
        add     dx,si 
        call    putpixel_16b
        sub     dx,si 
        add     dx,di 
        add     bx,di 
        add     bx,si 
        call    putpixel_16b
        sub     dx,di 
        sub     dx,di 
        call    putpixel_16b
        sub     bx,si 
        sub     bx,si 
        call    putpixel_16b
        add     dx,di 
        add     dx,di 
        call    putpixel_16b
        
        pop     ax 
        
        test    ax,ax 
        js      slop_negative 
        mov     dx,di 
        sub     dx,si 
        shl     dx,1 
        inc     dx 
        add     ax,dx 
        dec     si 
        jmp     circle_loop
 
slop_negative:
        mov     dx,di 
        shl     dx,1 
        inc     dx 
        add     ax,dx 
        jmp     circle_loop
 
exit_lloop:     
        pop     bx 
        pop     ax 
        pop     si 
        
        ret 
        
        
current_bank    dw      0
rej_buff:
        
 
        
        end     LP
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2016, 20:05
Ответы с готовыми решениями:

Вывод на экран текущего видеорежима
Доброго времени суток, помогите разобраться с программой. Задача вывести текущий видеорежим на экран. Написал текст программы, но она не...

Нет изображения на мониторе из-за неподходящего видеорежима
Привет... Проблема в мониторе что ли или в видео карте. не могу найти! Монитор Philips 221V. этот монитор включаю сразу появляется...

Растяжение строки на весь экран с использованием видеорежима
Всем здравствуйте! Ассемблер это моё наказание! Сижу уже 4й день, не могу на калякать простейшую задачку. Знаю, сейчас придут и начнут...

2
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 853
20.07.2016, 20:38
Лучший ответ Сообщение было отмечено NEWd как решение

Решение

NEWd, Желательно убедиться что данный режим поддерживается текущей системой (монитор+видеокарта).
Что там функция Int 10/AX=4F02h возвращает в AX?

Добавлено через 5 минут
Тут подробнее по VBE 3.0. Почти все современные и не только видюхи поддерживают этот стандарт. Там указано, что появившиеся ранее номера режимов не обязаны поддерживаться производителями железа.

Добавлено через 1 минуту
В любом случае DOSBox может помочь твоей беде.
0
 Аватар для NEWd
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 98
21.07.2016, 12:30  [ТС]
В al возвращает 30... Значит режим не поддерживается.. Странно! Он вроде стандартный. Попробую DOSBOX
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2016, 12:30
Помогаю со студенческими работами здесь

есть ошибка в программе при востановлении видеорежима
uses dos; TYPE point = record koord: word; {nachalo poligona} high: word; {kolichestvo strok} scale: word; {shirina 1-oi...

Создание замены для VESA методом модификации видеорежима 13h, 320x200 при 256 цветах
Появилась необходимость в создании замены для VESA методом модификации видеорежима 13h, 320x200 при 256 цветах. Иными словами, я пытаюсь...

Установка с DVD TeXlive Perl-скриптом - установка, которая не происходит
Установка с DVD TeXlive с помощью Perl-скрипта - установка, которая не происходит. Я, - пользователь, пытался установить с DVD (ссылка на...

Установка Win7 на новый винт и установка винта в другую машину
Сиутация такая: есть ноутбук который прибудет только завтра. На ноуте здох винт (предупреждения были, но человек постоянно откладывал и...

Установка событий в цикле (установка change на select при обходе массива DIV)
Нужно обходя дивы (DIV) навесить chang на select срабатывает только на первом диве остальные не реагируют $(...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru