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

Хочу разобраться в коде. Помогите с комментариями

27.12.2011, 21:06. Показов 1299. Ответов 7
Метки нет (Все метки)

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
77
78
79
80
81
82
83
84
85
86
87
88
89
masm
model small
.data
buf1 db 512 dup (?)
kol1 dw 0
kol2 dw 0
sch  dw 0
op dw 0
name1 db 'file1.txt',0
name3 db 'file.txt',0
simb  db 0
.stack 100h
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
 
mov ax,3d02h
mov dx,offset name1
int 21h
mov op,ax
 
mov ax,4202h
xor cx,cx
xor dx,dx
mov bx,op
int 21h
mov kol1,ax
 
mov ax,4200h
xor cx,cx
xor dx,dx
mov bx,op
int 21h
 
mov ah,3fh
mov bx,op
mov dx,offset buf1
mov cx,kol1
int 21h
 
mov ah,3eh
mov bx,op
int 21h
 
cld
lea si,buf1
mov cx,21
metka:
lodsb
push    ax
loop metka
 
mov ah,3ch
mov dx,offset name3
xor cx,cx
int 21h
 
mov ax,3d02h
mov dx,offset name3
int 21h
mov op,bx
 
mov sch,512
metka2:
pop ax
mov simb,al
mov ah,40h
mov bx,op
mov dx,offset simb
mov cx,1
int 21h
dec sch
cmp sch,0
jg metka2
mov ax,4202h
xor cx,cx
xor dx,dx
mov bx,op
int 21h
mov ah,3eh
mov bx,op
int 21h
 
mov ax,4c00h
int 21h
main endp
end main
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2011, 21:06
Ответы с готовыми решениями:

помогите разобраться в одном коде ввод имя с клавиатуры а вывести его на родительном падеже у меня получилось сплошные непонятные симболы!!
.286 .model tiny .code org 100h start: mov ax,3 int 10h mov ah,9 ...

Добрий вечер !Напишите мне кто-нибудь пожалуйста эту программу с комментариями, чтобы я смогла разобраться, потому что никак не могу понять этот язык
создать файл записей (фамилия клиента, паспортные данные, № счета, сумма вклада) с зашифрованным №...

Одномерные динамические массивы. Хочу разобраться в коде
Вот программа: int n; cout<<"Vvedite kol-vo elementov"; cin>>n; int i, ineg; float...

Хочу разобраться в программе, помогите.
Помогите разобраться пожалуйста Я програмлю(а точнее учусь програмить) в Linux(e) Вот есть код...

7
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
28.12.2011, 15:57 2
Цитата Сообщение от Zeleqs
комментарии
Дык, работать на будет. стр. 49 и стр. 65. И использовать стек в данном случае - сомнительно.
0
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 14
28.12.2011, 16:11  [ТС] 3
Работает. Проверял.
Эти строки серьезной роли не играют. Вроде вместо 512 надо 21 поставить(я забыл поменять)
Иначе пробелы в начало добавит при выводе

Нуждаюсь в помощи! Для понимающего это легкая задачка: просто напишите пожалуйста комментарии.
Ну а если что не понравилось в программе, скажите где поменять(в комментарии к строчке отметьте - так проще)
0
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
28.12.2011, 17:04 4
Я пока не могу понять, вы хотите весь файл задом наперёд получить, или блоками по 21 байт? Если весь, то это не так делается.
0
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 14
28.12.2011, 17:53  [ТС] 5
Задания как такового нет. Ну допустим нужно реверс текстового файла. Учусь работать с текстом и файлом, поэтому объединил. Ну моя программа делает это.

А как это делается тогда?) И пожалуйста с комментариями. Я не умею еще вот так сразу читать
0
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
28.12.2011, 20:26 6
открываете файлы f_in, f_ot;
f_in - узнаёте его размер fsize[dx:ax] по 21/ax=4202;
запрашиваете у ДОСи память memptr 21/ah=48h размером fsize[ax]/16.+1;
позиционируете f_in на fsize[dx:0] и читаете fsize[ax] байт в буфер memptr;
пишете в f_out ,начиная с хвоста memptr, по одному байтику, декрементируя указатель.
закрываете файлы;
освобождаете память - необязательно, но невыполнение считается дурным тоном.
Прогу пишите сами, с меня - комменты.
0
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 14
28.12.2011, 21:09  [ТС] 7
Я так понял изменить только считывание и открытие файла?

