Microsoft KB Archive/68805

= How to Reboot Your Machine Within a MASM Application =

Article ID: 68805

Article Last Modified on 10/20/2003

-

APPLIES TO


 * Microsoft Macro Assembler 5.0
 * Microsoft Macro Assembler 5.1 Standard Edition
 * Microsoft Macro Assembler 5.1a
 * Microsoft Macro Assembler 6.0 Standard Edition
 * Microsoft Macro Assembler 6.0a
 * Microsoft Macro Assembler 6.0b

-



This article was previously published under Q68805



SUMMARY
You can perform a complete reboot (cold boot) on an 8086-based machine by jumping to the address FFFF:0000. This action also reboots many 80286 and 80386 machines. The address contains a jump instruction that leads to the machine's initialization code. For this method to succeed, your machine must be in real-mode operation.



MORE INFORMATION
To prevent a memory check on IBM and many compatibles (warm boot), you should store the value 0 x 1234 in the memory location at 0040:0072. On 100-percent IBM BIOS compatible machines, an alternative method is to call int 19h instead of jumping to the address mentioned above.

Sample Code
; Assemble options needed: none

.MODEL small

.CODE

Start: mov ax, @data                ; Load ds with data segment mov ds, ax

mov ax, 40h                  ; These three lines cause a memory mov es, ax                   ; test NOT to be performed. To   mov WORD PTR es:[72h], 1234h  ; do a memory test, remove them.

jmp DWORD PTR b_vec          ; Jump to the reboot address

.DATA b_vec  DW 00000h                 ; Offset of reboot vector DW 0FFFFh                ; Segment of reboot vector

.STACK

END Start

Additional query words: 5.10 5.10a 6.00 6.00a 6.00b

Keywords: KB68805

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.