关于int 19h

int 19h是bios 开机自检以后第一条执行的指令,意思是找启动分区,在引导的时候按alt + ctrl + del的本质就是执行int 19h, 我看到这里,仿佛获得至宝,想自己发现了一条最简洁的重启指令,

 

在windows下编译成sys,执行之,蓝屏,错误代码是 trap unknown,应该是windows下的中断表和刚运行那会实模式下的不同了吧,也可能其他错误

 

由于没装虚拟机,嫌速度慢..我的硬盘再次被我折磨了一番

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这段代码是一段汇编程序,用于输入两个字符串并比较它们的长度。 - 第1行:定义字符串的长度为70个字符。 - 第2-3行:定义两个字符串变量,并初始化为70个'x'字符,以及三个'$'字符作为字符串结束标志。 - 第4-5行:定义输入提示信息和下一行的换行符和回车符。 - 第6-7行:定义字符串长度计数器Count,以及存储字符串地址的WhichStr变量。 - 第8-10行:定义数据段和代码段,并将数据段DS存入AX寄存器,再将其存入DS和ES寄存器中。 - 第11行:使用CLD指令清空方向标志位,以便后续使用STOSB向ES寄存器存储字符串时自动向后移动。 - 第12-15行:使用INT 21H中断调用显示提示信息Hint。 - 第16-17行:使用MOV指令将BX寄存器设置为0,用于选择输入的第一个字符串。 - 第18-19行:使用MOV指令将CX寄存器和DI寄存器初始化为0,用于计数和存储第一个字符串的地址。 - 第20行:使用LEA指令将DX寄存器设置为Hint的地址,以便在屏幕上显示提示信息。 - 第21行:使用MOV指令将AH寄存器设置为9,表示将字符串显示在屏幕上。 - 第22行:使用INT 21H中断调用显示提示信息。 - 第23行:使用MOV指令将AH寄存器设置为1,表示从键盘读取一个字符。 - 第24行:使用INT 21H中断调用读取一个字符,并将其存储到AL寄存器中。 - 第25-26行:使用CMP和JZ指令判断是否读取到回车符,如果是则跳转到Next4。 - 第27行:使用STOSB指令将读取到的字符存储到ES寄存器指向的目的地地址中。 - 第28-29行:使用INC和CMP指令累加字符串长度并判断是否达到最大长度,如果未达到则继续读取下一个字符。 - 第30-32行:使用LEA指令将DX寄存器设置为NextLine的地址,以便在屏幕上显示下一行。 - 第33-34行:使用MOV指令将AH寄存器设置为9,表示将字符串显示在屏幕上。 - 第35行:使用INT 21H中断调用显示下一行的换行符和回车符。 - 第36-37行:使用MOV指令将Count数组中对应的元素设置为字符串的长度。 - 第38-41行:使用ADD、CMP和JBE指令判断是否输入了两个字符串,如果是则跳转到Next。 - 第42-45行:使用MOV指令将SI、DI、BX和CX寄存器初始化为WhichStr和Count数组中对应的元素,用于后续比较两个字符串的长度。 - 第46-48行:使用CMP和JA指令判断哪个字符串更长,如果第一个字符串更长则交换它们的位置。 - 第49-53行:使用MOV和INT 21H中断调用分别在屏幕上显示两个字符串,并使用'$'字符作为字符串结尾标志。 - 第54行:使用MOV指令将AH寄存器设置为4CH,表示程序正常退出。 - 第55行:使用INT 21H中断调用,结束程序的运行。 注释中使用了一些汇编语言的缩写,如MOV表示将数据从一个位置移动到另一个位置,INT表示中断调用,LEA表示加载地址等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值