⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boot.asm

📁 一个nasm写的引导程序,功能混乱的引导程序,已实现命令行界面,实现cls,reboot命令
💻 ASM
字号:
[bits 16]
[org 0x7c00]
jmp Main
Msg	db	"Welcome To Tresss Studio......"
	db	13,10,"Tresss Studio is Start"
Mturn	db	13,10,2,3,">",0
AdrCmd	times	20 db 0		;记住所输命令,最大19个字符
CmdCls	db	"cls",0
CmdReboot	db	"reboot",0

ShowMessage:
  mov ah,0x0e
  mov bh,0x00
.nextchar:
  lodsb
  or al,al
  jz .brs
  int 0x10
  jmp .nextchar
  .brs
  ret
Main:
  xor ax,ax
  mov ds,ax
  mov si,Msg
  call ShowMessage	;显示欢迎信息
  mov si,AdrCmd		;Si来记录命令
  xor cl,cl		;Di来记录命令长度
WaitInput:	;等待用户输入
  xor ah,ah
  int 16h
  cmp al,13
  jz .Chrturn	;判断如果为回车键,则跳转检查命令
  cmp cl,19
  jz WaitInput	;命令超长
  inc cl
  mov [si],al
  inc si
  mov ah,0eh
  int 10h  
  jmp WaitInput

.Chrturn
  push bx
  xor al,al
  mov [si],al		;命令最后加一个"\0"
  mov si,AdrCmd		;所输命令地址
  mov di,CmdCls		;对比命令地址
  call CmpStr
  or bl,bl
  jnz Cls		;跳转执行清屏
  mov di,CmdReboot
  call CmpStr
  or bl,bl
  jnz Reboot		;跳转重启
ShowHint:
  mov si,Mturn		;提示符显示
  call ShowMessage
  pop bx
  xor cl,cl
  mov si,AdrCmd
  jmp WaitInput

;∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
;字符串对比函数
;参数:si,di
;返回值:bl,两字串相等返回1,不等返回0
;∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
CmpStr:
  xor bl,bl
  .CmpStart
    cmp BYTE [di],0
    jz .CmpEnd		;对比结束
    mov al,[di]
    cmp al,[si]
    jnz .Nequ		;不同,结束
    inc si
    inc di
    mov bl,1
    jmp .CmpStart
  .Nequ
    xor bl,bl
  .CmpEnd
    ret

Cls:
  mov cx,0	;清屏
  mov dh,24
  mov dl,79
  mov bh,07
  mov al,0
  mov ah,6
  int 10h

  mov ah,0fh	;读取当前页号
  int 10h
  mov ah,2
  mov dx,0	;设置光标位置
  int 10h
jmp ShowHint

Reboot:
  mov ax,0040h
  mov ds,ax
  mov word[0072h],0000h
  jmp 0ffffh:0000h

times 510-($-$$) db 0
dw 0xaa55

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -