Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.97/59: Рейтинг темы: голосов - 59, средняя оценка - 4.97
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
1

Не работают прерывания

25.09.2009, 21:32. Просмотров 10834. Ответов 31
Метки нет (Все метки)

Вот такой код прекрасно компилится МАСМом, но при запуске екзешника выдает ошибку(Windows Side Bar). Причем такое происходит и с преріванием int 10h тоже. Может DOS переустановить? Виндовс у меня Windows XP SP3 - лицензионный. Монитор TFT 19 дюймов, вроде поддерживает все нужные цветовые режимы и глубину цвета, режим 256 цветный тоже. Видеокарта GeForce 9600GT.
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
.386
 .model flat,stdcall
option casemap:none
 
includelib      C:\masm32\lib\kernel32.lib
 
SetConsoleTitleA PROTO :DWORD
GetStdHandle     PROTO :DWORD
WriteConsoleA    PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ExitProcess      PROTO :DWORD
Sleep            PROTO :DWORD
 
 .const
NAMPRMP     DB   'Имя покупателя?','$'
 
 .code
Main PROC
 
 MOV  AH,09          ;Запрос вывода на экран
 LEA  DX,NAMPRMP     ;Загрузка адреса сообщ.
 INT  21H            ;Вызов DOS
 
invoke Sleep,4000
invoke ExitProcess, 0
 
Main ENDP
end Main
В чем здесь дело?
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2009, 21:32
Ответы с готовыми решениями:

Как работают функции прерывания
Добрый день! Я никак не могу понять, как работают функции прерываний в...

[Вопрос] Перехват прерывания прямым доступом к вектору прерывания
Всех приветствую! В данный момент разбираюсь с обработкой аппаратного...

Обработчик прерывания и перехват прерывания
Доброе время суток, я чтиаю книгу Калашникова-Ассемблер и уже втрой день не...

Прерывания
написал программу по преобразованию нажатой клавиши в скан-код. В принципе это...

C++ и прерывания
Возникла,такая ситуация:при выполнении прерывания (int 10h) в Visual studio и...

31
Давид
Программист 1С
856 / 644 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
25.09.2009, 21:47 2
На другом компе пробовали?

Добавлено через 5 минут
Насколько я понимаю Windows Sidebar это нечто иное как стандартная утилита операционной системы.
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
25.09.2009, 21:51  [ТС] 3
Это утилита, если в Windows возникают ошибка, то эта утилита формирует отчет в службу поддержки с сведениями о неполадках. Я пробовал на другом компе, там работало. Сервисный пакет был 2. Но мне надо, чтоб на моём тоже работало)
0
Давид
Программист 1С
856 / 644 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
25.09.2009, 21:55 4
И еще подчеркнул такие сведения что это стандартная функция Висты...тут скорее всего дело не в коде, дело будет в ОС...как вариант проверить на другом компьютере с более старыми функциями, а еще лучше я бы попробовал переустановить DOS...иногда помогает!

Добавлено через 2 минуты
Можно впринципе хоть это и не очень удобно попробовать в безопасном режиме запустить...
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
25.09.2009, 22:01  [ТС] 5
Цитата Сообщение от Давид Посмотреть сообщение
что это стандартная функция Висты...
Какая ф-я?
Цитата Сообщение от Давид Посмотреть сообщение
Можно впринципе хоть это и не очень удобно попробовать в безопасном режиме запустить..
Как это сделать? Отключить брандмауэр? я пробовал оно вылетает.

Добавлено через 1 минуту
Это вообще не должно от винды зависеть. Это прерывание либо DOS(21h) либо BIOS(10h). Может биос переустановить?

Добавлено через 17 секунд
Это вообще не должно от винды зависеть. Это прерывание либо DOS(21h) либо BIOS(10h). Может биос переустановить?
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
25.09.2009, 22:04 6
В винде прерывания не действуют.
Или пишите программу под дос или не используйте их.
1
Давид
Программист 1С
856 / 644 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
25.09.2009, 22:07 7
А прошивка Bios какая?какого года?
0
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
25.09.2009, 22:08  [ТС] 8
Это только под DOS, LInux я прав?

