Я создаю программу на ассемблере, используя tasm ассемблер, я пытаюсь сделать бесконечный цикл процедуры "buat".Эта процедура создает бесконечные файлы с именем случайное целое число.Но когда я запускаю эту программу с помощью DOSbox, она только успешно создает около 6–3 файлов, а затем программа останавливается.Кстати, исполняемый файл этой программы я делаю как .COM.
Я пытался проверить программу в emu8086, но emu8086 только смог показать мне, что переменная "Rnd" изменяется бесконечно.Я подозреваю, что моя программа остановилась, когда не удается закрыть недавно созданный файл, потому что, когда я пытаюсь удалить все файлы, которые были созданы, будет один файл, который нельзя удалить, потому что он все еще открыт DOSbox.Есть ли какой-либо предел инструкций, которые может выполнять TASM?или DOSbox?
Вот часть кода, которая создает бесконечные файлы
create:
call buat
buat proc
;call loading
jmp lop
lop:
call random
cmp ax,0
jg good
NEG AX
good:
MOV BX, 10;#4 base, we divide by it
MOV SI, 0;#4 first position after the "Tnt/" of RndFile
opt:
CMP AX, 10000;#4not 5 digits
JAE bra
IMUL bx
JMP opt
bra:
W:
MOV DX, 0
DIV BX ;#3Divide number (AX) by base (BX)
ADD DL, 48;#3char
MOV Rnd[SI], DL
INC SI
CMP AX, 0
JE done
JMP W
done:
mov dl, "."
mov rnd[si],dl
inc si
mov dl, "e"
mov rnd[si],dl
inc si
mov dl, "x"
mov rnd[si],dl
inc si
mov dl, "e"
mov rnd[si],dl
lea dx, rnd
mov cx, 0h
mov ah, 3Ch
int 21h
mov ah, 3Eh
int 21h
jmp lop
ret
endp
randgen proc
mov ah, 2ch
int 21h
xor ax,ax
mov al,dl
xor dx,dx
mov bx,10
div bx
ret
endp
random proc
call randgen
mov [ones], dl
call randgen
mov [tens], dl
call randgen
mov [hundsa], dl
mov ax, 0
mov bx, 0
mov bl, 10
mov al, tens
mul bl
mov tens, al
mov ax, 0
mov bx, 0
mov bl, 100
mov al, hundsa
mul bl
mov hundsa, al
mov hundsb, ah
mov al, hundsa
mov ah, hundsb
mov numb, ax
mov ax, 0
mov al, tens
add numb, ax
mov ax, 0
mov al, ones
add numb, ax
mov ax, numb
ret
endp
Я ожидаю, что эта программа будет непрерывно создавать файлы, если я не закрою DosBox