Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Turbo pascal - выключение   Найти похожие ветки 

 
hamster ©   (2004-11-29 19:40) [0]

Здравствуйте. Как в Турбо Паскале выключить или перезагрузить компьютер?


 
Anton_K ©   (2004-11-29 19:42) [1]

ИМХО, никак.


 
hamster ©   (2004-11-29 19:49) [2]

А хотя бы в Delphi?


 
NE_Mashinist   (2004-11-29 21:01) [3]

В Delphi:
if not ExitWindows(EW_RebootSystem, 0) then
  ShowMessage("Приложение не может завершить работу");
Это перезагрузка!!!


 
DrPass ©   (2004-11-29 21:59) [4]


> Это перезагрузка!!!

Да что мы говорим??? :) А у всех остальных это Log off текущего пользователя ;)


 
GanibalLector ©   (2004-11-29 23:16) [5]

Да делал пару лет назад...ща уже не помню тонкости,но точно помню,что в РОН(адреса забыл) нужно послать было чего-то и все.


 
DrPass ©   (2004-11-29 23:27) [6]

Перезагрузить - вызвать прерывание 19H.
например, так:
uses dos;
var r:registers;
...
intr($19, r);

А выключить - фантазия


 
GuAV ©   (2004-11-29 23:34) [7]

GanibalLector ©   (29.11.04 23:16) [5]
но точно помню,что в РОН(адреса забыл)


хм... а что тогда есть РОН ?


 
GuAV ©   (2004-11-29 23:37) [8]

DrPass ©   (29.11.04 23:27) [6]
А выключить - фантазия


Ну зачем же так. С APM в принципе можно работать в DOS так же как это делает Windows или Linux. И точно помню был такой бут-манагер, где одна из опций - выключить компьютер.


 
GanibalLector ©   (2004-11-29 23:37) [9]

> а что тогда есть РОН ?
регисты общего назначения

>Перезагрузить - вызвать прерывание 19H.
а может и так делал...склироз.


 
GuAV ©   (2004-11-29 23:59) [10]

GanibalLector ©   (29.11.04 23:37) [9]
регисты общего назначения


а какой тогда у регистра общего назначения, например у AX, адрес ???


 
GanibalLector ©   (2004-11-30 00:07) [11]

М-да...не так выразился.Имел ввиду это :

port[$43]:=$b6;
port[$42]:=$ff;
port[$42]:=$02;


 
GanibalLector ©   (2004-11-30 00:09) [12]

>а какой тогда у регистра общего назначения, например у AX, адрес ???
Хотя ...если говорить о микроконтроллерах,то запросто!!!Даже у аккумулятора есть адрес :О


 
GuAV ©   (2004-11-30 00:12) [13]

GanibalLector ©   (30.11.04 0:09) [12]
если говорить о микроконтроллерах


Тогда при чём здесь


>  Turbo pascal - выключение [WinXP]


?


 
GanibalLector ©   (2004-11-30 00:22) [14]

Хорошо,если я скажу : адреса переферийный уст-в вместо [5].Так наверно правильней будет...хотя неуверен.


 
hamster ©   (2004-11-30 18:09) [15]

Большое спасибо, но что значит [11] и что такое registers и intr?
Извините, что такой тупой, но в любом месте программы вставить

> intr($19, r);
,да?


 
ASMiD   (2004-11-30 18:22) [16]

intr - функция, вызывающая программное прерывание с соответствующим номером.
registers - запись, в которой хранятся значения тех самых РОН ов


 
ASMiD   (2004-11-30 18:27) [17]

А вот нашел старую книгу.
Действительно - в DOS прерывание $19 приводит к перезагрузке системы. Запись типа registers достаточно просто объявить, а прерывание тычь туда, куда тебе хочется - на то оно и прерывание.
И еще - когда разрабатывался Turbo Pascal компьютеры программно выключаться еще не умели.


 
WinLamka ©   (2004-11-30 18:41) [18]

перезагрузить оч легко
mov  al,0F0h  
out  64h,al

)


 
DrPass ©   (2004-11-30 21:21) [19]


> но в любом месте программы вставить
>
> > intr($19, r); ,да?

Ну, не в любом, а в том, в котором ты хочешь перезагружать компьютер. Кроме того, в WinXP это не сработает, конечно. Turbo Pascal генерирует программы для DOS, и запускать их нужно соответственно в DOS, а не Windows


 
VMcL ©   (2004-11-30 21:29) [20]

>>hamster ©  (29.11.04 19:40)

>Как в Турбо Паскале ... перезагрузить компьютер

procedure RebootPC(const Warm: Boolean);  assembler;
asm
               cli
               cmp     Warm, False
               je      @@1
               mov     ax, 1234h
              {$IFDEF  DPMI}
               mov     es, Seg0040
               mov     es:[0072h], ax       { Mem[$0040:$0072] := AX }
              {$ELSE}
               xor     bx, bx
               mov     es, bx
               mov     es:[0472h], ax       { Mem[$0000:$0472] := AX }
              {$ENDIF}
   @@1:        sti
               DB      $EA, $00, $00, $FF, $FF
end;


 
hamster ©   (2004-12-01 18:05) [21]

Спасибо всем!


 
naum   (2004-12-01 18:22) [22]

Выключение АТХ:
       mov ax,5301h
       sub bx,bx
       int 15h
       jb stop
       mov ax,530eh
       sub bx,bx
       int 15h
       jb stop
       mov ax,5307h
       mov bx,0001h
       mov cx,0003h
       int 15h
 stop: int 20h



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.039 c
4-1099061385
landy
2004-10-29 18:49
2004.12.19
получение данных из чужого TListView


14-1101798356
IceBeerg
2004-11-30 10:05
2004.12.19
Как установить win98 из winXP (загрузочного компакта нет)


9-1092714276
MonoLife
2004-08-17 07:44
2004.12.19
Линии на канве


1-1102343942
Dysan
2004-12-06 17:39
2004.12.19
дополнения к IDE Delphi


4-1099758134
Владимир
2004-11-06 19:22
2004.12.19
Сообщение Windows





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский