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

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

26.01.2016, 17:01. Показов 11058. Ответов 5
Метки asm, tasm (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: Написать на языке ассемблер com-программу, которая сначала спросит Ваше имя, после введения имени спросит фамилию, и тогда выведет: "Hello, ВВЕДЕННАЯ_ФАМИЛИЯ ВВЕДЕННОЕ_ИМЯ".
Проблема: Я ввожу имя. Появляется строка для ввода фамилии, которая частично закрыта введенными данными. После всего этого не могу вывести все вместе. Помогите вывести так как в задании

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
.model tiny
.code
org 100h
.startup
 
mov dx,offset urname ;запрос ввода имени
mov ah,09h
int 21h
;-----------------------
mov dx, offset name1  ;запись строки в переменную name1
mov ah,0ah
int 21h
;-----------------------
mov dx,offset ursuname ;запрос ввода фамилии
mov ah,09h
int 21h
;-----------------------
mov dx, offset surname ;запись строки в переменную surname
mov ah,0ah
int 21h
;-----------------------
mov dx,offset vivod ;здесь вывод всех введенных данных
add dx,2h
add dx,3h
 
mov ah,09h
int 21h
ret
 
urname db 'Enter your name $'
ursuname db 'Enter your surname $'
name1 db 255,255,255 dup ("$")
surname db 255,255,255 dup ("$")
vivod db "Hello $"
end
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2016, 17:01
Ответы с готовыми решениями:

Ввод двух строк и их вывод
Есть задание - ввести две строки - выполнить с ними определённые действия, вывести. Ввести вроде...

Ввод-вывод с клавиатуры и обработка строк
Здравствуйте. Я недавно начал изучать ассемблер и столкнулся с проблемой, которая заключается в...

Ввод/вывод с клавиатуры и обработка строк (поиск подстроки в строке).
Задание: Ввести строку с символами, после ввести символ или несколько символов и вывести на экран...

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

5
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
26.01.2016, 18:20 2
Лучший ответ Сообщение было отмечено mambat как решение

Решение

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
.model tiny
.code
org 100h
.startup
 
mov dx,offset urname ;запрос ввода имени
mov ah,09h
int 21h
;-----------------------
mov dx, offset name1  ;запись строки в переменную name1
mov ah,0ah
int 21h
;-----------------------
mov dx,offset ursuname ;запрос ввода фамилии
mov ah,09h
int 21h
;-----------------------
mov dx, offset surname ;запись строки в переменную surname
mov ah,0ah
int 21h
;-----------------------
mov dx,offset vivod ;здесь вывод всех введенных данных
lea di,vivod + 8
lea si,name1+2
mov cl,[name1+1]
xor ch,ch
rep movsb
mov al,' '
mov cx,2
rep stosb
 
lea si,surname+2
mov cl,[surname+1]
xor ch,ch
rep movsb
mov byte ptr [di],'$'
mov ah,09h
int 21h
ret
 
urname db 13,10,'Enter your name $'
ursuname db 13,10,'Enter your surname $'
name1 db 255,255,255 dup ("$")
surname db 255,255,255 dup ("$")
vivod db 10,13,"Hello $"
end
3
Эксперт Hardware
Эксперт Hardware
6149 / 2389 / 396
Регистрация: 29.07.2014
Сообщений: 3,134
Записей в блоге: 4
26.01.2016, 19:16 3
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
ORG 100h
JMP start
 
mess0    DB  13,10,'NAME...: $'
mess1    DB  13,10,'SURNAME: $'
mess2    DB  13,10,'============================='
         DB  13,10,'HELLO $'
name     DB  16 DUP('$')
sname    DB  16 DUP('$')
 
start:
;------- вводим имя ----------------------
   MOV   AH,9
   MOV   DX,mess0
   INT   21h
   MOV   DI,name
   CALL  SAVETXT
;------- вводим фамилию ------------------
   MOV   AH,9
   MOV   DX,mess1
   INT   21h
   MOV   DI,sname
   CALL  SAVETXT
;------- выводим все/три строки ----------
   MOV   AH,9
   MOV   DX,mess2
   INT   21h
   MOV   DX,name
   INT   21h
   MOV   DX,sname
   INT   21h
;------- E O F ---------------------------
exit:
   XOR   AX,AX
   INT   16h
   INT   20h
;=====================================================
;------- процедура сохраняет ввод в DI ---------------
SAVETXT:
@@:
   XOR   AX,AX     ; ждём символ..
   INT   16h
   CMP   AL,13     ; заканчиваем ввод по Enter
   JE    stop
   INT   29h       ; выводим символ на экран
   STOSB           ; и записываем его в DI
   JMP   @b        ; мотаем цикл..
stop:
   MOV   AL,' '    ; вставим пробел/разделитель
   STOSB
RET
1
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 10
12.02.2018, 03:53 4
Здраствуйте, Constantin Cat. Извините за беспокойство, но не могли бы вы, обьяснить мне пару строчек Вашего кода, а именно:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mov dx,offset vivod ;здесь вывод всех введенных данных
lea di,vivod + 8
lea si,name1+2
mov cl,[name1+1]
xor ch,ch
rep movsb
mov al,' '
mov cx,2
rep stosb
 
lea si,surname+2
mov cl,[surname+1]
xor ch,ch
rep movsb
mov byte ptr [di],'$'
mov ah,09h
int 21h
Просто разобратся сам не могу. За ранее, спасибо.
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
12.02.2018, 11:43 5
SvLord,
основное в этом коде rep movsb - читайте хелп по этой инструкции: что делает,какие регистры используются по умолчанию.
0
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 10
12.02.2018, 12:52 6
Constantin Cat,
Спасибо
0
12.02.2018, 12:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2018, 12:52
Помогаю со студенческими работами здесь

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

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

ВВод строк и вывод в другой
Напишите программу, которая вводит из файла 10 текстовых строк и выводит их в другой файл,...

Ввод - вывод строк + пробелы
Ввести строку. Вывести в виде нескольких строк так, чтобы в каждой строке было по 4 слова, первое...


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

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

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