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

Сравнить две строки и если в них есть разные буквы, то записать эти буквы в третью строку

22.04.2016, 10:47. Просмотров 932. Ответов 3

Дали задачку:
Ввести 2 строки символов и зарезервировать место под третью строку. Сравнить первые две и если в них есть разные буквы то записать эти буквы в третью строку.
Вот код:
Код

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
60
include io.asm
Sseg segment stack 
  db 256 dup(?)
Sseg ends
Dseg segment
v1 db 0dh,0ah,'Vvedite stroku N1: $'
v2 db 0dh,0ah,'Vvedite stroku N2: $'
s1 db 5 dup(?)
s2 db 5 dup(?)
s3 dw 5 dup(?)
Dseg ends
Cseg segment 
    assume cs:Cseg,DS:Dseg,SS:Sseg,ES:Dseg
start:
    mov ax,Dseg
    mov ds,ax
    mov es,ax
    
    cld
    lea dx,v1
    outstr 
    mov cx,5
    mov si,0
vvod1:  
    inch s1[si]
    inc si
    loop vvod1
    
    newline
    
    lea dx,v2
    outstr
    mov cx,5
    mov si,0
vvod2:
    inch s2[si]
    inc si
    loop vvod2
    
    lea si,s2
    lea di,es:s1
  
    mov cx,5    
srav:
    repe cmps s1,s2
    mov bx,0
    dec di
    mov s3[bx],di
    inc di
    inc bx
    loop srav
    
    mov cx,5
    
    mov ah, 09   
    lea dx, s3   
    int 21h
    finish
Cseg ends 
end start

Мне чутка подсказали и я переписал код и вот измененный:
Измененный код

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
include io.asm
Sseg segment stack 
    db 256 dup(?)
Sseg ends
Dseg segment
v1 db 0dh,0ah,'Vvedite stroku N1: $'
v2 db 0dh,0ah,'Vvedite stroku N2: $'
s1 db 5 dup(?)
s2 db 5 dup(?)
s3 db 6 dup(?)
Dseg ends
Cseg segment 
        assume cs:Cseg,DS:Dseg,SS:Sseg,ES:Dseg
start:
        mov ax,Dseg
        mov ds,ax
        mov es,ax
        
        cld
        lea dx,v1
        outstr 
        mov cx,5
        mov si,0
vvod1:  
        inch s1[si]
        inc si
        loop vvod1
        
        newline
        
        lea dx,v2
        outstr
        mov cx,5
        mov si,0
vvod2:
        inch s2[si]
        inc si
        loop vvod2
        
        lea si,s2
        lea di,es:s1
    
        mov cx,5
        mov bx,0
srav:
        repe cmps s1,s2
        dec di
        mov al, [di]
        mov s3[bx], al
        inc di
        inc bl
        loop srav
 
        mov s3[bx],'$'
        lea dx,s3
        outstr
        finish
Cseg ends 
end start

Но проблема все осталась:C
Почему происходит такой странный вывод? я не могу разобраться уже 1.5 дня
Вот скрины:
Кликните здесь для просмотра всего текста

Сравнить две строки и если в них есть разные буквы, то записать эти буквы в третью строку


Сравнить две строки и если в них есть разные буквы, то записать эти буквы в третью строку


Сравнить две строки и если в них есть разные буквы, то записать эти буквы в третью строку

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2016, 10:47
Ответы с готовыми решениями:

Если в строке встречаются подряд 3 гласные буквы, вставить после них пробел (tasm)
Дана произвольная строка, если встречаются подряд 3 гласные буквы, вставить...

Нужно из строки удалить буквы а и буквы b поменять B заглавные
Может, кто помочь с заданием? Дана строка "abababababababababababab" нужно...

Скопировать одну строку в другую с заменой последней буквы первой строки на произвольный символ
Если есть возможность, то решение кодом, а не алгоритмом.

Дана строка S. Выяснить есть ли в ней прописные и строчные буквы латинского алфавита. Если есть, то вывести эти буквы
Задача №1 Дана строка S. Выяснить есть ли в ней прописные и строчные буквы...

Вводятся две строки; составить третью строку, содержащую уникальные буквы
Вводятся две строки . Составить третью строку Б содержащую уникальные буквы....

3
R71MT
4326 / 1405 / 299
Регистрация: 29.07.2014
Сообщений: 2,448
Записей в блоге: 5
22.04.2016, 11:11 2
Лучший ответ Сообщение было отмечено Firetheestle как решение

Решение

Цитата Сообщение от Firetheestle Посмотреть сообщение
vvod1: *
* * * * inch s1[si]
..не INCH, а INC наверное?
..и попробуй строку(10) изменить на:
Assembler
1
s3 db 5 dup(?), '$'
..соответственно удалив строку(54)
0
Mikl___
Автор FAQ
11903 / 6191 / 574
Регистрация: 11.11.2010
Сообщений: 11,201
22.04.2016, 11:40 3
R71MT,
обрати внимание на строку
Assembler
1
include io.asm
а inch s1[si] это макрос из io.asm ("INCH", "OUTCH", "OUTSTR", "NEWLINE" - это макросы, описанные в io.asm), но Firetheestle считает, что все учат (учили) ассемблер по той же методичке (пособию) что и у него. Пора бы уже к этому привыкнуть, библиотека io.asm неоднократно проскакивала на этой ветке с 2010 года
1
Firetheestle
0 / 0 / 1
Регистрация: 06.10.2015
Сообщений: 5
22.04.2016, 11:45  [ТС] 4
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Спасибо за подсказку;з
Ошибку нашел сам.
Вот работающий код:
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
60
include io.asm
Sseg segment stack 
    db 256 dup(?)
Sseg ends
Dseg segment
v1 db 0dh,0ah,'Vvedite stroku N1: $'
v2 db 0dh,0ah,'Vvedite stroku N2: $'
s1 db 5 dup(?)
s2 db 5 dup(?)
s3 db 5 dup(?), '$'
Dseg ends
Cseg segment 
        assume cs:Cseg,DS:Dseg,SS:Sseg,ES:Dseg
start:
        mov ax,Dseg
        mov ds,ax
        mov es,ax
        
        cld
        lea dx,v1
        outstr 
        mov cx,5
        mov si,0
vvod1:  
        inch s1[si]
        inc si
        loop vvod1
        
        newline
        
        lea dx,v2
        outstr
        mov cx,5
        mov di,0
vvod2:
        inch s2[di]
        inc di
        loop vvod2
        
        lea si,s1
        lea di,es:s2
    
        mov cx,5
        mov bx,0
srav:
        repe cmps s1,s2
        jne p1
p1:
        dec si
        lods s1
        mov s3[bx], al
        inc si
        inc bl
        loop srav
exit:
        lea dx,s3
        outstr
        finish
Cseg ends 
end start
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2016, 11:45

Известно, что строка содержит ровно две одинаковые буквы. Найдите эти буквы
Всем привет. Мне нужна помощь, пожалуйста! Дана строка. Известно, что она...

Дана строка. Известно, что она содержит ровно две одинаковые буквы. Найдите эти буквы
Дана строка. Известно, что она содержит ровно две одинаковые буквы. Найдите эти...

Даны две строки. Если первая строка - длиннее, сформировать третью строку, как объединение строк
Даны две строки. Если первая строка - длиннее, сформировать третью строку, как...


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

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

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