Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 683
от 15.02.2007, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 370, Экспертов: 29
В номере:Вопросов: 2, Ответов: 3


Вопрос № 75054: Здраствуйте. Пишу бутсектор. Изучаю переход в защищенный режим. Эмулятор - VMware. Код приведен ниже. Вопрос: почему текст не выводится? ---------------------------------------------------------- [org 0x7c00] start: ...
Вопрос № 75065: Помогите написать на Cи со вставками Ассеблера под DOS 1.Отсорировать пять чисел по возрастанию. 2.Дан массив размерности n.Найти первый отрицательный элемент. 3.В строке заменить все символы '1' символом '0', а символы '0' символом '11'...

Вопрос № 75.054
Здраствуйте.
Пишу бутсектор. Изучаю переход в защищенный режим.
Эмулятор - VMware. Код приведен ниже.
Вопрос: почему текст не выводится?
----------------------------------------------------------

[org 0x7c00]
start:

cli
mov ax,cs
mov ds,ax
mov ss,ax
mov es,ax
mov sp,start
mov bp,sp

lgdt [gdt_reg]

in al,92h
or al,2
out 92h,al

mov eax,cr0
or al,1
mov cr0,eax

jmp 8:protected
[BITS 32]
protected:

mov ax,10h
mov ds,ax
mov ss,ax

mov esi,msg_hello
call kputs

hlt
jmp short $


kputs:

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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное