Вывод числа на экран в том виде, в котором оно хранится в памяти - Assembler

Узнай цену своей работы

Формулировка задачи:

Вывод числа на экран при помощи флага СF в том виде, в котором оно хранится в памяти. В моём алгоритме: сдвигаем на 1 бит влево, смотрим на состояние флага, выводим на экран 1 или 0. Выводит 32 нуля. В чем ошибка? Простейший код, а мучаюсь уже давно.
 
 
#include <stdlib.h>
#include <stdio.h>
 
int i=0, z;
int main() {
 
 asm(
  "movl $15, %eax\n");
 
 for(i=0; i<32; i++)
 {
 asm(
  "shl $1,%eax \n"
  "jc one \n"
  "jnc zero \n" 
 
 "zero:\n"
  "movl $0, z\n"
  "jmp end\n"
 
 "one:\n"
  "movl $1, z\n"
  "jmp end\n"
 
 "end:\n" 
 );
  printf("%i",z );
 }
 
printf("\n");
return 0;
}

Решение задачи: «Вывод числа на экран в том виде, в котором оно хранится в памяти»

textual
Листинг программы
 
#include <stdlib.h>
#include <stdio.h>
 
int i=0, z;
int main() {
 
 asm(
  "movl $15, %ebx\n");
 
 for(i=0; i<32; i++)
 {
 asm(
  "shl $1,%ebx \n"
  "setc z \n"
 );
  printf("%i",z );
 }
 
printf("\n");
return 0;
}

Объяснение кода листинга программы

  1. Программа начинается с подключения двух заголовочных файлов: stdlib.h и printf.h
  2. Затем определяются две переменные: i=0, z;
  3. Далее идет цикл for, который выполняется 32 раза
  4. Внутри цикла происходит два действия:
    • первое действие: сдвиг числа на 1 влево (shl $1,%ebx)
    • второе действие: проверка результата сдвига (setc z)
  5. Результат выводится на экран с помощью функции printf
  6. После завершения цикла выводится символ новой строки с помощью функции printf
  7. В конце программы возвращается 0, что означает успешное выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы