Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
14-1101406105
Cerberus
2004-11-25 21:08
2004.12.19
lsass.exe


14-1101813041
Dmitry_
2004-11-30 14:10
2004.12.19
!


14-1101800295
PVOzerski
2004-11-30 10:38
2004.12.19
Проблемы с модемом под XP - что делать?


1-1101985367
PURGEN
2004-12-02 14:02
2004.12.19
Форма


1-1101912967
Elast
2004-12-01 17:56
2004.12.19
Поиск в TList