2012-01-12 5 views
3

私は、このアセンブリコード:それを組み立てるためにしようとしたときINT%ebxの何が悪いですか?

INT %ebx 

GCCは私にエラーを与えている:

INT ERROR:mismatch operand type for 'int'. 

これは命令INTのオペランドがINT $0X80のような一定でなければならないということを意味していますか?

答えて

6

あなたの仮定は正しいです、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ビット即値と非を取ります。

4

はい。 - パラメータを登録取るどれもこれだけです

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. 

:あなたはIntel Software Developers Manual, Volume 2A Instruction Set Reference, A-Mを見てみる場合は、INTための3つのバリエーションがあります。

関連する問題