资源描述:
《dos下关闭电源的源代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、大家对dos也许都不陌生了,也许都已经忘记了,但是如果你用过dos,就一定碰到关机的问题,就我印象所知,dos并没有给我们提供一个关机的程序,所以我们就不能想WINDOWS一样让它自己关机,最直接的办法就是:按下电源按钮!这也许太粗暴了些,当然简单的还包括重启,也只有按下复位按钮,这对于一些经常在dos下工作的朋友来说无疑是个噩梦,特别是一些生产线上的测试,一般都是dos下才能测试的电脑配件,如:显卡,声卡,主板等等,如果能实现软件关机重启,那将大大提高工作效率,而且可以实现全自动化测试.我经过查找资料,终于找到了电源编程接口:INT15H.具体的源代码
2、我贴在下面,请大家编译链接后在dos下运行看看,是否可以实现关机功能.如果没有编译工具,程序我会放在网上供大家下载.至于重启,是相当简单的了.只要向一个端口写特定的字节就可以了,当然还有热启动和冷启动的区别.下面一并给出源代码:关机程序:.286CODESEGMENTASSUMECS:CODE,DS:CODEORG100HSTART:jmpinstallDISP_DATADB'Computerwillshutdown!!!',07H,07H,07H,'$'DISP_DATA_ENDEQUTHISBYTEERRORP1DB'CANNOTCLOSETHEDE
3、VICE!!',07H,07H,'$'install:MOVAH,06HMOVDL,07H;BEEP.INT21HCALLDELAYAMOVAX,5300HMOVBX,0INT15H;readapmversionPUSHAXMOVAX,5301H;connectreal-modeinterface.MOVBX,0INT15HMOVAX,530EH;getdriverversion.MOVBX,0POPCXINT15HMOVAX,530DH;enabledevicepowermanagement.MOVBX,1MOVCX,1INT15HMOVAX,530F
4、H;engagepowermanagement.MOVBX,1MOVCX,1INT15HMOVAH,9MOVDX,OFFSETDISP_DATA;Displayoption.INT21HMOVAX,5307H;turnoffsystem.MOVBX,01HMOVCX,0003HINT15H;poweroffJNCPOWER_OFFMOVAX,5304HMOVBX,0INT15H;RESETINTERFACE.MOVAH,9MOVDX,OFFSETERRORP1INT21HPOWER_OFF:MOVAH,4CHINT21HDELAYAprocPUSHCXP
5、USHDXPUSHBXPUSHAXMOVCX,4800HWAITING:INAL,61HANDAL,10HCMPAL,AHJEWAITINGMOVAH,ALLOOPWAITINGPOPAXPOPBXPOPDXPOPCXRETDELAYAENDPCODEENDSENDSTART重启程序:MOVAX,0040HMOVDS,AXMOVAX,1234HMOVSI,0072MOV[SI],AXJMPFFFF:0000H或者直接调用debug来生成一个.COM文件。Debug<回车>-A(''-''是DEBUG的提示符号,A是DEBUG的汇编命令,输入A后回车)XX
6、XX:0100movax,5301(XXXX:0100是内存的代码段(随机的)和DEBUG自动给出的偏移,以下略)movbx,0int15movax,5307movbx,1movcx,3int15movax,4c00int21-rcx25(CX寄存器表示文件长度,这里输入的比实际大些)-nPOWEROFF.com(给文件取名)-w(写入文件)-Q(退出DEBUG)Ok,运行POWEROFF.com就可以看到效果了。==========================================================