Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

hamster ©   (2004-11-29 19:40:00) 

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


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

Выключение АТХ:
       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


hamster   (2004-12-01 18:05:00) [2]

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


VMcL   (2004-11-30 21:29:00) [3]

>> 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;


DrPass   (2004-11-30 21:21:00) [4]


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

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


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

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

)


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

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


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

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


hamster   (2004-11-30 18:09:00) [8]

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

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


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

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


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

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


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


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


?


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

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


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

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

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


GuAV   (2004-11-29 23:59:00) [13]

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


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


GanibalLector   (2004-11-29 23:37:00) [14]

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

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


GuAV   (2004-11-29 23:37:00) [15]

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


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


GuAV   (2004-11-29 23:34:00) [16]

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


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


DrPass   (2004-11-29 23:27:00) [17]

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

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


GanibalLector   (2004-11-29 23:16:00) [18]

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


DrPass   (2004-11-29 21:59:00) [19]


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

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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо