INT%ebx出了什么问题?

ven*_*swu 3 x86 assembly

我这个汇编代码:

INT %ebx
Run Code Online (Sandbox Code Playgroud)

GCC在尝试组装时给我一个错误:

INT ERROR:mismatch operand type for 'int'.
Run Code Online (Sandbox Code Playgroud)

这是否意味着指令的操作数INT必须是常数INT $0X80

Gri*_*zly 6

你的假设是正确的,INT的操作数必须是常数.根据NASM x86参考:

A.81 INT: Software Interrupt
INT imm8                      ; CD ib                [8086]

A.82 INT3, INT1, ICEBP, INT01: Breakpoints
INT1                          ; F1                   [P6] 
ICEBP                         ; F1                   [P6] 
INT01                         ; F1                   [P6]
INT3                          ; CC                   [8086]

A.83 INTO: Interrupt if Overflow
INTO                          ; CE                   [8086]
Run Code Online (Sandbox Code Playgroud)

因此INT需要一个8位立即值,而非中断变量实际上需要一个寄存器.