- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在基于 Pentium 的计算机上运行 MS-DOS 6.22(主板支持 ACPI),并且想知道是否有一个可以用来关闭计算机的汇编语言例程,或者它是否比这更难一些(即主板特定)?
基本上,我想创建一个小程序来从命令行关闭计算机。
最佳答案
下面是专门为此编写的工具的示例: http://www.plop.at/en/dostoolsdl.html
源代码可以在这里找到: http://download.plop.at/files/SHUTDOWN.ASM
;*****************************;
; ;
; Code by BiTByte ;
; [Elmar Hanlhofer] ;
; ;
;-----------------------------;
; ;
; SHUTDOWN PC IN DOS ;
; ;
; - Sourcecode is FREE - ;
; ;
;-----------------------------;
; ;
; assembling: ;
; ;
; tasm shutdown ;
; tlink /t shutdown ;
; ;
;-----------------------------;
; ;
; http://plop.at ;
; ;
;*****************************;
assume cs:code,ds:code
assume es:nothing,ss:nothing
code segment
.286
org 100h
start:
push cs
pop ds
call ProcessCommandline
cmp parameter,WRONGPARAMETER
jne @main1
mov ah,9
lea dx,WrongTxt
int 21h
jmp @exit
@main1:
cmp parameter,NOOUTPUT
je @main2
mov ah,9
lea dx,TitleTxt
int 21h
@main2:
cmp parameter,0
je @main30
cmp parameter,HELP
jne @main3
@main30:
mov ah,9
lea dx,HelpTxt
int 21h
int 20h
@main3:
mov ah,2ch
int 21h
call Print
@again:
mov countw,dh
cmp ignore,1
je @again2
mov ah,1
int 16h
jne @exit
@again2:
mov ah,2ch
int 21h
cmp countw,dh
je @again
call Print
cmp seconds,0
je @chknxt1
dec seconds
jmp @again
@chknxt1:
cmp minutes,0
je @nl
mov seconds,59
dec minutes
jmp @again
@nl:
call Poweroff
@exit:
xor ax,ax
int 16h
mov ah,9
lea dx,aborttxt
int 21h
int 20h
Print:
cmp parameter,NOOUTPUT
jne @prn
ret
@prn:
pusha
mov ax,seconds
lea di,outpsec
mov byte ptr ds:[di-1]," "
call integer
mov ax,minutes
lea di,outpmin
mov byte ptr ds:[di-1]," "
call integer
lea dx,outputtxt
mov ah,9
int 21h
popa
ret
Integer:
pusha
mov bx,10 ; set base (10 values)
mov byte ptr ds:[di],"0" ; write "0"
@decagain:
or ax,ax ; check if ax=0
je @decexit
xor dx,dx ; clear dx for div
div bx
add dl,"0" ; in dx=rest & add value "0"
mov ds:[di],dl ; write it
dec di ; sub pointer 1
jmp @decagain
@decexit:
popa
ret
ProcessCommandline:
pusha
mov si,81h
@proces1:
call RemoveSpaces
cmp byte ptr ds:[si],0dh
je @procescmdexit
cmp word ptr ds:[si],"m-"
jne @proces2
add si,2
call RemoveSpaces
call convert
mov minutes,ax
jmp @proces1
@proces2:
cmp word ptr ds:[si],"s-"
jne @proces3
add si,2
call RemoveSpaces
call convert
mov seconds,ax
jmp @proces1
@proces3:
cmp word ptr ds:[si],"h-"
jne @proces4
add si,2
mov parameter,HELP
call RemoveSpaces
cmp byte ptr ds:[si],0dh
je @procescmdexit
mov parameter,TOOMANYPARAMETERS
jmp @procescmdexit
@proces4:
cmp word ptr ds:[si],"n-"
jne @proces5
add si,2
call RemoveSpaces
mov parameter,NOOUTPUT
jmp @proces1
@proces5:
cmp word ptr ds:[si],"i-"
jne @proces6
add si,2
call RemoveSpaces
mov ignore,1
jmp @proces1
@proces6:
mov parameter,WRONGPARAMETER
@procescmdexit:
popa
ret
Convert:
mov parameter,OK
mov di,si
push si
call ToStringEnd
sub si,di
mov cx,si
pop si
push cx
call rinteger
pop cx
add si,cx
ret
RemoveSpaces:
cmp byte ptr ds:[si],20h
jne @removeexit
inc si
jmp removespaces
@removeexit:
ret
ToStringEnd:
cmp byte ptr ds:[si],20h
je @tostrexit
cmp byte ptr ds:[si],0dh
je @tostrexit
inc si
jmp tostringend
@tostrexit:
ret
rinteger:
push bx dx si
xor ax,ax
xor dx,dx
mov bx,10 ; set base 10
@rdecagain:
mul bx ; x10
mov dx,ax ; save old eax
lodsb ; load next value
cmp al,"0" ; value valid?
jb @rdecexit
cmp al,"9"
ja @rdecexit
and ax,0ffh
sub al,"0" ; yes -> sub ascii value
add dx,ax ; add new to old
mov ax,dx ; save new value
loop @rdecagain ; loop during the string
@rdecexit:
pop si dx bx
ret
PowerOff:
mov ax,5300h
mov bx,0
int 15h
push ax
mov ax,5308h
mov bx,1
mov cx,1
int 15h
mov ax,5308h
mov bx,0ffffh
mov cx,1
int 15h
mov ax,5301h
mov bx,0
int 15h
mov ax,530Eh
mov bx,0
pop cx
int 15h
mov ax,530Dh
mov bx,1
mov cx,1
int 15h
mov ax,530Fh
mov bx,1
mov cx,1
int 15h
mov ax,5307h
mov bx,1
mov cx,3
int 15h
int 20h
OK = 1
NOOUTPUT = 2
HELP = 3
TOOMANYPARAMETERS = 5
WRONGPARAMETER = 6
TitleTxt db "PLOP Shutdown program v1.1 Coded by Elmar Hanlhofer "
db "http://plop.at",0dh,0ah,0ah,"$"
WrongTxt db "Error: wrong parameter use -h for help",0dh,0ah,"$"
Param1Txt db "-m"
Param2Txt db "-s"
Param3Txt db "-h"
Param4Txt db "-n"
HelpTxt db "shutdown [-s value] [-m value] [-n] [-i] [-h]",0dh,0ah,0ah
db " turns the pc off"
db 0dh,0ah,0ah
db " -s seconds",0dh,0ah
db " -m minutes",0dh,0ah
db " -n no output",0dh,0ah
db " -i ignore key press to abort",0dh,0ah
db " -h help",0dh,0ah,"$"
OutputTxt db 0dh,"Shutdown in Minutes: "
outpmin db " Seconds: "
outpsec db " $"
ignore db 0
aborttxt db 0dh,"Abort ",0dh,0ah,"$"
parameter db 0
minutes dw 0
seconds dw 0
count db ?
countw db ?
code ends
end start
关于assembly - 使用 ACPI 在 MS-DOS 中关闭计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019463/
我已经使用 MS Word 和一大堆表单字段创建了一个应用程序表单,并且我有一个 Access db,可以从这个 Word 文档中导入我需要的所有数据,这要归功于: http://msdn.micro
我试图找到一种将 Outlook 插件发布到办公商店的方法。但我发现我们只能发布 Office 应用程序,而不能发布 Office 商店的加载项。因此我想知道 Office 应用程序和 Office
我在 MS Reporting Services 服务器上部署了一份报告,工作正常。我可以使用 Microsoft 的报表查看器组件从 ASPX 页面毫无问题地 Access 它、设置报表参数等。效果
让我们再试一次。我发布这个是为了回答 2 个问题 MS Project 2007 是否需要 SharePoint(我希望没有)? 做 你喜欢 MS Project 开发团队 - 它是有用的还是 疼痛?
我正在执行这些星期六上午的任务之一,试图理解为什么为什么要在计算机注册表中搜索某些信息会花费大量时间,甚至迫使我停止该过程。使用这些注册表清理程序之一,我发现该代码花了数十分钟遍历如下行: HKEY_
从多年前开始,我就没有使用Access。 它能很好地解决什么样的问题,甚至比真正的RDBMS支持的Web应用程序更好? 它仍在积极开发吗?还是MS已经死了? 最大的局限性是什么? 更新: 应该使用什么
我们计划重新设计一个相当庞大的 MS Access 应用程序。有没有办法在同一应用程序上同时工作,或者是否可以合并同一文件的两个单独实例(不是数据,而是表单和代码)。现在 Access 包含数据,但在
我写了一些SQL命令来更正表中的字段。由于它是如此之小(也许我有点自大),我什至没有运行过一次,只是将其放入了更新包中供其他用户使用。 Dim SQL As String Dim rs As DAO.
它是Office自带的,是一个“中规中矩”的数据库,到今天这里有800多个问题,但我从来没有关注过它。 我失去了一些有趣的东西? 我说的是 MS-Access 作为用于快速原型(prototype)制
我有一个MS-Access数据库,该数据库已通过使用“用于Access的Microsoft SQL Server迁移助手2008”(aka SSMA)转换为使用SQL表并创建了链接表(因此,MS-Ac
我有一个 Excel 文件,其中包含从 Access 数据库(主数据库)导出的任务。然后,此 Excel 文件用作 MS Project 的导入文件。随后,MS Project 用于实际跟踪和报告,并
我正在尝试获取有关如何将 MS Project 2010 连接到 MS Project Server 2010 的教程或分步说明。 我已经在我的服务器上安装了 Server 2008 R2(64 位)
有没有办法像选择查询一样在查询中引用表单的组合框/文本框? 我通常在选择查询的条件中使用类似这样的东西: like forms!frmMain.qTitleofSomething&* (acces
我想创建一个表,其中包含 DOUBLE 实数类型的列。我可以在表设计 View 中找到数据类型 Number,但是没有 Double 或 single,Float.. 如何实现..? 我还需要 SQL
我环顾四周,发现了一些关于如何从字段的“描述”框中获取描述的 VBA 代码,但没有找到如何在表单属性中使用它的方法。 我希望出现一个 ControlTip,其中包含从数据库中的描述中带来的该字段的描述
我有一个难题。我已经开发了一个 Access 应用程序,我正准备分发它。我刚刚拆分了数据库。 (我知道,有人说我应该从一开始就把它分开开发……我没有)我也刚刚加密了后端数据库。在前端,我已链接到后端并
我制作了一个 MS Access 2013 数据库来跟踪有关交易网站的所有通信。与此问题相关的表和列是具有列 ID(编号)和链接(超链接)的广告,以及具有列广告的注释,其中包含广告 ID。链接字段包含
我与我不拥有且无法更改的数据库建立了 ODBC 连接。我要做的是使相关记录合并为一条记录。关系是一对多。 我有一个学生管理系统,想要导出一个提供自动标注服务(由调用收费)的调用列表。如果有多个学生住在
我在 Access 的表单中设置了一个文本框。该表单链接到一个表格。但是它自己的文本框是未绑定(bind)的,它用于简单地收集用户输入。但是,我无法编辑它所查看的值。 文本框未锁定。文本框可以在 VB
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我是一名优秀的程序员,十分优秀!