И чем мой метод не сгодился? Я делал все по справочнику, вроде работает: открывает, считывает, производит реверс, записывает в новый. Мои знакомые проверили, исправили, дополнили. Я с ней то не разобрался, а вы заставляете переписывать. Вы, пожалуйста, прокомментируйте хоть первую, а потом я напишу прогу как вы сказали.

Слышал язык быстро учится, и вроде не сложный но что то мне слабо верится, но научиться хочется)

Добавлено через 13 минут
Я не прошу кучу прог писать, тут делов на 1 минуту. Я обратился сюда, так как больше не кого спросить в данный момент. А на потом оставлять не люблю. Кто поможет?
0
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
28.12.2011, 23:42 8
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
masm
model small
.data
buf1    db 512 dup (?)
kol1    dw 0
kol2    dw 0
sch     dw 0
op  dw 0
name1   db 'file1.txt',0
name3   db 'file.txt',0
simb    db 0
.stack 100h
.code
main proc
        mov ax,@data     ; настройка сегментов
        mov ds,ax
        mov es,ax
         
        mov ax,3d02h     ; открытие file1.txt доступ: read/write 
        mov dx,offset name1
        int 21h
        mov op,ax        ; handle 
         
        mov ax,4202h
        xor cx,cx
        xor dx,dx
        mov bx,op
        int 21h
        mov kol1,ax ; получили размер file1.txt - 64кб макс.
         
        mov ax,4200h    ; в начало файла
        xor cx,cx
        xor dx,dx
        mov bx,op
        int 21h
         
        mov ah,3fh  ; чтение из file1.txt kol1 байт в буфер buf1
        mov bx,op
        mov dx,offset buf1
        mov cx,kol1
        int 21h
         
        mov ah,3eh  ; закрытие file1.txt
        mov bx,op
        int 21h
         
        cld
        lea     si,buf1
        mov     cx,21
metka:                  ; грузим в стек 21 слово из буфера buf1
        lodsb
        push    ax
        loop metka
;--- создание и открытие file.txt доступ: read/write           
        mov ah,3ch
        mov dx,offset name3
        xor cx,cx
        int 21h
         
        mov ax,3d02h
        mov dx,offset name3
        int 21h
        mov op,bx
;---  может быть заменено одним вызовом Int 21/AX=6C00h      
; DOS 4.0+ - EXTENDED OPEN/CREATE
        mov     sch,512
; побайтная запись 512(?) байт из стека, помещая их предварительно в simb
; в файл file.txt
metka2:
        pop     ax
        mov     simb,al
        mov ah,40h
        mov bx,op
        mov dx,offset simb
        mov cx,1
        int 21h
        dec sch
        cmp sch,0
        jg metka2
; lseek(SEEK_END) указатель -> в конец файла, тоже непонятно, он и так там.
        mov ax,4202h
        xor cx,cx
        xor dx,dx
        mov bx,op
        int 21h
; закрытие file.txt
        mov ah,3eh
        mov bx,op
        int 21h
; выход         
        mov ax,4c00h
        int 21h
main endp
end main
Int 21/AX=6C00h DOS 4.0+ - EXTENDED OPEN/CREATE

Цитата Сообщение от Zeleqs;
Слышал язык быстро учится, и вроде не сложный но что то мне слабо верится, но научиться хочется)
Если не знаете Васика, особенно визуального, то есть шансы...
0
28.12.2011, 23:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2011, 23:42
Помогаю со студенческими работами здесь

Stack. определение шаблона функции testStack. (хочу разобраться в коде)
Вот эта программа. Хочу разобраться в коде. #include <iostream> #include <string> #include...

Помогите разобраться в коде.
#include "test.h" #include "ui_test.h" Test::Test(QWidget *parent): QWidget(parent), ui(new...

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

ПОМОГИТЕ РАЗОБРАТЬСЯ В КОДЕ
#include <time.h> #include <conio.h> #include <iostream> #include <assert.h> #include...


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

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

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