Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Shura_deg
82 / 18 / 5
Регистрация: 01.02.2015
Сообщений: 658
1

Вывод слов из строки TASM

31.10.2015, 17:49. Просмотров 428. Ответов 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
.model  small
.stack  100h
.data
msgCrLf db 0dh, 0ah, '$' 
mesg    db "vvedite stroky!",0dh, 0ah, '$'
pkey db "press any key...$"
inpbuf  db  30      
len db  ?       
buf db 30 dup (?)
stroka db 3
stolbec db 1
    ;-------
mDisp   MACRO   aStr
    mov dx, offset aStr
    mov ah, 9
    int 21h
    ENDM
    ;-------
.code
main:
    mov ax, @data ; настраивается сегментный регистр
    mov ds, ax
 
    mDisp   mesg ; вывод сообщения
    
    mov ah,0ah
    lea dx, inpbuf
    int 21h
    
    xor cx, cx
    lea si, buf
    mov cl, len
cycle:
    lodsb
    cmp al, 20h
    JE next
    mov ah, 02h
    mov dl, al
    int 21h
    JMP exitCycle
next:
    mov ah, 02h
    mov dh, stroka    ;stroka
    mov dl, stolbec    ;stolbec
    int 10h 
    inc stroka
    inc stolbec
exitCycle:   
    loop cycle
    ; wait for any key....    
    mov ah, 1
    int 21h 
        
    mov ax, 4c00h ; выход
    int 21h
end main
Добавлено через 1 час 45 минут
вот написал можно сказать почти рабочий код (при нестанадртных вводах возможны баги)
можно ли его как то упростить, или хотя бы что бы цикла в цикле не было
может быть кто такое решал... на формуме не нашёл похожих задач...
именно что бы слово выводилось в отдельной строке со смещением на один от предыдущего
ПРИМЕР
Код
фывыв
 фывфыв
   фывфыв
     фывфывв
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
68
69
70
71
.model  small
.stack  100h
.data
msgCrLf db 0dh, 0ah, '$' 
mesg    db "vvedite stroky!",0dh, 0ah, '$'
pkey    db "press any key...$"
inpbuf  db  30      
len     db  ?       
buf     db 30 dup (?) 
buf2    db 50 dup (?)
stroka  db 2
stolbec db 1
    ;-------
mDisp   MACRO   aStr
    mov dx, offset aStr
    mov ah, 9
    int 21h
    ENDM
    ;-------
.code
main:
    mov ax, @data ; настраиваетс¤ сегментный регистр
    mov ds, ax
 
    mDisp   mesg ; вывод сообщени¤
    
    mov ah,0ah
    lea dx, inpbuf
    int 21h  
    
    mDisp   msgCrLf
    
    xor cx, cx
    lea si, buf
    lea di, buf2
    mov cl, len
    xor ax, ax
    cld
    mov al,' ' 
m1: 
    PUSH CX
    lodsb   
    cmp al,' '
    je nextword
    cmp al, 0dh
    je oneWord
    mov [di],al
    inc  di
    jmp  oneWord
nextword:
    inc ah
    mov [di],0dh
    inc  di
    mov [di],0ah
    inc  di
    mov cl,ah
m2:     
    mov [di],20h
    inc  di
    loop m2        
oneWord: 
    POP CX       
    loop m1 
    mov [di], '$'
    mDisp buf2
    ; wait for any key....    
    mov ah, 1
    int 21h     
    mov ax, 4c00h ; выход
    int 21h
end main
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2015, 17:49
Ответы с готовыми решениями:

Ввод и вывод в программе символа конца строки (доллара), tasm
Помогите пожалуйста отредактировать программу, чтобы она корректно работала при вводе и выводе...

Вывод строки, TASM
Здравствуйте все. Дошли руки доделать, и застрял на самом простом :\ Есть сие: .486 model tiny...

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

TASM. Вывод строки в DOS по нажатию на горячую клавишу
Есть код вывода строки. Как вывести его по нажатию на клавишу, например "Г". main proc near ...

Ввод символьной строки,вывод содержимого соответствующего регистра(TASM)
Необходимо ввести символьную строку,проанализировать ее.Если строка соответствует имени какого-то...

1
Argogo
491 / 235 / 39
Регистрация: 29.03.2013
Сообщений: 504
31.10.2015, 19:31 2
Shura_deg, слишком запутано, по-моему.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
.model  small
.stack  100h
.code
Begin   PROC
    mov ax, @data
    mov ds, ax
 
    mov dx, offset MsgEnter
    mov ah, 9
    int 21h
 
    mov dx, offset BufLen
    mov ah, 0ah
    int 21h
    call    CrLf
 
    cld
    lea si, [BufLen+2]
@@loop:
    lodsb
    cmp al, 0dh
    je  @@end_disp
    cmp al, 20h
    je  @@inc
    call    DispAL
    jmp @@loop
@@inc:
    call    CrLfMov
    jmp @@loop
@@end_disp:
 
    mov dx, offset MsgPress
    mov ah, 9
    int 21h
    xor ax, ax
    int 16h
    call    CrLf
 
    mov ax, 4c00h
    int 21h
Begin   ENDP
;-------------------
CrLfMov PROC    NEAR
    push    ax
    push    cx
    push    bx
 
    call    CrLf
    inc [Column]
    mov ch, 0
    mov cl, [Column]
@@loop:
    mov al, 20h
    call    DispAL
    loop    @@loop
 
    pop bx
    pop cx
    pop ax
    ret
CrLfMov ENDP
;-------------------
CrLf    PROC    NEAR
    mov al, 0dh
    call    DispAL
    mov al, 0ah
    call    DispAL
    ret
CrLf    ENDP
;-------------------
DispAL  PROC    NEAR
    mov ah, 0eh
    mov bh, 0
    int 10h
    ret
DispAL  ENDP
;-------------------
.data 
MsgEnter    db  'Enter a string: $'
MsgPress    db  0dh, 0ah, 'Press a key to exit...$'
Column      db  0
BufLen      db  0ffh
.data?
        db  100h dup(?)
    END Begin
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2015, 19:31

4 задания-текст внутри. строки, вывод на экран, графика. . компилятор tasm
Здравствуйте. Буду рад любой помощи. Понимаю что сейчас сессия и соответственно извиняюсь за...

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

Пересылка массива слов. Ассемблер, tasm
Изменить данную программу в программу для пересылки массива слов. sseg segment db 128 dup(?)...


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

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

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