我正在写一个简单的bootloader.它的主要任务是加载内核,并将处理器切换到虚幻模式.我的问题是当我打开虚幻模式时,处理器崩溃了.这是我的代码(从MikeOS使用的一些代码).我使用NASM.
BITS 16
jmp short bootloader_start ; Jump past disk description section
nop ; Pad out before disk description
; ------------------------------------------------------------------
; Disk description table, to make it a valid floppy
; Note: some of these values are hard-coded in the source!
; Values are those used by IBM for 1.44 MB, 3.5" diskette
OEMLabel db "16DOSRUN" ; Disk label
BytesPerSector dw 512 ; Bytes per sector
SectorsPerCluster db 1 ; Sectors per cluster
ReservedForBoot dw 1 ; Reserved sectors …Run Code Online (Sandbox Code Playgroud) 我试图检查驱动器A中是否存在任何磁盘:(在我的程序安装之后,我需要确保计算机无法从安装软盘启动).我已经尝试使用_access方法(未定义引用...),FILE*并在软盘内制作目录并在检查后将其删除.不幸的是,DOS显示了关于将磁盘放入驱动器的丑陋文本(销毁我的TUI并让用户认为驱动器中的磁盘很重要).那么如何抑制此消息,或安全检查磁盘是否存在于驱动器中?
要求是用户应该能够在文本框中添加 Lua 脚本,然后我需要检查用户是否添加了正确的 Lua 脚本,如果脚本正确,那么我需要运行该脚本。谁能建议我一些代码?我尝试了以下操作:
using (Lua state = new Lua())
{
state.DoString(txt.Text);
var scriptFunc = state["ScriptFunc"] as LuaFunction;
var res = scriptFunc.Call(2,3);
Response.Write(res);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 MS-DOS 6 下使用指定的参数执行 .com 文件。
我发现 DOS 2+ - EXEC - LOAD AND/OR EXECUTE PROGRAM Int 21/AH=4Bh 问题是,我不知道我到底应该如何传递这些参数。ES:BX 应该包含一个叫做“参数块”的东西,但是如何构造它呢?例如,如果我想使用参数执行名为 command.com 的文件/C ECHO HELLO WORLD,我将如何调用此中断?
我已经拥有的代码:
ORG 100H
START:
MOV AH, 4BH ;AH=>4BH
XOR AL, AL ;AL=>00H
MOV DX, CMD ;DS:DX=>STRING
MOV BX, PARAM;ES:BX=>PARAMS
INT 21H
MOV AH,4CH
INT 21H
CMD: DB "COMMAND.COM$" ;NOT SURE, SHOULD END WITH $
PARAM: ;???
Run Code Online (Sandbox Code Playgroud)
我如何让我的程序执行前面提到的任务?由于 MS-DOS 快要死了,而且我的汇编程序 NASM 在这个平台上几乎不受支持,所以我将度过一段糟糕的时光。我的代码可能写得不好,因为没有关于 DOS 的资源。
它的重点是执行程序在运行时生成的批处理文件。