Вывод числа на экран в том виде, в котором оно хранится в памяти - 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; }
Объяснение кода листинга программы
- Программа начинается с подключения двух заголовочных файлов: stdlib.h и printf.h
- Затем определяются две переменные: i=0, z;
- Далее идет цикл for, который выполняется 32 раза
- Внутри цикла происходит два действия:
- первое действие: сдвиг числа на 1 влево (shl $1,%ebx)
- второе действие: проверка результата сдвига (setc z)
- Результат выводится на экран с помощью функции printf
- После завершения цикла выводится символ новой строки с помощью функции printf
- В конце программы возвращается 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д