Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

Войти
Регистрация
Восстановить пароль
 
blinds
4 / 4 / 1
Регистрация: 22.02.2009
Сообщений: 35
#1

Удвоить каждый четный элемент текстовой строки - Assembler

22.09.2010, 21:13. Просмотров 496. Ответов 1
Метки нет (Все метки)

Доброго всем времени суток. Нужна помощь, чтобы придумать решение задачи.
В общем задание звучит так:
Ввести произвольную строку, и каждый парный элемент удвоить.
Задание относиться к теме по созданию циклов (команды jmp, loop и производные от них), т.е. как я понимаю, надо придумать автоматизированный алгоритм, который будет обрабатывать строку в цикле.
Т.е. допустим, я имею строку на 6 элементов "abcdef". Получить должен "abccdeef".(По идее, первую дублировать не надо, т.к. она на нулевом месте.)
Все алгоритмы, которые придумал, имеют изъяны. Не знаю уже, что еще придумать. Надеюсь на помощь знатоков, хотя бы пару идей. Буду очень благодарен за помощь.

Добавлено через 59 минут
Извиняюсь за даблпост, в общем нашел решение. Скорее всего оно достаточно не оптимизировано, неуниверсально и т.д., но все же:
Изначально: z=2,n=6, взял изначальную строку на 6 елементов.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    xor bx,bx
    xor bp,bp
    xor dx,dx
    mov dx,2
m2: mov cl,[s1+bx]
    mov [s3+bp],cl
    inc bx
    cmp bx,n
    jz go   ;if bx=6 then exit  
    inc bp
    cmp bx,z
    jz m1
    jnz m2
m1: mov cl,[s1+bx]
    mov [s3+bp],cl
    inc bp
    add dx,2
    mov z,dx
    jmp m2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2010, 21:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удвоить каждый четный элемент текстовой строки (Assembler):

Assembler(удалить каждый пятый элемент строки) - Assembler
Всем доброго времени суток... Дело к сессии и вот осталась одна лаба все никак не могу понять как ее сделать, поэтому прошу о помощи,...

Редактирование текстовой строки - Assembler
в DOS. Написать программу, которая обеспечивает возможность ввода и редактирования текстовой строки. После нажатия Enter повторно вывести...

Прерывания по Dos, Ввод и вывод текстовой строки, (Tasm) - Assembler
Составить программу вывода на экран текста пословицы на английском языке. С клавиатуры к каждой пословице ввести перевод на русском...

Работа с файлами, запись в файл текстовой строки. Ассемблер, tasm - Assembler
Исправить ошибки, чтобы в созданном файле записывалась текстовая строка .model small .data fname db 'hello.txt',0 buffer db...

Первый четный элемент одномерного массива переставить в конец массива - Assembler
Вот к примеру задание: Первый четный элемент одномерного массива нужно переставить в конец массива. Тест: 1 2 6 7 3 ...

Строка: Написать программу, которая обеспечивает возможность ввода и редактирования текстовой строки - Assembler
Написать программу, которая обеспечивает возможность ввода и редактирования текстовой строки. После нажатия Enter повторно вывести строку...

1
alexcoder
1550 / 695 / 93
Регистрация: 03.06.2009
Сообщений: 3,813
Завершенные тесты: 1
23.09.2010, 11:47 #2
Я бы сделал так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
stroka db 'abcdef'
newstr db 10 dup (0)
...
mov bl,z
mov dx,0
cld
lea si,stroka
lea di,newstr
m1:
lodsb
stosb
push ax
mov ax,dx
div bl
test ah,ah
pop ax
jnz m2
stosb
m2:
inc dx
cmp dx,n
jnz m1
Код не проверял, взял с головы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 11:47
Привет! Вот еще темы с ответами:

разделить каждый элемент массива на 2 - Assembler
Доброго времени суток!! Задание: Дан массив 1,2,5,-1,0,3,-1,6 (элементы размером в слово). Необходимо разделить каждый элемент...

Каждый элемент массива уменьшить на минимальный - Assembler
Вобщем задача такая нужно объеденить модули паскаль и ассемблер, т.е. в паскале процедура написанная в отдельном файле на ассемблере, вводы...

масм32. Нужно из двумерного массива Х(m,n) построить вектор Y, каждый элемент которого больше 3. - Assembler
В MASM32 написать программу решения задачи. Помогите пожалуйста с решением задания, или хотя бы с куском основного кода. Буду очень...

Каждый нечетный элемент списка умножить на 2, каждый четный на 3 - Lisp
сначало пытаюсь написать хотя бы проверку на четность и умножение на 3. (defun четность (l) (cond((null l)nil) (t(if(= (mod...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.