Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
vaselo
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
1

С клавиатуры вводится строка, в ней и+1 меняется с и-1 элементом, считается количество таких перестановок, после этого считается сумма всех четных си

20.12.2010, 11:24. Просмотров 772. Ответов 6
Метки нет (Все метки)

Дорогие форумчане, вы не раз мне помогали в решении проблем, но сегодня проблема, с которой я столкнулся для меня оказалась нерешима. С клавиатуры вводится строка, в ней и+1 меняется с и-1 элементом, считается количество таких перестановок, после этого считается сумма всех четных символов. Что смог написал сам, что не смог, помогли, но теперь этот "код" надо обьединить и сделать вывод типа: программа стартовала, введите строку, ваша строка: строка после перестановки, колич. перестановок, сумма четных кодов...
мой быдлокод:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
sseg segment stack 'stack' ;завдання сегменту пам'ят , вид лення памят 
 db 128 dup(?) 
 sseg ends 
 
 dseg segment 'data' ;Завдання сегмента данних 
 text1 db 'Програма стартувала',13,10,'$'
 text2 db 'Введ ть ваш рядок' '$'
 text3 db 'Початковий рядок: ','$'
 text4 db 'Результат:','$'
 myString db 40, ?, 40 dup (?)
 sum dw ? ;Сума код в знак в до перестановки
 n db ? ;Довжина рядка
 kol db 0d ;Счетчик на к льк сть перестановок
 dseg ends
 
 ;------------------------------------ Текст програми -----------------------------------
 cseg segment 'code' ; Завдання сегмента команд
             assume cs:cseg, ds:dseg, ss:sseg ;Встановлення в дпов дност м ж cегментними
 ;рег страми (cs,ds,ss) 
 ;програмними сегментами (cseg,dseg,sseg)
   start proc far ;Початок процедури start (точка входу - start)
           mov ax, dseg ; н ц ал зац я сегментного рег стра ds на
           mov ds, ax ;програмний сегмент даних dseg
 ;---------------------------------------------------------------------------------------------------------------------------
      m1: lea dx, text1 ; Завантажування у рег стр dx з сегмента даних адреси 
                                      ; першого байта текста text1
           call WrStr ;Звернення до процедури WrStr виведення на екран текста text1
           mov dx, offset text2 ;Завантажування у рег тр dx з сегмента даних адреси
                                       ; першого байта текста text2
           call WrStr ;Звернення до процедури WrStr виведення на екран текста text2
 ;-----------------------------------------Ввод-------------------------------------------------------------------
 mov ah,0ah
 mov dx,offset myString
    int 21h
 
 ;-----------------------------------------Цикл-----------------------------------------------------------------------------------
 mov cx,myString[1]
 mov si,4d
 
 cykl: mov al,myString[si-1]
 mov ah,myString[si+1]
 mov myString[si-1],ah
 mov myString[si+1],al
 inc kol
 
 loop cykl;
 
 ;------------------------------------------sum--------------------------------------------------------------
 a1: mov si,offset myString+1 ; встали на первый четный символ
 mov bx,0 ; здесь будет сумма кодов четных символов
 mov сх,ЧИСЛО ; здесь количество символов
 shr cx,1 ; теперь в СХ количество четных символов
 cld; ; считаем от начала строки до конца строки
 a1: lodsb ; получили в AL ; код очередного символа
 add bl,al 
 adc bh,0
 inc si
 mov sum,bx ; сохранили результат
 loop a1;
Заранее спасибо!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2010, 11:24
Ответы с готовыми решениями:

Сумма четных элементов массива считается неверно
CLS INPUT "введите размер массива*"; n DIM A%(n) PRINT "введите массив" FOR i = 1 TO n INPUT...

Вставить в натуральное число заданную цифру после всех четных цифр в записи числа(цифра вводится с клавиатуры)
Дано натуральное число. Вставить в него заданную цифру после всех четных цифр в записи числа(цифра...

Считается ли подмножество единичным элементом множества?
Здравствуйте уважаемые форумчане, на практикуме по дискретной математике, тема множество, был задан...

Дана строка символов. Группа символов между пробелами считается словом. Определить количество слов, являющихся палиндромом.
Дана строка состоящая из слов разделенных пробелом определить номера слов. Название темы изменено,...

Сумма в документах не считается
Помогите решить проблему! ТиС 7.7. После объединения одной конфигурации с другой не считает поле...

6
vaselo
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
21.12.2010, 19:00  [ТС] 2
помогите пожалуйста. эту прогу надо закончить, сделать вывод на экран. очень нужна ваша помощь!
0
murderer
4918 / 1590 / 164
Регистрация: 06.10.2010
Сообщений: 3,509
21.12.2010, 19:19 3
Что значит " в ней и+1 меняется с и-1 элементом"? Из строки "фываолдж" получить "ыфавложд"?
0
vaselo
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
21.12.2010, 19:38  [ТС] 4
1234
поменяло 3 и 1 получили 3214
поменяло 2 и 4 получили 3412


встаем короче, на 1 элт. ниче не делаем, встаем на 2 элт. меняем 1 с 3, встаем на 3-тий, меняем 2 с 4 встаем на 4-тый меняем 3 с 5 и т.д мой алгоритм препод смотрел, говорит, должно работать правильно
0
murderer
4918 / 1590 / 164
Регистрация: 06.10.2010
Сообщений: 3,509
21.12.2010, 20:20 5
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.model tiny
.code
.486
ORG 100h
start:mov ah,10
      mov dx,offset _str
      int 21h
      
      movzx cx,[_str+1]
      sub   cx,2
      mov   si,offset _str+2
      a:lodsb
        xchg  al,ds:[si+1]
        mov   ds:[si-1],al
      loop a 
      
      mov word ptr [_str],0A0Dh
      mov ah,9
      mov dx,offset _str
      int 21h 
      
      xor ax,ax
      int 16h
      ret
        
_str   db 255,0,255 dup('$')
END start
Дальше сам
1
vaselo
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
21.12.2010, 20:31  [ТС] 6
Цитата Сообщение от murderer Посмотреть сообщение
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.model tiny
.code
.486
ORG 100h
start:mov ah,10
      mov dx,offset _str
      int 21h
      
      mov word ptr [_str],0A0Dh  
      mov ah,9                          
      mov dx,offset _str            
      int 21h 
      
      xor ax,ax
      int 16h  ??
      ret
        
_str   db 255,0,255 dup('$')
END start
прокомментируй пожалуйста эти строки, и еще как вывести на экран надписи типа программа стартовала, введите строку, ваша строка - ......., полученная строка - ......
0
murderer
4918 / 1590 / 164
Регистрация: 06.10.2010
Сообщений: 3,509
22.12.2010, 15:54 7
1) Ввод строки
2) Вывод строки (0A0Dh - перемещение курсора на следующую строку)
3) Ожидание нажатия символа
1
22.12.2010, 15:54
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 15:54

Не считается сумма товара
есть программа которая принимает тип товара и проданное количество этого товара.... подчитует...

странно. сумма считается по разному
имеется такая конструкция Первый вариант - пичатает весь список Второй вариант - с...

Не считается сумма в форме access
Приветствую всех. Есть такая проблема: Существует ленточная форма с набором записей, в...


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

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

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