Assembler и SoftIceПомощь в разрешении проблемы
#1
Отправлено 24.03.2006, 03:07:50
Cистема: WinXP Pro/Rus/SP1
Usb keyboard/ Usb mouse
Софт:
1. Turbo Assembler Version 3.0
3. Numega SoftIceNT 4.2.7
____________________________________
Пишу простую программу, которая выводит символ прямым отображением в видеобуфер (по матерьялам рассылки Калашникова).
VOV segment
org 100h
begin:
mov ax,0B800h ;число 0B800h соответствует сегменту дисплея в текстовом режиме
mov es,ax
mov di,0 ;0 - Это будет смещение относительно сегмента 0B800h
mov ah,31 ;(31 - ярко-белый символ на синем фоне)
mov al,33 ;ASCII-код символа (33 - !)
mov es:[di],ax
mov ah,10h ;
int 16h ; Ждем нажатия клавиши
int 20h ; Выходим из нашей программы
VOV ends
end begin
Прогоняю программу через TASM, получаю .com файл. Запускаю этот файл, а на экран ничего не выводится (В окне написано "Неправильная команда или имя файла" и мигает курсор на следущей строке). Почему не выводится символ на экран?
И почему всегда перед выполнением программы в досовском окне появляется эта надпись "Неправильная команда или имя файла", а после нее идет сама программа?
И ещё проблема с SoftIce'ом. Устанавливаю. Настройки не трогаю (ставлю загрузку СофтАйса перед загрузкой Виндовса, чтобы потом можно было вызвать СофтАйс по нажатию CTRL+D). Так вот, когда нажимаю CTRL+D, то появляется окно SoftIce (мигает курсор ввода) и комп виснет намертво (клава и мышь не подают признаков жизни), приходится нажимать Reset (хотя курсор как мигал, так и мигает). Как нужно правильно настраивать? Или в чем тут проблема?
#2
Отправлено 24.03.2006, 16:05:43
по второму - тож юзал такой же (4.7 какаято версия) - она не пашет под ХР скока не старался.... в нете есть рекомендации как его настроить токо один фиг не работает... %(
=======================
мой совет - сделай FAT32 раздел и воткни вин98... сам себе
так сделал... %)
ЗЫ int 20h луше заменить на mov ax,4c00h int 21h %)
#3
Отправлено 24.03.2006, 16:15:56
нет, вы получаете .obj файл. его ищо слинкавать надо. TLINK'ом.Прогоняю программу через TASM, получаю .com файл.
потому что и нету такого файлаЗапускаю этот файл, а на экран ничего не выводится (В окне написано "Неправильная команда или имя файла" и мигает курсор на следущей строке). Почему не выводится символ на экран?
И почему всегда перед выполнением программы в досовском окне появляется эта надпись "Неправильная команда или имя файла", а после нее идет сама программа?
для начала попробуйте нажать g и enterИ ещё проблема с SoftIce'ом. Устанавливаю. Настройки не трогаю (ставлю загрузку СофтАйса перед загрузкой Виндовса, чтобы потом можно было вызвать СофтАйс по нажатию CTRL+D). Так вот, когда нажимаю CTRL+D, то появляется окно SoftIce (мигает курсор ввода) и комп виснет намертво (клава и мышь не подают признаков жизни), приходится нажимать Reset (хотя курсор как мигал, так и мигает). Как нужно правильно настраивать? Или в чем тут проблема?
если ничего не работает, ищите другую версию софтайса, пад вашу ос
вроде как паследний пакет апзывался нумега драйвер студио
у миня в хп работал
но действительна, проще в 98ой.
#4
Отправлено 24.03.2006, 16:19:19
org 100h begin: xor al,3 //Смена видеобуфера int 10h mov ax,0B800h;число 0B800h соответствует сегменту дисплея в текстовом режиме mov es,ax mov di,0;0 - Это будет смещение относительно сегмента 0B800h mov ah,31;(31 - ярко-белый символ на синем фоне) mov al,33;ASCII-код символа (33 - !) mov es:[di],ax mov ah,10h; int 16h; Ждем нажатия клавиши int 20h; Выходим из нашей программы
Вроде бы работало.
Просто винда использует не тот видеобуфер. Надо сделать активным видеобуфер 0B800h
Сообщение отредактировал Altair: 24.03.2006, 17:33:50
#5
Отправлено 24.03.2006, 16:42:27
#7
Отправлено 26.03.2006, 01:30:55
нет, вы получаете .obj файл. его ищо слинкавать надо. TLINK'ом.
Ну само собой я умею делать .com файл, просто я не стал описывать весь процесс получения файла, а то итак текста слишком много получилось в формулировке моего вопроса.
Сообщение отредактировал gibson85: 26.03.2006, 01:33:18
#8
Отправлено 26.03.2006, 01:35:33
Поробуй вот так...
org 100h begin: xor al,3 //Смена видеобуфера int 10h mov ax,0B800h;число 0B800h соответствует сегменту дисплея в текстовом режиме mov es,ax mov di,0;0 - Это будет смещение относительно сегмента 0B800h mov ah,31;(31 - ярко-белый символ на синем фоне) mov al,33;ASCII-код символа (33 - !) mov es:[di],ax mov ah,10h; int 16h; Ждем нажатия клавиши int 20h; Выходим из нашей программы
Вроде бы работало.
Просто винда использует не тот видеобуфер. Надо сделать активным видеобуфер 0B800h
А разве не 0B800h я сделал активным?
#9
Отправлено 26.03.2006, 07:14:25
http://extrim.city.tomsk.net/VOV.com
#10
Отправлено 26.03.2006, 07:24:13
сом то оказытса домен!!! %) %) %)
качать тут http://extrim.city.tomsk.net/vov.rar
я его не паковал - просто надо расширение рар перекинуть на сом!!!
#11
Отправлено 27.03.2006, 01:23:05
The requested URL /~extrim/vov.com was not found on this server. //мая плакать
сом то оказытса домен!!! %) %) %)
качать тут http://extrim.city.tomsk.net/vov.rar
я его не паковал - просто надо расширение рар перекинуть на сом!!!
Твой вариант на XP не проходит.
Вариант Альтаира работает на XP без проблем, за что ему спасибо.
#12
Отправлено 27.03.2006, 17:46:50
mov ax,0B800h просто задает смещение на буфер по адресу 0b800h. Но по умолчанию сеанс MS-DOS у XP выводит на экран сегмент памяти находящийся по другому адресу, не помню по какому, вроде бы 0b000h. Кстати можешь это проверить, выкинь мою вставку и поставь смещение 0b000h.А разве не 0B800h я сделал активным?
Рад был помочь.Вариант Альтаира работает на XP без проблем, за что ему спасибо.
#13
Отправлено 28.03.2006, 10:56:42
Патч на брейкпоинты
#18
Отправлено 07.04.2006, 08:09:19
int 10h /10h - прерывания бивиса для управления экранной системой
какаяж это смена страницы? это определение положения курсора возврашает (без доков могу конешно попутать) дх - строка, дл - колонка, бх - номер страницы... %/
#19
Отправлено 10.04.2006, 03:00:06
В итого SoftIce запускается нормально, клава работает, а вот мышь нет (впрочим, судя по обсуждению на форуме, не только у меня одного). Так что с мышью делать-то?
И кстати, как корректно выходить из SoftIce? Ctrl-Alt-Delete чтоли (комп сразу после одиночного нажатия перезагружается, а потом идет проверка диска на ошибки)?
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0