Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 9
1

Написать программу удваивающую текст в файлах

10.12.2012, 20:16. Показов 1104. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, в написание такой программы:
необходимо удвоить текст в однотипных файлах (текст1.txt, текст2.txt и тд)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2012, 20:16
Ответы с готовыми решениями:

Написать программу, удваивающую буквы или числа в строке
Программы не сложные, но не догоняю как сделать так чтобы все работало нормально. 1) Посчитать...

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

Написать функцию-шаблон, удваивающую элементы в массиве
Как написать функцию-шаблон, удваивающую элементы в массиве? Аргументами функции должны быть имя и...

Написать функцию DoubleString(n), удваивающую в тексте каждый символ в строке с номером n
Подскажите а как это будет в с#? "Дан текстовый файл.Написать функцию DoubleString(n) удваивающую в...

17
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 20:52 2
вобщем читаете файл в буфер, устанавливаете si на начало а di на конец буфера, сх (длинна файла) делите на 2 и ставите вот такую штуку в код
Assembler
1
rep movsw
да будет счастье!
1
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
10.12.2012, 21:52 3
Fatal Error, зачем такие сложности? Прочитали файл в буфер, указатель передвинулся на конец файла, тут же записали прочитанное. Всего делов.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.model tiny
.286
.code
org 100h
start:
 
mov ax,3d02h
mov dx,offset nfile
int 21h
mov bx,ax
 
mov ah,3fh
mov dx,offset buffer
int 21h
mov cx,ax
 
mov ah,40h
int 21h
 
ret
nfile db 'any.txt',0
buffer db ?
end start
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 9
11.12.2012, 09:37  [ТС] 4
Vadimych, я правильно понял, что это готовая программа? Если так, то тогда, что она делает? Она просто просит ввести строку и все.
Если не сложно, напиши с комментариями.
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
11.12.2012, 13:11 5
Цитата Сообщение от Marble Посмотреть сообщение
что она делает?
Удваивает текст в файле, имя которого надо вписать вместо 'any.txt'. Только и всего. Насчёт использованных функций дос почитайте в справке.
P.S. Я с Вами на брудершафт не пил, и вряд ли стал бы пить.
0
Troll_Face
11.12.2012, 14:01
  #6

Не по теме:

Цитата Сообщение от Vadimych Посмотреть сообщение
P.S. Я с Вами на брудершафт не пил, и вряд ли стал бы пить.
и в чем прикол?

0
Vadimych
11.12.2012, 14:42
  #7

Не по теме:

Цитата Сообщение от Fatal Error Посмотреть сообщение
и в чем прикол?
Подрастёшь - поймёшь. Может быть. Лет через двадцать пять.

0
Troll_Face
11.12.2012, 14:50
  #8

Не по теме:

Цитата Сообщение от Vadimych Посмотреть сообщение
Подрастёшь - поймёшь. Может быть. Лет через двадцать пять.
как бы не забыть за это время:D

0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 9
11.12.2012, 19:15  [ТС] 9
Vadimych, Вы программу запускали?
Лично у меня вылезает окошко, которое удваивает текст записанный в него.
В файле any.txt изменений не вижу.
Возможно, я делаю что-то не так, но если вы знаете что, пожалуйста, подскажите.
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
11.12.2012, 19:27 10
Marble, естественно, запускал. Вы, видимо, линкуете её как exe. Надо - как com. И да, перед 12-й строкой надо написать:
Assembler
1
mov cx,-1
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
11.12.2012, 19:50 11
Решил поиздеваться над тов. Команд.ком [FASM]:
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
86
87
88
89
90
91
92
93
94
95
96
PSP_Cmd     =   80h     ; смещение до командной строки
    org 100h
    cmp byte [cs:PSP_Cmd],0     ; есть командная строка?
    jz  gtfo
    push    cs
    pop es
    mov bx, top
    shr bx, 4
    inc bx
    mov ah, 4Ah
    int 21h
    movzx   ebx, byte [cs:PSP_Cmd]
    mov cx, bx
    dec cx
    lea ebx, [ebx*2+ebx+top-cpy_+3]
    shr bx, 4
    inc bx
    mov ah, 48h
    int 21h
    jc  gtfo
    mov es, ax
    xor di ,di
    inc di
    mov si, cpy_
    mov bx,cx
    lodsb
    movzx   cx, al
    rep movsb
    mov cx, bx
    mov si, 82h
    rep movsb
    mov al,'+'
    stosb
    mov cx, bx
    mov si, 82h
    rep movsb
    mov si, tmp_
    lodsb
    movzx   cx, al
    rep movsb
