相关疑难解决方法(0)

如何在QEMU中使用GDB对x86代码进行源代码级调试?

我为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)

问题是我如何在源代码级别调试我的程序?

debugging x86 assembly qemu

5
推荐指数
1
解决办法
1819
查看次数

如何在16位模式下使用GDB?

我有以下代码,我试图实现一个使用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)

c x86 assembly gdb

4
推荐指数
2
解决办法
2879
查看次数

标签 统计

assembly ×2

x86 ×2

c ×1

debugging ×1

gdb ×1

qemu ×1