Вопрос № 75054: Здраствуйте.
Пишу бутсектор. Изучаю переход в защищенный режим.
Эмулятор - VMware. Код приведен ниже.
Вопрос: почему текст не выводится?
----------------------------------------------------------
[org 0x7c00]
start:
...Вопрос № 75065: Помогите написать на Cи со вставками Ассеблера под DOS
1.Отсорировать пять чисел по возрастанию.
2.Дан массив размерности n.Найти первый отрицательный элемент.
3.В строке заменить все символы '1' символом '0', а символы '0' символом '11'...
Вопрос № 75.054
Здраствуйте.
Пишу бутсектор. Изучаю переход в защищенный режим.
Эмулятор - VMware. Код приведен ниже.
Вопрос: почему текст не выводится?
----------------------------------------------------------
pusha
.loop
lodsb
test al,al
jz .quit
mov ecx,[cursor]
mov [VIDEO_RAM+ecx*2],al
inc dword [cursor]
jmp short .loop
.quit:
popa
ret
gdt:
dw 0,0,0,0
db 0ffh,0ffh,0,0,0,10011010b,0cfh,0
db 0ffh,0ffh,0,0,0,10010010b,0cfh,0
gdt_reg:
dw 8192
dd gdt
cursor:
msg_hello:
db "Hello from the world of 32-bit Protected Mode",10,13,0
VIDEO_RAM:
dw 0b8000h
times 510-($-$$) db 0
db 0aah,55
Отправлен: 10.02.2007, 10:42
Вопрос задал: Erz (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Олег Владимирович
Здравствуйте, Erz!
Придирки - почему предел GDT не есть 17h? Он всегда must be равен размеру GDT (в вашем коде offset gdt_reg - offset gdt) - 1. Так что он делится на 8 с остатком 7, и число 8192 тут смотрится как-то странно...
Почему VIDEO_RAM имеет тип WORD? Число там заведомо большее...
INC DWORD [cursor] есть, а cursor DD 0 где?
Все метки заканчиваются двоеточием, а .loop - исключение?
В самом конце - db 0aah, 55H!
Вроде всё...
Удачи!
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: Студент)
Ответ отправлен: 10.02.2007, 11:09
Отвечает: QDSota
Здравствуйте, Erz!
Добавлю еще:
Если точно следовать логике программы, то должно быть:
VIDEO_RAM equ 0b8000h
И:
cursor dd 0
msg_dhello:
--------- Открыть глаза навстречу солнцу
Ответ отправил: QDSota (статус: Профессионал) Россия, Зеленоград Тел.: 8-916-53-43-916 ICQ: 84611301 ---- Ответ отправлен: 12.02.2007, 11:54
Вопрос № 75.065
Помогите написать на Cи со вставками Ассеблера под DOS
1.Отсорировать пять чисел по возрастанию.
2.Дан массив размерности n.Найти первый отрицательный элемент.
3.В строке заменить все символы '1' символом '0', а символы '0' символом '11'
Отправлен: 10.02.2007, 12:42
Вопрос задал: Kostya kam (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Kostya kam!
в приложении 1 и 2 вопросы
Удачи!
Приложение:
Ответ отправил: Зенченко Константин Николаевич (статус: 4-ый класс)
Ответ отправлен: 10.02.2007, 18:55 Оценка за ответ: 5