我这个汇编代码:
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?
你的假设是正确的,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位立即值,而非中断变量实际上需要一个寄存器.
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |