0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
1
TASM

Ввод двух строк и их вывод

02.05.2016, 19:43. Показов 8460. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задание - ввести две строки - выполнить с ними определённые действия, вывести.
Ввести вроде как ввёл, пытаюсь проверить вывод, но не получается, первая строка не выводится, со второй всё норм (скрин прикрепил)
Ввод двух строк и их вывод


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
assume cs: code, ds:data
 
data segment
    buffer db 254,0,254 dup ('$')
    str1 db 'enter  string:', 0Dh, 0Ah, '$'
    str3 db 0Dh, 0Ah, '$'
    str2 db 'result:', 0Dh, 0Ah, '$'
data ends
 
data2 segment
    buffer2 db 254,0,254 dup ('$')
    str4 db 'enter  string:', 0Dh, 0Ah, '$'
    str6 db 0Dh, 0Ah, '$'
    str5 db 'result:', 0Dh, 0Ah, '$'
data2 ends
 
code segment
start:
;; Ввод первой строки
    mov ax, data
    mov ds, ax
    
    mov ah,09h
    mov dx, offset str1 
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer  
    int 21h
 
    mov ah,09h
    mov dx, offset str3
    int 21h
 
   ;;;;;;; Ввод второй строки 
    
    mov ax, data2
    mov ds, ax
 
    mov ah,09h
    mov dx, offset str4
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer2  
    int 21h
 
    mov ah,09h
    mov dx, offset str6
    int 21h
 
;;;; Вывод первой строки
 
    mov ah,09h
    mov dx, offset str2
    int 21h
 
    mov ah,09h
    lea dx, buffer+2
    int 21h
 
;;;; Вывод второй строки
 
    mov ah,09h
    mov dx, offset str5
    int 21h
 
    mov ah,09h
    lea dx, buffer2+2
    int 21h
    ;;;
quit:
    mov ax, 4c00h
    int 21h
    code ends
    end start
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2016, 19:43
Ответы с готовыми решениями:

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

Ввод двух строк и их сравнение
Доброго времени суток! Нужно написать программу в которой были реализованы следующие действия: Ввод...

Последовательный ввод двух строк
мне нужно ввести две строки одна за другой,но у меня сразу предлагается ввод двух строк string...

Ввод и сравнение двух строк
Всем снова здрасти! Поможете с задачей? "Ввести с клавиатуры две строки символов(6-7 символов...

4
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
02.05.2016, 20:16 2
Андрей1992, У вас при выводе первой строке в ds находится не то значение.
0
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.05.2016, 20:16 3
перед выводом строки нужно инициализировать сегмент данных, в котором она находится
Цитата Сообщение от Андрей1992 Посмотреть сообщение
Вывод первой строки
Assembler
1
2
3
4
5
6
7
8
9
10
mov ax,data
mov ds,ax
 
mov ah,09h
mov dx,offset str2
int 21h
 
mov ah,09h
lea dx,buffer+2
int 21h
Цитата Сообщение от Андрей1992 Посмотреть сообщение
Вывод второй строки
Assembler
1
2
3
4
5
6
7
8
9
10
mov ax,data2
mov ds,ax
 
mov ah,09h
mov dx,offset str5
int 21h
 
mov ah,09h
lea dx,buffer2+2
int 21h
0
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
02.05.2016, 21:04  [ТС] 4
Цитата Сообщение от proc3nt Посмотреть сообщение
перед выводом строки нужно инициализировать сегмент данных, в котором она находится
Цитата Сообщение от HenryDukart Посмотреть сообщение
У вас при выводе первой строке в ds находится не то значение.
Результат к сожалению не изменился
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
assume cs: code, ds:data
 
data segment
    buffer db 254,0,254 dup ('$')
    str1 db 'enter  string:', 0Dh, 0Ah, '$'
    str3 db 0Dh, 0Ah, '$'
    str2 db 'result:', 0Dh, 0Ah, '$'
data ends
 
data2 segment
    buffer2 db 254,0,254 dup ('$')
    str4 db 'enter  string:', 0Dh, 0Ah, '$'
    str6 db 0Dh, 0Ah, '$'
    str5 db 'result:', 0Dh, 0Ah, '$'
data2 ends
 
code segment
start:
    mov ax, data
    mov ds, ax
    
    mov ah,09h
    mov dx, offset str1 
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer  
    int 21h
 
    mov ah,09h
    mov dx, offset str3
    int 21h
 
   ;;;;;
    
    mov ax, data2
    mov ds, ax
 
    mov ah,09h
    mov dx, offset str4
    int 21h
 
    mov ah,0ah
    mov dx, offset buffer2  
    int 21h
 
    mov ah,09h
    mov dx, offset str6
    int 21h
 
;;;;
    mov ax,data
    mov ds,ax
 
    mov ah,09h
    mov dx, offset str2
    int 21h
 
    mov ah,09h
    lea dx, buffer+2
    int 21h
 
;;;; 
    mov ax, data2
    mov ds, ax    
 
    mov ah,09h
    mov dx, offset str5
    int 21h
 
    mov ah,09h
    lea dx, buffer2+2
    int 21h
    ;;;
quit:
    mov ax, 4c00h
    int 21h
    code ends
    end start
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
02.05.2016, 23:21 5
Лучший ответ Сообщение было отмечено Андрей1992 как решение

Решение

Андрей1992, выводишь все правильно, только, после всех вводов,
выводишь строку она содержит в конце символ $ как ты сделал буфер, а перед ним 0Dh это перевод курсора в начало строки, но не было перевода на следующую строку, поэтому ты выводишь поверх уже своего текста.

пройдись дебагером внимательнее на ds:dx и вывод на экран


поставь после 61 строки str3 db 0Dh, 0Ah, '$'
2
02.05.2016, 23:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2016, 23:21
Помогаю со студенческими работами здесь

Ввод и сравнение двух строк
Здравствуйте, прошу помочь, если есть какие-то идеи Задание такое: "ввести с клавиатуры две...

Ввод двух строк через пробел
Здравствуйте, подскажите пожалуйста как осуществить ввод двух строк через пробел. Например: 123 321.

C++ Ввод и вывод строк
Написать собственный вариант стандартной функции. Сравнить результаты выполнения собственной...

Ввод и вывод строк
Вылетает программа после того, как вводишь строку. Подскажите, пожалуйста, в чем ошибка? Вот код:...

Ввод и вывод строк
Задача: Написать на языке ассемблер com-программу, которая сначала спросит Ваше имя, после введения...

Ввод-вывод строк
Написать программу на СИ, вводящую символьную строку, подсчитывающую ее длину и печатающую...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru