2013-10-14 60 views
0

我有这个英特​​尔ASM代码转换成AT &牛逼ASM:ASM - 英特尔AT&T

mov al, byte ptr [n] 
    mov byte ptr [genint+1], al 
    jmp genint 
genint: 
    int 0 

我是不是能够做到这一点,但在这里我尝试:

movb (n), %al 
    movb %al, (genint+1) 
    jmp genint 
genint: 
    int 0 

请帮忙吗? 非常感谢:)

回答

2

int 0应该是int $0。否则它应该没问题,即使你有一些无害的额外括号。请注意,如果您使用的是gnu汇编程序,则可以使用.intel_syntax noprefix切换到intel语法。

movb n, %al 
    movb %al, genint+1 
    jmp genint 
genint: 
    int $0 
+0

感谢您的回复,但我仍然可以编译它。我得到这个错误:/tmp/ccmT496y.s:汇编信息: /tmp/ccmT496y.s:81:错误:错误的寄存器名称'%almovb%al' –

+0

这只是意味着你搞砸了行结束。也许使用dos/mac编码? – Jester

+0

我正在使用GCC(这是内联asm)。我用错误信息编辑了评论!非常感谢! –