По поводу рекурсии - имхо данная задача решается с её помощью проще (и зачастую всё отлично работает), однако реально напарывался на случай переполнения стека (большое количество файлов и очень длинные пути к ним). Что касаемо приведённого кода - хоть в асме и не силён, думается в коде те же грабли, на которые наступал сам: (находились не все файлы с данным расширением) Код (Text): cmp dword ptr [ebp-118h+eax-4],'txt.' ; Проыерим расширение файла расширение файла на винте может быть и таким: .TXT, .tXt, .TxT и т.д., поэтому сравнение лучше заменить, например, на вызов lstrcmpi
хорошо, слинковал. Он выдаёт после линковки:"LINK: warning L4017: /subsystem: unrecognized option name; option ignored" далее появляется Run File [windows.exe]: што делать, подскажите
товарищи, ещё такой вопрос, подскажите что делать. вот код: Код (Text): ; определение диска по умолчанию ; с помощью функции 19h .model small .stack 100h .data mes db "po umolchaniu dick C:$" mes1 db "po umolchniu stoit drugoi disk (ne c:)$" ha dw 0FFFFh mes2 db "cf=1 , dx ne raven nulu$" .data? wax dd ? .code sc proc mov ah,9 int 21h ret sc endp main: mov ax,@data mov ds,ax mov ah,19h int 21h jc exit cmp al,02 ; в al - диск, стоящий по умолчанию (00- A: ; 01 - B: ; 02 - С: и т.д.) jne pul mov dx,offset mes call sc mov ah,36h mov dl,al int 21h cmp ax,ha ; если ax=0FFFFh , то выходим jc exit ;если нет, то в ; ax - число секторов в одном кластере ; bx - количество свободных кластеров ; cx - размер сектора в байтах ; dx - общее число кластеров на диске mul bx mov word ptr wax,ax mov word ptr wax+2,dx mov eax,wax ;всё дело в этом jc exit mov dx,offset mes2 call sc jmp exit pul: mov dx,offset mes1 call sc exit: mov ah,10h int 16h mov ax,4c00h int 21h end main при ассемблировании выдаёт вот какую ошибку: "error A2085: instruction or register not accepted in current CPU mode". Я знаю, что всё дело в этой команде - mov eax,wax. Я так понимаю это из-за 32-хразрядных регистров. Объясните что делать, пожалста
я в сметении. Объясните пожалуста в чем преимущество API функций? вот две проги. Выполняют одно и тоже - создают текстовый файл, но одна весит 1Кб, а другая 28Кб(!!): Код (Text): cseg segment org 100h begin: mov ah,3Ch xor cx,cx mov dx,offset my_file int 21h int 20h my_file db 'uu.txt',0 cseg ends end begin Код (Text): .486 .model flat,stdcall option casemap:none include \masm32\include\kernel32.inc .data mes db 'opa.txt',0 handle dd ? .code main: invoke CreateFile, addr mes, 80000000h,3h, 0, 1, 80h,0 mov handle,eax invoke ExitProcess,eax end main так в чем же преимущество API?
Встречный вопрос: китаец, русский и европеец выполняют одно и то же - например, метут улицу, одному платят условно 10$, второму 100$, третьему 1000$ (!!). Так в чем же преимущество хваленой западной демократии ?
censored А то что человеку нужен поисковик под Вынь32. Какой может быть small и int 21h в виндовс NT?? Смотрим последний пост топикстартера...
Я тоже в сметении... Специально даже скомпилил второй кусок кода. Получил экзешник в 656 байт. А каким образом у тебя там получилось 28 кб ???
помогите пожалуста, не могу правильно воспользоваться функцией SearchPath, наверно чё то не так делаю: Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib .data buf db 20 dup(?) nbuf=$-buf disk db 'c:\',0 mes db 'J.com',0 mes1 db "fail naiden",0 .code main: invoke SearchPath, disk, addr mes, 0,nbuf, addr buf,nbuf cmp eax,0 jne sc gi: invoke ExitProcess,0 sc: invoke MessageBox,0,0,addr mes1,0 jmp gi end main