Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
Alenka=)
Заблокирован
1

Сортировка символов в строке по алфавиту

10.11.2011, 15:41. Просмотров 2813. Ответов 9
Метки нет (Все метки)

не могу найти ошибку.теоретически всё правильно работает.но вот на деле походу зацикливается=(
основная программа
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
masm
model small
.data
         string db 0ah,73 dup ('$')
         kol db 0
.code
 
prog:
include lab5.txt    
    mov ax, @data
    mov ds, ax
    mov es,ax
          
    vvodstr
    
    mov ah, 10h
    int 16h
          
          sortirovka
         
    mov ah, 10h
    int 16h
    
    vivodstr string
    
    mov ah, 10h
    int 16h
    
    mov ax, 4c00h
    int 21h
end prog
файл lab5.txt
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
61
62
63
64
65
66
67
vivodstr macro z
    mov dx, offset z
    mov ah, 09h
    int 21h
endm
 
vvodstr macro
local n1,ex
    xor dx,dx
    mov cl,70
    lea bx,string+1
n1:
    mov ah,10h
    int 16h
    cmp al,10
    je ex
    cmp al,13
    je ex
    cmp al,61h
    jl n1
    cmp al,7ah
    jg n1        
    push dx
    mov dl,al
    mov ah,02h
    int 21h
    pop dx
    mov [bx],al
    inc bx
    inc dl                
    cmp dl,cl
    je ex
    loop n1
ex:                   
        mov kol,dl
    mov dl, 10          ;перевод курсора на новую строку
    mov ah, 02h
    int 21h
        mov dl, 13    
    mov ah, 02h
    int 21h
endm
 
sortirovka macro
local m0,m1,m2,m3,m4
    xor dx,dx
    xor bx,bx
    xor ax,ax
    xor cx,cx
m0: cmp cl,kol
    je m4
    inc cl
    lea di,string+1
m1: mov dx,[di]
    cmp dx,[di+1]
    jge m2
    jl m3
m2: mov dx,[di+1]
    mov ax,[di]
    mov [di+1],ax
    mov [di],dx 
m3: inc si
    cmp dx,24h
    jne m1
    je m0
m4:
endm
Добавлено через 3 часа 21 минуту
никто не может мне помочь??=(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2011, 15:41
Ответы с готовыми решениями:

Заменить каждую букву в строке на другую букву, следующую за данной буквой через заданное число символов по алфавиту.
Ввести с клавиатуры строку, состоящую из нескольких букв. Заменить каждую букву...

сортировка по алфавиту
привет всем., воть есть задание отсортировать текст по алфавиту.. помогите...

Сортировка слов по алфавиту
задано слово. за основу алфавита взять буквы из этого слова. пользователь...

Сортировка массива строк по алфавиту
Программа на с++, в ней динамически создается массив строк m*n символов...

Заменить каждую букву в строке на букву, следующую за ней по алфавиту
Ввести с клавиатуры строку,состоящую из нескольких букв.Заменить каждую букву в...

9
Ant1971on
267 / 262 / 11
Регистрация: 24.12.2010
Сообщений: 328
10.11.2011, 16:46 2
Alenka=), в основном напутано в макросе sortirovka, да и в основном файле много лишнего, вот, немного исправил, должно работать.
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
masm
 
model small
.stack 100h
.data
         string db 73 dup ('$')
         kol db 0
.code
 
prog:
include lab5.txt        
        mov ax, @data
        mov ds, ax
        mov es,ax
          
        vvodstr
          
        sortirovka
       
        vivodstr string
        
        mov ah, 10h
        int 16h
        
        mov ax, 4c00h
        int 21h
end prog
lab5.txt:
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
vvodstr macro
local n1,ex
        xor dx,dx
        mov cl,70
        lea bx,string
n1:
        mov ah,10h
        int 16h
        cmp al,10
        je ex
        cmp al,13
        je ex
        cmp al,61h
        jl n1
        cmp al,7ah
        jg n1        
        push dx
        mov dl,al
        mov ah,02h
        int 21h
        pop dx
        mov [bx],al
        inc bx
        inc dl                
        cmp dl,cl
        je ex
        loop n1
ex:                   
        mov kol,dl
        mov dl, 10              ;перевод курсора на новую строку
        mov ah, 02h
        int 21h
        mov dl, 13    
        mov ah, 02h
        int 21h
endm
 
sortirovka macro
local nxt,cntn,rpt
rpt:    lea di,string
    xor bx,bx
    mov cl,kol
    dec cl
cntn:   mov dl,byte ptr[di]
    cmp dl,byte ptr[di+1]
    jbe nxt
    xchg dl,byte ptr[di+1]
    mov byte ptr[di],dl
    inc bx
nxt:    inc di
    loop cntn
    or bx,0
    jnz rpt
endm
1
Alenka=)
Заблокирован
10.11.2011, 17:07  [ТС] 3
спасибо вам большое!вы мне очень помогли!
0
qwertun
9 / 9 / 1
Регистрация: 22.12.2012
Сообщений: 491
29.10.2013, 16:47 4
Ant1971on, а с сортировкой строк поможете?
Программа должна отсортировать массив строк длинной по 6 символов первые два из которых числа, так вот сортировка должна происходить по числам по возростанию, код есть но работает плохо (не сортирует)

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
.686
.model flat,stdcall        
option casemap:none
include    \masm32\include\windows.inc
include    \masm32\include\kernel32.inc
include    \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
 
