Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
6 / 6 / 2
Регистрация: 02.08.2014
Сообщений: 119
1

Завершение программы

21.09.2014, 16:35. Показов 6152. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Хотел прояснить следующие моменты. Если программа пишется под DOS (на чистом асме писал пока только такие), то там для завершения программы надо генерировать прерывание (int 20h, int 21h). Под Win почему-то не работает так?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2014, 16:35
Ответы с готовыми решениями:

IntelliTrace остается в процессах после закрытия программы. Правильное завершение программы?
Много (очень много) раз запускал программу, закрывал через крестик. Вдруг винда сообщает, что...

Завершение программы 1/0
Нужно сделать так чтобы на 1 программа продолжалась, а на 0 завершалась! // Функция.cpp:...

Завершение программы
Как завершить программу из другой функции(не Main)? Пробовал использовать system("exit");, но не...

Завершение программы
Как сделать чтобы после выполнения кода программа не завершала свою работу? program Project1; ...

2
Ушел с форума
Автор FAQ
16281 / 7605 / 1066
Регистрация: 11.11.2010
Сообщений: 13,618
21.09.2014, 16:49 2
Лучший ответ Сообщение было отмечено pavel911 как решение

Решение

Цитата Сообщение от pavel911 Посмотреть сообщение
Под Win почему-то не работает так?
Потому что нельзя смешивать "божий дар" и яичницу... хотя программы, которые писались под 16-разрядные Win завершались вот так
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.DOSSEG
DGROUP GROUP DATA, STA
ASSUME CS:CODE, DS:DGROUP
EXTRN INITTASK:FAR
EXTRN DOS3CALL:FAR
;сегмент стека
STA SEGMENT STACK 'STACK'
DW 2000 DUP(?)
STA ENDS
;сегмент данных
DATA SEGMENT WORD 'DATA'
DATA ENDS
;сегмент кода
.CODE SEGMENT WORD 'CODE1
_BEGIN:
;ничего не значащий вызов
PUSH AX
CALL INITTASK
;выход из программы
MOV AH,4CH
CALL DOS3CALL ;вызов подпрограмм INT 21H
CODE ENDS
END _BEGIN
источник: В.Ю.Пирогов "Assembler. Учебный курс" - М.: Издатель Молгачева С.В., Издательство Нолидж, 2001. - 848 с., ил.
смотрим Главу 24. "Начала программирования для WINDOWS" пример простой программы для Win16 на стр 514
1
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
22.09.2014, 10:30 3
Цитата Сообщение от pavel911 Посмотреть сообщение
то там для завершения программы надо генерировать прерывание (int 20h, int 21h). Под Win почему-то не работает так?
По тому, что int 20h/21h - это системные функции DOS. В Windows системные функции находятся в динамических библиотеках, и тебе нужна функция ExitProcess(UINT) из kernel32.dll
0
22.09.2014, 10:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2014, 10:30
Помогаю со студенческими работами здесь

Завершение программы
Здравствуйте, есть, например, код: a, b = map(int, input().split()) print(a ** b) для...

завершение программы
помогите сообразить #include <StdAfx.h> #include <iostream> #include <conio.h> #include...

БД. Завершение программы
Хочу попробовать для хранения данных программы-бота SQLite. Опыт работы с этой БД уже есть, однако...

Принудительное завершение программы
for (int i = 0; i < 20; i++) for (int j = 0; j < 20; j++) for (int n= 0; n < 20; n++) { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru