在Linux

时间:2016-04-05 08:51:21

标签: c linux assembly inline-assembly

我正在尝试翻译汇编代码,它将系统日期和时间转换为C中的内联汇编代码。

我试图翻译的汇编代码看起来像这样(只是实际代码的一部分)

    MOV     AH, 2AH
    INT     21H

    MOV     BL, DL
    MOV     BH, 0
    PUSH    BX
    CALL    P_PRINT_NUM             ; function to print number

我制作的C代码看起来像

uint8_t test;
asm("movb $0x2A, %%ah;"
    "int $0x21;"
    "movb %0, %%dl;"
     : "=r"(test));

使用GCC编译得很好。但是,当我运行程序时,我得到一个分段错误错误。我尝试了一些改变约束或变量类型但没有成功的事情。我对内联汇编很新。任何帮助将不胜感激。感谢。

0 个答案:

没有答案