;   mov cx, bx
;   mov si, 82h
;   rep movsb
    mov ax, di
    dec ax
    mov byte [es:0], al
    mov al,0Dh
    stosb
    push    es
    call    exec
_r_:    xor di ,di
    inc di
    mov si, ren_
    lodsb
    movzx   cx, al
    rep movsb
    mov cx, bx
    mov si, 82h
    rep movsb
    mov ax, di
    dec ax
    mov byte [es:0], al
    mov al,0Dh
    stosb
    call    exec
 
    xor ax,ax
    int 16h
    pop es
    mov ah,49h
    int 21h
gtfo:   int 20h
exec:
    xor si, si
    pusha
    push    ds
    push    es
    mov ax, ss
    mov [cs:_ss],ax
    mov [cs:_sp],sp
    push    es      ;; KL beware.
    pop ds              ;;
    int 2Eh
    mov sp,[cs:_sp]
    mov ax,[cs:_ss]
    mov ss, ax
    pop es
    pop ds
    popa
    ret
_ss dw  ?
_sp dw  ?
cpy_:   db  (tmp_-$)-1,'COPY /B '
tmp_:   db  ren_-$-1,' tmp.tmp'; && 
ren_:   db  (top-$)-1,'COPY /B tmp.tmp '
top:
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 9
11.12.2012, 19:59  [ТС] 12
Vadimych, а в чем будут состоять отличия, если мне необходим exe?
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
11.12.2012, 20:11 13
Размер буфера нужно явно задать в сегменте данных. Сегмент стека должен быть.
Assembler
1
2
3
4
5
6
7
8
.model small
.stack 20h
.data
 
.code
start:
 
end start
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 9
11.12.2012, 20:41  [ТС] 14
Vadimych, так?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.model small
.stack 20h
.data
nfile db 'any.txt',0
buffer db 1000 dup(?)
 
.code
start:
mov ax,3d02h
mov dx,offset nfile
int 21h
mov bx,ax
 
mov cx,-1
mov ah,3fh
mov dx,offset buffer
int 21h
mov cx,ax
 
mov ah,40h
int 21h
 
end start
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
11.12.2012, 20:56 15
Да, так. Только надо ещё завершить программу. И инициализировать сегмент данных.
Assembler
1
2
3
4
5
mov ax,@data
mov ds,ax ; в начале
..............
mov ax,4c00h ; в конце
int 21h
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 9
17.12.2012, 20:15  [ТС] 16
Vadimych, а как мне теперь сделать, чтобы программа удваивала текст в 4-ех файлах (текст1.txt, текст2.txt и т.д.)?
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
17.12.2012, 20:32 17
Разбирать командную строку. При старте .EXE она начинается с DS:80h и ES:80h.
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
18.12.2012, 06:48 18
Marble, делайте так, как посоветовал Charles Kludge, либо вбейте имена файлов в код и работайте с ними в цикле, либо используйте функции DOS 4eh для поиска первого файла в текущей директории по маске и 4fh для поиска остальных. Есть ещё пара подобных функции 11h и 12h.
0
18.12.2012, 06:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2012, 06:48
Помогаю со студенческими работами здесь

Напишете программу, удваивающую каждую гласную букву в тексте на английском языке
Напишете программу, удваивающую каждую гласную букву в тексте на английском языке. Определите...

Написать программу, которая с помощью цикла FOR /D ищет в log-файлах Windows сообщения...
Написать программу, которая с помощью цикла FOR /D ищет в log-файлах Windows сообщения, задаваемые...

Написать программу, выводящую на экран строки, которые одновременно содержатся в двух заданных текстовых файлах
ребята если не трудно помогите с решением задачи на С++ условие: Написать программу,...

Написать программу, которая считывает текст из файла и выводит на экран количество гласных букв в строке текст
Написать программу, которая считывает текст из файла и выводит на экран количество гласных букв в...


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

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