如果连 BIOS 调用都不想用可以在单步中断中直接修改内存来记录触发次数; 极简版单步中断只递增一个内存计数器 ORG 0x7C00 BITS 16 start: CLI MOV AX, 0x0000 MOV DS, AX MOV SS, AX MOV SP, 0x7C00 ; 设置中断向量 MOV WORD [0x0004], step_handler MOV WORD [0x0006], 0x0000 ; 清零计数器 MOV WORD [counter], 0 ; 开启单步模式 PUSHF POP AX OR AX, 0x0100 PUSH AX POPF ; 执行几条指令每条都会触发中断递增 counter MOV AX, 0xAAAA MOV BX, 0xBBBB ADD AX, BX XOR AX, BX ; 关闭单步模式 PUSHF POP AX AND AX, 0xFEFF PUSH AX POPF HLT step_handler: INC WORD [counter] ; 记录触发次数 IRET counter DW 0 times 510 - ($ - $$) DB 0 DW 0xAA55编译与运行以 Bochs 为例# 1. 保存代码为 single_step.asm # 2. 使用 NASM 编译 nasm -f bin single_step.asm -o single_step.bin # 3. 创建软盘镜像可选 dd if/dev/zero offloppy.img bs512 count2880 dd ifsingle_step.bin offloppy.img convnotrunc # 4. 在 Bochs 中运行或 QEMU qemu-system-x86_64 -fda floppy.img