@Kibakus

Как написать программу со следующим алгоритмом (NASM assembler)?

1)вывести приглашение;
СДЕЛАНО
2)ввести с клавиатуры строку (предполагается, что она содержит десятичные цифры и любые буквы);
СДЕЛАНО
3)найти во введенной строке все цифры и для каждой найденной цифры установить в «1» в регистре ax бит, номер которого равен этой цифре. Вывести на экран содержимое регистра ax в виде нулей и единиц;
НЕ СДЕЛАНО

Пример программы, но я не знаю, как сделать алгоритм для задачи:

Пожалуйста, напишите код сборки Используя NASM, LD, int 80h.
nasm -f elf -F dwarf -g file.asm

ld -m elf_i386 -o file file.o


SECTION .bss
    num:       resb 254
SECTION .data
    hello:     db 'Enter the string: ',0
    helloLen:  equ $-hello
    output:    db 'Output: ',0
    outputlen: equ $-output

SECTION .text
    GLOBAL _start

_start:
    mov eax,4
    mov ebx,1
    mov ecx,hello
    mov edx,helloLen
    int 80h

    mov eax,3
    mov ebx,0
    mov ecx,num
    mov edx,254
    int 80h

    ...
    ...
    ...

    mov eax,4
    mov ebx,1
    mov ecx, ...
    mov edx, ...

    mov eax,1
    mov ebx,0
    int 80h
  • Вопрос задан
  • 503 просмотра
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
я не знаю, как сделать алгоритм для задачи

в чём конкретно сложность?

найти во введенной строке все цифры

это понятно как сделать?

для каждой найденной цифры установить в «1» в регистре ax бит, номер которого равен этой цифре.

если известно значение цифры, то маску для нужного бита можно получить применив инструкцию shl к 1. маску можно добавить к значению регистра инструкцией or.

Вывести на экран содержимое регистра ax в виде нулей и единиц

проверять младший бит регистра (или старший, если хочется выводить биты от старших к младшим), выводить 0 или 1, сдвигать регистр вправо (или, соответственно, влево). повторять 16 раз.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы