![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 02.06.2011
Сообщений: 5
|
![]()
Пожалуйста подскажите для чего нужен стек в этой программе
code segment assume cs:code, ds ![]() ; п/п ввода имени файла ; получает в dx адрес переменной, в которую будет записано имя файла ; в приемлемом для работы с файлами формате f_cr PROC mov AH,0Ah int 21h add dx,2 ;плучаем имя файла в ASCIIZ mov di,dx mov al,[di-1] mov ah,0 add di,ax mov [di],byte ptr 0 mov ah,9 ;перевод строки lea dx,ent int 21h ret f_cr ENDP ; открытие файла ; в dx хранится имя файла ; после выполнения в ax хранится дескриптор рабочего файла f_op PROC add dx,2 mov ah,3Dh ;команда открытия файла mov al,0h ;только для чтения mov cl,0h int 21h jc no_O ;если файл не открыт, то на метку ret no_O: mov ah,9h mov dx,offset no int 21h ret f_op ENDP ; создание нового файла ; в dx хранится имя файла ; после выполнения в ax хранится дескриптор рабочего файла n_f PROC add dx,2 mov cx,0 mov ah,3Ch ;функция создания файла int 21h ret n_f ENDP start: mov AX, data mov DS, AX lea DX,f1 call f_cr lea DX,f2 call f_cr lea dx,f2 call n_f push ax lea dx,f1 call f_op push ax m1: ; копирование первого файла во вновь созданный lea dx,buff pop bx mov cx,5 ; размер блока - 5 байт mov ah,3fh ; чтение из файла int 21h mov cx,bx pop bx push bx push cx mov cx,ax mov ah,40h ; запись в файл int 21h cmp ax,5 je m1 mov ax, 4c00h int 21h code ends data Segment f1 db 13,14 dup(?) f2 db 13,14 dup(?) buff db 5 dup(?) no db 'file no open',13,10,'$' ent db 10,13,'$' data ends stek segment stack dw 128 dup (?) stek ends end Start |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Стек нужен в любой программе.
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 02.06.2011
Сообщений: 5
|
![]()
стек в этой программе? вот на этом куске он делает что-то конкретное
lea DX,f1 call f_cr lea DX,f2 call f_cr lea dx,f2 call n_f push ax lea dx,f1 call f_op push ax m1: ; копирование первого файла во вновь созданный lea dx,buff pop bx mov cx,5 ; размер блока - 5 байт mov ah,3fh ; чтение из файла int 21h mov cx,bx pop bx push bx push cx mov cx,ax mov ah,40h ; запись в файл int 21h И да, спасибо кэп |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 25.05.2011
Сообщений: 13
|
![]()
Судя по процедуре n_f, в ax записывается результат создания файла:
АХ = идентификатор файла, если не произошла ошибка. АХ = 03h, если путь не найден. АХ = 04h, если слишком много открытых файлов. АХ = 05h, если доступ запрещен. а в f_op: АХ = идентификатор файла, если не произошла ошибка АХ = код ошибки (02h — файл не найден, 03h — путь не найден, 04h — слишком много открытых файлов, 05h — доступ запрещен, 0Ch — неправильный режим доступа) т.е.: Создали файл и не произошло ошибки, сохраняем идентификатор. Далее открываем второй файл и тоже сохраняем его идентификатор. Восстановление в bx из-за особенности работы функции т.е. при вызове функции чтения, идентификатор передаём ч/з bx. Читаем из второго файла. После, восстанавливаем идентификатор созданного файла и записываем в него прочтённые данные. P.S.:Ну это как я понял. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 02.06.2011
Сообщений: 5
|
![]()
Спасибо, надеюсь это верно, а то завтра сдавать.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Для чего case нужен в record? | VintProg | Общие вопросы Delphi | 14 | 22.10.2013 23:48 |
ADSL2110EHR для чего он нужен? | VintProg | Компьютерное железо | 2 | 03.12.2010 10:57 |
Для чего нужен шаблонный класс? | Golovastik | Общие вопросы C/C++ | 8 | 28.05.2010 01:18 |
Для чего нужен Packed? | VintProg | Общие вопросы Delphi | 10 | 03.08.2009 11:21 |
Для чего нужен мобильник? | Altera | Свободное общение | 53 | 19.08.2008 21:12 |