Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
1

Определение текущей директории. DOS 47H

01.04.2014, 23:25. Просмотров 655. Ответов 11
Метки нет (Все метки)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
При запуске через dosbox не выдает результата. Может есть ошибки в коде?
.MODEL tiny
.code
.386
org 100h
start:
mov ah,47h
xor dl,dl
mov si,offset bufer
int 21h
mov ah,9
mov dx,offset bufer
int 21h
ret
bufer label byte
end start
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 23:25
Ответы с готовыми решениями:

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

DOS 19H определение текущего диска
Помогите с прогою. Текущий каталог выводит норм, но перед ним не могу вывести текущий диск. MOV...

DOS 47H определение текущей директории
Помогите с прогой.!! DOS 47H определение текущей директории,но при сохранении в файл результата...

Определение текущей директории
Разработать программу для вывода текущего директория на экран. Определить атрибут очередной записи...

Определение имени текущей директории и скрипта
День добрый. Решаю некоторую задачу и возникла необходимость разбиения большой программы на 1...

11
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
02.04.2014, 00:27 2
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

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
    .386
    org 100h
start:
    mov ah,47h
    xor dl,dl
    mov si,offset bufer
    int 21h
    jc  error
    mov di,si
    xor cx,cx
;   mov al,cl AX = 0100h (undocumented) если нет ошибки
    dec cx
    repne   scasb
    mov byte ptr [di-1],24h ;рублик
    mov ah,9
    mov dx,offset bufer
    int 21h
    ret
error:  push    ax
    mov dx, offset _err
    mov ah, 9
    int 21h
    pop ax
    aam 10h
    or  ax, 3030h
    xchg    ah,al
    int 29h
    xchg    ah,al
    int 29h
_err:   db  'Error code = $'
 
    bufer   label byte
    end start
1
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
02.04.2014, 00:41  [ТС] 3
Спасибо,очень помогли. Что нужно изменить, чтобы они выводило результат, а не просто набор символов ?
0
Миниатюры
Определение текущей директории. DOS 47H  
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
02.04.2014, 00:55 4
Кмк, разобраться с досбоксом. Под хрюшей всё работает:
0
Миниатюры
Определение текущей директории. DOS 47H  
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
02.04.2014, 08:14  [ТС] 5
Чтобы сделать еще переход по указанному каталогу, нужно вставить такой код?
Assembler
1
2
3
lea dx,catalog3                 
mov ah,3bh
int 21h
0
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
02.04.2014, 10:04 6
Да, а для длинных имён Int 21/AX=713Bh. Кстати, текущий каталог(вместе с буквой диска и длинным именем) можно получить по Int 21/AH=60h, если указать в ds:si адрес '.',0 - текущий каталог.
1
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
05.04.2014, 21:07  [ТС] 7
Для чего рублик? Когда комментирую эту строчку сначала выводит каталог, а затем кучу символов. А с этой строкой не выводит ничего.
0
AFP
649 / 336 / 37
Регистрация: 04.04.2012
Сообщений: 887
06.04.2014, 00:55 8
Код
INT 21 - DOS - PRINT STRING
       - печать строки -
        AH = 09h
        DS:DX -> строка оканчивающаяся на "$"
Примечание: проверка на ^C/^Break производится, и при их обнаружении вызывается INT 23h.
Без рублика будет выводить содержимое памяти, пока не встретит - $.
0
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
06.04.2014, 01:13  [ТС] 9
Понял, спасибо. Кажется работает, но после вывода результата, нажав любую клавишу зацикливается. Кажется ret зацикливается. Не подскажете в чем причина?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.model  tiny
    .code
    ORG 100h            
start:  MOV     AH, 47h     
    MOV     SI,     offset buf  
    MOV     DL,     0       
    INT     21h                 
    MOV      DI,    offset buf  
    MOV      BX,    64      
    MOV      BYTE PTR [DI+BX], '$'
    MOV  AH,    9       
    MOV  DX,    offset buf  
    INT  21h
    RET             
        buf DB   ?  
        END      start
0
AFP
649 / 336 / 37
Регистрация: 04.04.2012
Сообщений: 887
06.04.2014, 01:14 10
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.MODEL tiny
.code
.386
org 100h
start:
mov ah,47h
xor dl,dl
mov si,offset bufer
int 21h
    mov ah,2    ;вывод символа
m1:
    lodsb
    cmp al,0
    jz exit
    mov dl,al
    int 21h
    jmp m1
exit:
ret
bufer label byte
end start
0
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
06.04.2014, 01:30  [ТС] 11
При запуске на XP, курсор просто скачет по всей консоле. Хз, что делать.
0
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
07.04.2014, 20:26  [ТС] 12
Как-то так реализовал возвращения текущего каталога, работает. А установить каталог не получается, можете помочь пофиксить?
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
MODEL SMALL
    STACK 256
    DATASEG
    str2 db 'Erorr!$'
    buf db 64 dup (0)
    bufdir db 'c:\WINDOWS'
    CODESEG
start:  
    mov ax,@data
    mov ds,ax
    mov ah,3Bh
    mov dx,offset bufdir
    int 21h
    cmp ax,3
    je erorr
main:
    mov ax,@data
    mov ds,ax
    mov   ah,   47h     
    mov     si,     offset buf  
    mov     dl,     0       
    int     21h         
    cmp ax,100h
    je erorr                        
    mov di, offset buf
    mov bx, 64  
    mov byte ptr [di+bx], '$'
    mov ah, 9h  
    mov dx, offset buf
    int 21h
    mov al,0
    mov ah,04Ch
    int 21h
erorr:
    mov ax,@data
    mov ds,ax
    mov dx,offset str2
    mov ah,09h
    int 21h
    jmp main
        end      start
0
07.04.2014, 20:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 20:26

Вывести в консоль все файлы и директории, какие есть в текущей директории
вывести в консоль все файлы и директории какие есть в текущей директории. подскажите пожалуйста...

Получение текущей директории
Этим кодом получаю директорию программы: procedure TForm1.Timer1Timer(Sender: TObject); var ...

Работа с файлами из текущей директории
Вот, извините пожалуйста, очень нужно, а в моей книжке по VBA этого не написано. Пишут, что всегда...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru