Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определение памяти в асм под DOC, определения памяти вставленной дискеты  
:(
    Опции темы
vgikys
Дата 18.6.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



Прошу помощи...
Кто может помочь прошу откликнуться 
Задача такая , написать программу под doc в расширении *.com в ассемблере, которая определяет размер свободной памяти дискеты вставленной в дисковод.
Прошу идей и если кто хорошо разбирается написать примерный код проги .
Заранее благодарен. 

Это сообщение отредактировал(а) vgikys - 18.6.2010, 22:02
PM MAIL   Вверх
Logree
Дата 19.6.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: 1
Всего: 2



Первый вариат:
1. Берём спецификацию на Fat12 (прото Fat);
2. Читаем и понимаем из неё, что нам нужно узнать расположение file alloc tabe (как написанно в той же спецификации);
3. в этой таблице содержаться записи о каждом кластере(кластер==сектор), по 12бит на кластер, те если кластер занят то в записи о нём будет какое-то значение иначе 0, нам нужно пройти по всей таблице и посчитать сколько кластеров занято, общая формула для вычисления свободного места:

FS = (Размер дискеты) - (1 + размер зарезервированых секторов+ размер fat *2+ размер корневого каталога) - количество занятых секторов;

ps для наглядности

Вариант два:
Функция 36h прерывания 21h:ссыль
> fasm
Код

use16
org 100h

free_space:

        mov     ax,cs
        mov     ds,ax

        xor     bx,bx
        mov     ah,36h
        xor     dl,dl
        inc     dl                        ; dl  = 1
        int     21h

        cmp     ax,0ffffh
        je      ext

        shl     bx,9                     ; bx = свободное место в байтах

ext:
        mov     ax,4ch
        int     21h  


Это сообщение отредактировал(а) Logree - 30.6.2010, 18:03


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
vgikys
Дата 27.6.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



За неимением флоппика прошу протестить прогу ...и по возможности исправить ошибки

cseg segment 
assume cs:cseg,ss:cseg,ds:cseg
org 100h

start: jmp free_space

soob db "vstavte diskety i najmite lubyu klubishy ",10,13,'$'
er db "error",10,13,'$'
vuv db "freespace",10,13,'$'
ten db 10
rez db "00000$"
free_space:
mov ah,9
lea dx,soob
int 21h

mov ah,8
int 21h

mov ax,cs
mov dx,ax

xor bx,bx
mov ah,36h
xor dl,dl


inc dl
int 21h

cmp ax,0ffffh
je ext

mov ah,9
lea dx,vuv
int 21h 
mov ah,8
int 21h



shl bx,9
mov ax,bx

lea si,rez+4
m1:mov ah,0
div ten 
or ah,30h
mov [si],ah
dec si
cmp al,0
jne m1
mov ah,9
lea dx,rez
int 21h



ext:
mov ah,9
lea dx,er
int 21h
mov ah,8
int 21h
mov ax,4ch
int 21h


cseg ends
end start
PM MAIL   Вверх
Logree
Дата 27.6.2010, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: 1
Всего: 2



VFD


ps посмотрите как оформлен мой код и как оформлен ваш.


Это сообщение отредактировал(а) Logree - 27.6.2010, 21:57


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
vgikys
Дата 27.6.2010, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



Нет мне просто надо офромить типа вставьте дискету и всё такое , я просто дополнил, есть ошибки ? 
Logree вы не могли бы подсказать, работает или нет ? 

Это сообщение отредактировал(а) vgikys - 27.6.2010, 21:47
PM MAIL   Вверх
Logree
Дата 27.6.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: 1
Всего: 2



Даже сильно не вникая в код можно сказать что НЕ БУДЕТ, запустите и ищите ошибку, а алгоритм перевода числа в строку выкладывали тыщю раз.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
vgikys
Дата 30.6.2010, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



Logree прошу помочь, потому что не могу справиться с этой задачей, не понимаю где ошибка. Не могли бы вы исправить мой код
Заранее благодарен.
PM MAIL   Вверх
Logree
Дата 30.6.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: 1
Всего: 2



что-то я лишканул с этим: 
Код

       shl    bx,9


число байт пустой дискеты там не уместитья так что луше заменить на 
Код

       shl    ebx,9      

или выдавать ответ в секторах, а не байтах.

пользуйте поиск.

и ещё, этот код вам не нужен, тем более что там ошибка smile
Код

    mov    ax,cs
    mov    dx,ax



Это сообщение отредактировал(а) Logree - 30.6.2010, 18:58


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
vgikys
Дата 30.6.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



Когда заменил на EBX  пишет "undefined symbol EBX" и "Arguments types override"
PM MAIL   Вверх
Logree
Дата 1.7.2010, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: 1
Всего: 2



Опишите подробно по какому алгоритму вы переводите число в стоку? и покажите код.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
vgikys
Дата 1.7.2010, 02:13 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



Блин ну что никто не поможет ? Помогите с  выводом результата на экран.Очень срочно надо. 


.586
data segment use16
 
assume cs:data,ss:data,ds:data

org 100h

start: jmp free_space

soob db "vstavte diskety i najmite lubyu klubishy ",10,13,'$'
er db "error",10,13,'$'
vuv db "freespace",10,13,'$'
ten db 10
rez dw ?,'$'
s dw ?
b dw ?

free_space:
mov ah,9
lea dx,soob
int 21h

xor bx,bx
mov ah,36h
xor dl,dl
inc dl
int 21h

cmp ax,0ffffh
je ext

shl ebx,9

"СЮДА НУЖНЫ АЛГОРИТМЫ ВЫВОДА РЕЗУЛЬТАТА НА ЭКРАН !!!"



ext:
mov ah,9
lea dx,er
int 21h
mov ah,8
int 21h
mov ax,4ch
int 21h


data ends
end start

Это сообщение отредактировал(а) vgikys - 1.7.2010, 12:00
PM MAIL   Вверх
vgikys
Дата 2.7.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.6.2010

Репутация: нет
Всего: нет



Всё сделал вывод строки. Но почему то неправильно считает свободную память?????????


data segment 

string_bin_byt label byte
string_bin_word label word
string_bin_dword label dword
string_bin_qword dw ?
string_pack dt 0
       len_string_pack = $ - string_pack
adr_string_pack dd string_pack
string db 20 dup (0)
       len_string = $ - string 
adr_string dd string 
soob db "vstavte diskety i najmite lubyu klubishy ",10,13,'$'
er db "error",10,13,'$'
vuv db "freespace",10,13,'$'
rez dw ?


data ends

st1 segment stack
dw 256 dup (?)
st1 ends

text segment
 
assume cs:text,ds:data,es:data,ss:st1



start:
mov ax,data
mov ds,ax 
mov es,ax
mov ax,st1
mov ss,ax

jmp free_space
 


free_space:
mov ah,9
lea dx,soob
int 21h

xor bx,bx
mov ah,36h
xor dl,dl
mov dl,1
int 21h


cmp ax,0ffffh
je ext



shl bx,9


mov string_bin_qword,bx


finit
fild string_bin_qword

fbstp string_pack
lds si,adr_string_pack
add si,len_string_pack-2
les di,adr_string
mov cx,9
cycl: xor ax,ax
std
lodsb
shl ax,4 
rol al,4 
or ax,3030h
xchg ah,al
cld
stosw
loop cycl
mov bx,1
mov cx,len_string
lds dx,adr_string
mov ah,40h
int 21h
jc ext  



mov ah,8
int 21h

mov ax,4ch
int 21h

ext:
mov ah,9
lea dx,er
int 21h
mov ah,8
int 21h
mov ax,4ch
int 21h

text ends
end start
PM MAIL   Вверх
Logree
Дата 2.7.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: 1
Всего: 2



естественно ведь shl bx,9 выдвигает много бит, результат в байтах требует 4 байт, те dx:ax:

вместо
Код

shl bx,9


Код

mov ax,bx
mov dl,ah
shl  dx,1
test al,80h
jz zero
or dl,1h
zero:
shl ax,9                                   ; в dx:ax число в байтах


вроде так. но тогда алгоритм перевода нужно менять... проще выводи размер не в байтах а в секторах т е не сдвигай bx/


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1048 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.