Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2015, 15:52   #1
Disite
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 13
Сообщение Информация о логических дисках

Всем привет.У меня проблемка возникла с функцией GetLogicalDriveStrings.Нужно вывести все логические диски,но программа выводит только один.В инете прочитал что вывод происходит в виде строки,причем после каждого диска стоит 0,то есть конец строки.Подскажите,пожалуйста,как мне заменить эти нули,например,на запятую или пробел,чтобы выводились все диски.Пробовал несколько вариантов,но все заканчивалось ошибками.Вот собственно код:
Код:
.386
.model flat,STDCALL
extrn GetLogicalDriveStringsA:proc
extrn ExitProcess:proc
extrn MessageBoxA:proc
.data
tit db 'Information about Local disks',0
lpBuffer db 100 DUP (?)
osh db 'Error!', 0
nBufferLenght dd 100
;==================================================
.code
main:
        
    push offset lpBuffer
    push offset nBufferLenght
 
    call  GetLogicalDriveStringsA
    cmp EAX,0
    jne metka
    push 40h
    push offset tit
    push offset osh
    push 0
    call MessageBoxA
    jmp next
 
    push 0
    metka:
    push 40h
    push offset tit
    push offset lpBuffer
    push 0
    call MessageBoxA
    
    next:
    push 0
    call ExitProcess
 
    end main
Заранее спасибо.
Disite вне форума Ответить с цитированием
Старый 17.10.2015, 16:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну такой ма-а-а-хонький пятиминутнонаколенный быдлокодик:
Код:
format PE console
entry start
 
include 'D:\fasmw16726\INCLUDE\win32a.inc'
 
section '.data' data readable writeable
message db '%s ',0
member dw ?
discs db 100 dup(0)
r db 'Russian',0
section '.code' code readable executable

start:

 invoke drv,100,discs
  mov ebx,discs
  mov edi,discs
for:
  xor eax,eax
  mov ecx,100
  repne scasb
  inc ebx
  cmp edi,ebx
  je endfor
  dec ebx
  cinvoke printf,message,ebx
  mov ebx,edi
  jmp for
endfor:
  cinvoke getch
  invoke ExitProcess,0
section '.idata' import data readable
library kernel,'kernel32.dll',\
        msvcrt,'msvcrt.dll'
 
import kernel,\
       ExitProcess,'ExitProcess',\
       drv,'GetLogicalDriveStringsA'
 
import msvcrt,\
       printf,'printf',\
       getch,'_getch'
Не удивлюсь, если ассемблерщики меня за него предадут помидорам, но как идея, думаю подойдет
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2015, 19:05   #3
Disite
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 13
По умолчанию

А в моём коде это можно как нибудь реализовать?все таки требуется именно со стеком работать
Disite вне форума Ответить с цитированием
Старый 17.10.2015, 19:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
требуется именно со стеком работать
ЗаЙшЫбисЪ... Чего мы еще не договариваем?
Может пора уже полный текст задания привести в студию?
И накой черт тут стек?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Информация о дисках компьютера King Kong Помощь студентам 3 13.11.2014 08:42
Поиск файла на всех дисках gigar Общие вопросы Delphi 7 07.02.2013 19:38
рисунки на дисках Mirik Свободное общение 18 29.05.2009 00:51
информация о дисках Titan123 Общие вопросы Delphi 2 03.10.2008 22:41
информация о дисках AIst Общие вопросы Delphi 4 09.09.2008 22:52