Автор Ѐаиль Муниров задал вопрос в разделе Другие языки и технологии
FASM - ассемблер и получил лучший ответ
Ответ от Миоко Таканава[гуру]
Ошибки в строке, выделенной жирным шрифтом. Функция wsprintf принимает в качестве параметров значения чисел, а вы передаёте ей адреса этих чисел.
Остальные исправления - просто неточности.
format PE GUI 4.0
entry start
include \'win32a.inc\'
stack 200h
section \'.data\' data readable writeable
sector_per_cluster rd 1
byte_per_sector rd 1
free_clusters rd 1
total_clusters rd 1
disc_name db \'D:\\\',0
show_result rb 30
title_window db \"Доступное дисковое пространство\",0
szformat db \'%u,%u,%u,%u\',0
section \'.code\' code readable executable
start:
    invoke GetDiskFreeSpace,disc_name,sector_per_cluster,\\
        byte_per_sector,free_clusters,total_clusters
    invoke wsprintf,show_result,szformat,[sector_per_cluster],\\
        [byte_per_sector],[free_clusters],[total_clusters]
    invoke MessageBox,0,show_result,title_window,MB_OK
    invoke ExitProcess, NULL
section \'.idata\' import data readable
library kernel32,\'kernel32.dll\',user32,\'user32.dll\'
include \'api/kernel32.inc\'
include \'api/user32.inc\'
P.S. Почему бы вам не воспользоваться функцией ссылка? Она возвращет непосредственно объём свободного пространства в байтах.
Меня смущает двойной слэш при указании диска, это не си.Зачем тип dq, нужно dd. желательно использовать getdiskfreespaceEx
> Зачем тип dq, нужно dd. DD - двойное слово (32 бита) DQ - четверное (64 бита) > желательно использовать getdiskfreespaceEx согласен. подробности см. <a rel="nofollow" href="http://msdn.microsoft.com/en-us/library/win
>Результатом вызова winapi функции получается не то что должно быть Начните с проверки результатов вызова функций: документация к wsprintf: >If the function fails, the return value is less than the length of the expected output. >
Как осуществить вывод в консоль (ASSEMBLER, MASM32)
Классический пример. Использование WinAPI функции wsprintf вместе с lstrlen для преобразования
подробнее...
с++ winapi.вывод числа с помощью MessageBox
char str[80];
wsprintf(str,"%d",count);
MessageBox(hWnd, str, TEXT("ComboBox"),
подробнее...
ошибочку подскажите(ассемблер, масм32)
не какой-то косяк, а косячище
.CODE
Start:
mov ax,[ x ]
mov cx,[ a ]
imul
подробнее...
WinApi C++ Как преобразовать int в LPCWSTR?
int a = 70;
wchar_t str[20];
_itow(a, str, 10); // Число, буфер, система счисления
подробнее...
Нужна помощь в делфи. Dec to hex
Зачем алгоритм?
begin
// Display 1234 decimal in hex with minimal width
подробнее...
Удалить все пустые строки в .txt
Можно за два приёма сделать.
Сначала меняешь регулярное выражение на пустое место:
Find
подробнее...