Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Заблокирован
1

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

04.05.2012, 11:27. Показов 1996. Ответов 18
Метки нет (Все метки)

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
masm
.model small
.data
    error db 'ERROR$'
    buf db 'operation is complete!'
    sz db $-buf
    file db 30 dup (?)
.stack  100h
.code
start:
    mov ax, @data
    mov ds, ax
    
    mov cl, es:80h
    cmp cl, 0
    je exit
    dec cl
    mov si, 82h
    mov di, 0
cicle:
    mov al, byte ptr es:[si]
    mov file[di], al
    inc si
    inc di
    loop cicle
    mov file[di], '0'
    
    mov ah, 3ch
    xor cx, cx
    lea dx, file
    int 21h
    JC @err
    
    mov bx, ax
    mov ah, 40h
    mov cl, sz
    lea dx, buf
    int 21h
 
    mov ah, 3Eh
    int 21h
    jmp exit
    
@err:
    lea dx, error
    mov ah, 9
    int 21h
exit:
    mov ah, 4ch
    int 21h
end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2012, 11:27
Ответы с готовыми решениями:

Файл: Если количество строк больше заданного n, то создать новый файл и записать в него строки из данного файла.
Дан файл, содержащий строки. Если количество строк больше заданного n, то создать новый файл и...

Создать текстовый файл G и записать в него строки из файла F в обратном порядке
1. Создать текстовый файл F и записать в него несколько строк. Создать текстовый файл G и записать...

Создать файл и записать в него текст. Имя файла и текст вводятся с клавиатуры
Здравствуйте. Задача примерно такая: Создать файл и записать туда текст. Когда создаем файл пишем...

Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов арифметической прогресси
Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и...

18
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
04.05.2012, 11:45 2
Искандар, а чему равен ES?
0
Заблокирован
04.05.2012, 11:53  [ТС] 3
ничему, я его не устанавливаю. по умолчанию, так сказать...
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
04.05.2012, 12:08 4
Искандар, а вот маздай не знает чему должен быть равен ES в этих случаях:
mov cl, es:80h
mov al, byte ptr es:[si]
посмотри под отладчиком какое там должно быть значение или не удивляйся
Цитата Сообщение от Искандар Посмотреть сообщение
под отладчиком работает, а из под мастая не хочет
0
Заблокирован
04.05.2012, 12:23  [ТС] 5
под дебагером ес=50de. засунул его в ес, все равно не прет
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.05.2012, 12:58 6
Искандар, это ж PSP. push cs / pop es в 13 стр.
1
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
04.05.2012, 13:01 7
Искандар, все и так работает, а не должно.

В 27 стр. mov file[di], '0' = 30h, а должно быть mov file[di], 0 = 0h.

В коммандной строке надо набирать: имя выполняемого файла пробел имя создаваемого файла
22 aa; 22.exe aa.txt В первом случае будет создан файл аа, во втором аа.txt
1
Заблокирован
04.05.2012, 13:29  [ТС] 8
Цитата Сообщение от Charles Kludge Посмотреть сообщение
это ж PSP
я знаю, но в примере без этого обходятся...

Добавлено через 2 минуты
Цитата Сообщение от Mikl___ Посмотреть сообщение
а вот маздай не знает чему должен быть равен ES в этих случаях:
ели он такой "тупой", то почему это работает отлично???
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
masm
.model small
.data
    error db 'ERROR$'
    buf db 'operation is complete!'
    sz db $-buf
    file db 30 dup (?)
.stack  100h
.code
start:
    mov ax, @data
    mov ds, ax
    
    mov cl, es:80h
    cmp cl, 0
    je exit
    dec cl
    mov si, 81h
    mov di, 0
cicle:
    mov al, byte ptr es:[si]
    mov file[di], al
    inc si
    inc di
    loop cicle
    mov file[di], '$'
    
    lea dx, file
    mov ah, 9
    int 21h
    
exit:
    mov ah, 4ch
    int 21h
end start
Добавлено через 2 минуты
Цитата Сообщение от Charles Kludge Посмотреть сообщение
push cs / pop es
однако эррор
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
04.05.2012, 13:31 9
Цитата Сообщение от Искандар Посмотреть сообщение
однако эррор
А в чем error?
0
Заблокирован
04.05.2012, 13:35  [ТС] 10
Цитата Сообщение от programmisto Посмотреть сообщение
А в чем error?
в строке
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
04.05.2012, 13:39 11
Не понял. Объясни подробнее
0
Заблокирован
04.05.2012, 13:42  [ТС] 12
@err:
lea dx, error
mov ah, 9
int 21h
он файл не может создать и выводит ЭРРОР

