我這個彙編代碼:INT%ebx有什麼問題?
INT %ebx
GCC是給我試圖組裝它,當一個錯誤:
INT ERROR:mismatch operand type for 'int'.
這是否意味着指令INT
的操作數必須是一個常數像INT $0X80
?
我這個彙編代碼:INT%ebx有什麼問題?
INT %ebx
GCC是給我試圖組裝它,當一個錯誤:
INT ERROR:mismatch operand type for 'int'.
這是否意味着指令INT
的操作數必須是一個常數像INT $0X80
?
你的假設是正確的,INT的操作數必須是常數。據the NASM x86 reference:
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]
所以INT
發生中斷的8位立即值和非實際變種採取寄存器。
是的。如果你看一看的Intel Software Developers Manual, Volume 2A Instruction Set Reference, A-M,也有INT
三個變種:
Opcode Instruction Description
CC INT 3 Interrupt 3—trap to debugger.
CD ib INT imm8 Interrupt vector number specified by immediate byte.
CE INTO Interrupt 4—if overflow flag is 1.
這就是它 - 沒有說採取註冊參數。