Добавлено через 41 секунду
Цитата Сообщение от Давид Посмотреть сообщение
А прошивка Bios какая?какого года?
2007 - го
0
Давид
Программист 1С
856 / 644 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
25.09.2009, 22:10 9
считаю самым оптимальным вариантом опробовать dos переставить

Добавлено через 54 секунды
2007 - го
ну ето еще нормально....не от биоса тогда точно зависит....
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
25.09.2009, 22:11 10
Ненадо ничего переустанавливать! Просто сделайте прогу под дос и вызывайте прерывания скока хотите
Давид, не смущайте человека, если не знаете.
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
25.09.2009, 22:15  [ТС] 11
Да вот дочитал методичку. Вы правы. Спасибо.

Добавлено через 1 минуту
Я извиняюсь за тупость, но как сделать под ДОС, как линковать(ключик какой) и как запускать? Что писать в командной строке?
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
25.09.2009, 22:37 12
Собственно программа :
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.model small
.stack 100h
.data 
mesg     db "Hello World! $"
.code
main:
        mov ax, @data ; настраивается сегментный регистр
        mov ds, ax
        
        mov ah, 09
        mov dx, offset mesg ; вывод сообщения
        int 21h
        
        mov ah, 01 ; ждет нажатия кнопок
        int 21h
 
        mov ax,4c00h ; выход
        int 21h
 
end main
Компилировать по идее достаточно так
Код
ml.exe hello.asm
link.exe hello.obj
Но учитывая, что у вас скорее всего новый масм, то вместо link используйте doslnk.exe
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
25.09.2009, 22:59  [ТС] 13
Спасибо. Я пользуюсь DOSBox под Windows. Скопировал Ваш єкзешник в бин Масма скомпилил слинковал, как теперь из DOSBOX -а запустить?
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
25.09.2009, 23:08 14
запустить можно и просто кликнув по нему. В винде есть встроеный эмулятор доса - ntvdm - он все сделает.
Если все же досбокс, то там надо примонтировать диск( mount или как-то так не помню, набери help в нем ), потом можно с него запускать как обычно из ком строки.
0
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
25.09.2009, 23:36  [ТС] 15
Пишет
This program cannot be run in DOS mode
Что делать?
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
25.09.2009, 23:41 16
Это вы скорее всего что-то другое пытаетесь запустить. Так пишут проги для винды.
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
26.09.2009, 00:12  [ТС] 17
А Вы не могли бы дать малюсенький екзешник, который запускается под ДОС для проверки(извиняюсь если наглею)?
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
26.09.2009, 00:22 18
Странно...
1
Вложения
Тип файла: rar hello.rar (1.0 Кб, 48 просмотров)
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
26.09.2009, 01:21  [ТС] 19
Все работает. Видно слинковал плохо.

Добавлено через 55 минут
Цитата Сообщение от Goodwin98 Посмотреть сообщение
Но учитывая, что у вас скорее всего новый масм, то вместо link используйте doslnk.exe
А что там за файл требует *.map - что это за файлик?
0
Goodwin98
2522 / 818 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
26.09.2009, 01:34 20
Не понял, как это он у вас его требует? Он наоборот его создает, если надо. Для чего нужен я и сам, если честно не знаю.
А тот link, что сейчас идет в масме просто не линкует дос программы.
0
26.09.2009, 01:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2009, 01:34

прерывания
Здравствуйте, подскажите, пожалуйста, как осуществить прерывание при нажатии на...

Прерывания
Знатоки assemblera помогите написать программку Замаскировать прерывания от...

Прерывания
Кто знает как через прерывания узнать свое оборудование на ПК(мать, проц,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru