Наполнять договоренность char с символами большого одного в ASSEMBLY IA32

Я стараюсь делать перевод кода, который я сделал в C в assembly IA32:

int i=0;
char s[3]; 
char c[n];

for(i = 0; i < 3; i++){
    s[i] = c[i];
}

n это переменная целого типа, который получает ввод пользователя, для момента, в котором он находится for он работает "c" уже полный символов, я хочу, как возможно видеть, помещать в "s" первые три символа c. Я это осуществил так в assembly:

for:
    cmpl $3,%eax
    jge endfor
    movb c(%eax),%ecx
    movb %ecx,s(%eax)
    incl %eax
    jmp for

endfor:
    movl  $0,%eax
    pushl %eax
    pushl $s
    pushl $is
    call printf
    addl $8,%ebp
    popl %eax

is: .asciz "%s"
.comm c,500,1
.comm s,500,1

Проблема состоит, в том, что выполнив этот код, меня не печатает ничто, как будто не договоренность не наполнилась, я попробовал достаточно вещи и ничто я не функционировало.

4
задан 24.03.2017, 16:18
0 ответов

Для этого кода, сходного с твоим:

#include<stdio.h>
int main() {
  int i=0;
  char s[4];
  s[3] = '\0';
  char c[3] = {'1','2','3'};   
  for(i=0;i<3;i++){
      s[i]=c[i];
  }

  printf("%s",s);
  return 0;
}

Восток был бы Вашим emsamblador:

.LC0:
        .string "%s"
main:
        push    rbp
        mov     rbp, rsp
        sub     rsp, 32
        mov     DWORD PTR [rbp-4], 0
        mov     BYTE PTR [rbp-13], 0
        mov     BYTE PTR [rbp-32], 49
        mov     BYTE PTR [rbp-31], 50
        mov     BYTE PTR [rbp-30], 51
        mov     DWORD PTR [rbp-4], 0
.L3:
        cmp     DWORD PTR [rbp-4], 2
        jg      .L2
        mov     eax, DWORD PTR [rbp-4]
        cdqe
        movzx   edx, BYTE PTR [rbp-32+rax]
        mov     eax, DWORD PTR [rbp-4]
        cdqe
        mov     BYTE PTR [rbp-16+rax], dl
        add     DWORD PTR [rbp-4], 1
        jmp     .L3
.L2:
        lea     rax, [rbp-16]
        mov     rsi, rax
        mov     edi, OFFSET FLAT:.LC0
        mov     eax, 0
        call    printf
        mov     eax, 0
        leave
        ret
1
ответ дан 03.12.2019, 19:52
  • 1
    Идеальное serí когда собственный сборщик помещает... Не тот, которого производит составитель c. С другой стороны не он está s помогая находить мотив, которым ему не печатается стоимость –  11.03.2017, 11:55