Добавлено через 44 секунды
и еще вопрос: как получить длинну текстового файла?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
04.05.2012, 13:48 13
Вызываешь функцию 4202h, когда открыл файл, в результате в CXX абсолютное смещение конца файла от начала, то есть длина файла.
0
Заблокирован
04.05.2012, 14:09  [ТС] 14
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
masm
.model small
.data
    file db 'PRG.ASM',0
.stack  100h
.code
start:
        mov ax, @data
    mov ds, ax
 
    mov ax, 3d00h
    lea dx, file
    int 21h
    jc exit
    mov bx, ax
 
    mov ax, 4202h
    xor dx, dx
    xor cx, cx
    int 21h
    mov cx, dx  
exit:
    mov ax, 4c00h
    int 21h
end start
и сх и dx - все 0, хотя в этом файле код программы. флаг с не установлен, но в ах зашло число 122h

Добавлено через 2 минуты
все, втер
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
04.05.2012, 14:10 15
Скорее всего я перепутал регистр, но четко помню, что длину файла возвращает в регистрах. АААААААААААА вспомнил. Не CX : DX, а DX : AX. Все нормально. В DX 0, так как программа меньше 65 536 байт, а в AX длина файла.
0
Заблокирован
04.05.2012, 14:22  [ТС] 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
masm
.model small
.data
    file db 'PRG.ASM',0
    buf db 60000 dup (?)
    db 22h
.stack  100h
.code
start:
        mov ax, @data
    mov ds, ax
 
    mov ax, 3d00h
    lea dx, file
    int 21h
    jc exit
    mov bx, ax
 
    mov ax, 4202h
    xor dx, dx
    xor cx, cx
    int 21h
    mov cx, ax
    
    mov ah, 3fh
    lea dx, buf
    int 21h
    push cx
    pop di
    mov byte ptr buf[di], '$'
    mov ah, 9
    int 21h
    
exit:
    mov ax, 4c00h
    int 21h
end start
не работает нифига

Добавлено через 1 минуту
в ах 0 возвращает
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
04.05.2012, 17:01 17
У меня работает, и под отладчиком, и без:
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
.model small
.stack 100h
.data
buf db 'operation is complete!'
sz=$-buf
file    db 30 dup(?)
error   db 'ERROR$'
.code
start:
    mov ax,@data
    mov es,ax
    mov si,82h
    lea di,file
    xor cx,cx
    mov cl,byte ptr ds:[80h]
    dec cx      
    rep movsb
    mov byte ptr[di],0
 
    mov ax,@data
    mov ds,ax
 
    mov ah,3ch
    xor cx,cx
    lea dx,file
    int 21h
    jc @err
 
    mov bx,ax
    mov ah,40h
    mov cl,sz
    lea dx,buf
    int 21h
 
    mov ah,3eh
    int 21h
    jmp exit
@err:   
    lea dx,error
    mov ah,9
    int 21h
exit:
    mov ax,4c00h
    int 21h
end start
0
Заблокирован
04.05.2012, 18:21  [ТС] 18
А почему у меня не работает прога, которуя я выше скинул?
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
04.05.2012, 19:04 19
Указатель надо было установить на начало файла:
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
masm
.model small
.data
    file db 'PRG.ASM',0
    buf db 60000 dup (?)
    db 22h
.stack  100h
.code
start:
        mov ax, @data
    mov ds, ax
 
    mov ax, 3d00h
    lea dx, file
    int 21h
    jc exit
    mov bx, ax
 
    mov ax, 4202h
    xor dx, dx
    xor cx, cx
    int 21h
    
    push ax 
 
    mov ax,4200h
    xor cx,cx
    xor dx,dx
    int 21h
 
    pop cx
    
    mov ah, 3fh
    lea dx, buf
    int 21h
    push cx
    pop di
    mov byte ptr buf[di], '$'
    mov ah, 9
    int 21h
    
exit:
    mov ax, 4c00h
    int 21h
end start
1
04.05.2012, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2012, 19:04
Помогаю со студенческими работами здесь

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

Создать текстовый файл и записать в него фразу "Здравствуй, мир!"
Создать текстовый файл и записать в него фразу "Здравствуй, мир!"

Создать файл с именем указанным пользователем и записать в него его же имя
Необходимо создать файл с именем указанным пользователем и записать в него его же имя string...

Получить параметры из командной строки и записать в properties файл
Подскажите плз, можно это реализовать используя Spring?


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

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