小编Jef*_*fUK的帖子

装配启动加载程序在虚拟PC上工作,而不是在真正的PC上

希望有人可以提供帮助,我很沮丧!我在网上找不到任何进一步的帮助,主要是因为我的代码在虚拟机中完美运行,但在真正的PC上启动时却没有(从USB检测到USB硬盘驱动器的USB笔驱动器.)

在virtualbox中; 代码将磁盘的扇区2和3读入内存,打印前128个字节(作为调试步骤),然后执行存储在这些扇区中的代码.

在我的真实PC上,它成功地将正确的字节打印到屏幕上(显然正确地读取磁盘,并将其写入内存中的预期位置)但是然后在该点停止执行而不是跳转.

为什么会有所不同,我可能做错了什么?

ORG 0x7C00;

; Load Sector 2&3 from disk to 0x1000

mov bx , 0x1000             
mov ah , 0x02   
mov al , 0x02   
mov ch , 0x00   
mov dh , 0x00   
mov cl , 0x02   
int 0x13;


;Print 0x1000 + 128 bytes

mov ah, 0x0e        
mov bx ,0x1000;
loop2:          

mov al, [bx]        
cmp bx, 0x1000+128  

je end2
int 0x10        
add bx , 1;     
jmp loop2;

end2:

; Run our code


call 0x1000

jmp $;

TIMES 510 …
Run Code Online (Sandbox Code Playgroud)

x86 assembly osdev bootloader

3
推荐指数
1
解决办法
459
查看次数

使用Print()打印超过8000个字符

如何打印包含超过 8000 个字符的字符串(例如动态查询)?

Declare @sql varchar(max)
set @Qry='....(more than 8000 char)'
Print (@Qry)
Run Code Online (Sandbox Code Playgroud)

上面仅打印@Qry的前8000个字符并截掉其余部分。

t-sql dynamic-sql

3
推荐指数
1
解决办法
6018
查看次数

标签 统计

assembly ×1

bootloader ×1

dynamic-sql ×1

osdev ×1

t-sql ×1

x86 ×1