我为MBR部分编写了一个x86汇编程序.我编译如下:
nasm hellombr.asm -f bin -o hellombr.img
Run Code Online (Sandbox Code Playgroud)
然后我在qemu中运行它:
qemu -fda hellombr.img -boot a
Run Code Online (Sandbox Code Playgroud)
问题是我如何在源代码级别调试我的程序?
我有以下代码,我试图实现一个使用BIOS函数打印字符串的函数:
int printString(char* string)
{
int i = 0;
while (*(string + i) != '\0')
{
char al = *(string + i);
char ah = 0xe;
int ax = ah * 256 + al;
interrupt(0x10,ax,0,0,0);
i++;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
函数中断在汇编中实现.它调用适当的BIOS中断,如第一个参数所给出的,其余参数分别包含ax,bx,cx和dx寄存器的内容:
.global _interrupt
_interrupt:
push bp
mov bp, sp
push si
push ds
mov ax, #0x100
mov ds, ax
mov ax, [bp + 0x4]
mov si, #intr
mov [si + 1], al
pop ds
mov ax, [bp + 0x6]
mov …
Run Code Online (Sandbox Code Playgroud)