.data
mas1 db "72abcd ","23efgh ","14ijkl ","40mnop ","34qrst ","27uvwx "
mas2 dd 42 dup(1)
n dd 5
_c dd 0
min db 0
.code
_start:
xor eax,eax
xor ebx,ebx
xor edx,edx
lea esi,mas1
lea edi,mas2
mov min,bl
xor edx,edx
 
mov ecx,7
cld
rep movsb
mov ecx,n
    
_cycle1:
    mov _c,ecx
    mov al,[esi]
    mov bl,[edi]
    mov ecx,7
    _cycle2:
        .IF (bl > al)
            mov ecx,7
            cld
            rep movsb
            mov ecx,n
        .ENDIF
        add esi,7
    loop _cycle2
    sub esi,42
    mov ecx,_c
loop _cycle1
 
invoke MessageBox, 0, addr mas1, 0, 0
invoke MessageBox, 0, addr mas2, 0, 0
 
ret
end _start
0
Мотороллер
432 / 243 / 43
Регистрация: 05.08.2013
Сообщений: 1,666
Завершенные тесты: 1
29.10.2013, 19:53 5
qwertun, создайте массив адресов строк. проходите по этому массиву, командой lodsw грузите цифры и сравнивайте их. сортируйте адреса в массиве. все
0
qwertun
9 / 9 / 1
Регистрация: 22.12.2012
Сообщений: 491
29.10.2013, 20:17 6
Мотороллер, а можно пример?
0
Мотороллер
432 / 243 / 43
Регистрация: 05.08.2013
Сообщений: 1,666
Завершенные тесты: 1
29.10.2013, 23:13 7
qwertun, нет

Добавлено через 17 секунд
по крайней мере от меня. мне лень.
0
qwertun
9 / 9 / 1
Регистрация: 22.12.2012
Сообщений: 491
29.10.2013, 23:16 8
Цитата Сообщение от Мотороллер Посмотреть сообщение
нет
Добавлено через 17 секунд
по крайней мере от меня. мне лень.
я бы может и не просил ... если б не сидел над ней третий день подрят
0
Мотороллер
432 / 243 / 43
Регистрация: 05.08.2013
Сообщений: 1,666
Завершенные тесты: 1
29.10.2013, 23:21 9
я кушать хочу ._.
0
qwertun
9 / 9 / 1
Регистрация: 22.12.2012
Сообщений: 491
29.10.2013, 23:22 10
Цитата Сообщение от qwertun Посмотреть сообщение
третий день подрят
немного соврал, не подряд, суббота, воскресенье и сегодня
0
29.10.2013, 23:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 23:22

Заменить каждую букву в строке на другую букву, следующую за данной буквой по алфавиту.
Ввеси строку из букв. Заменить каждую букву в строке на другую букву,...

Сортировка ASCII-символов
Помогите пожалуйста с задачей!!! Ввести строку из произвольных...

Количество символов в строке
вводится строка с клавиатуры, каждый элемент меняестя на следующий по алфавиту,...


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

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

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