Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .MODEL SMALL
- .DATA
- file_name db 'result.txt',0
- ;file_name1 db 'result1.txt',0
- handler dw 0
- buff db 0Dh, 0Ah, '$'
- .stack 100h
- OPEN macro file_name, handler
- mov ah,3dh
- mov al,2
- mov dx, offset file_name
- mov cx,0
- int 21h
- mov handler, ax
- endm
- WRITE macro
- mov bx, handler
- mov dx, offset buff
- ;lea dx, buff
- mov ah, 40h
- mov cx,1
- int 21h
- endm
- CLOSE macro
- mov ah, 3eh
- mov bx, handler
- int 21h
- endm
- .CODE
- assume ds: @data, es:@data
- start:
- mov ax,@data
- mov ds,ax
- mov es,ax
- OPEN file_name, handler
- WRITE
- mov ah,0ah
- lea dx,buff
- int 21h
- mov dl,0ah
- mov ah,02h
- int 21h
- lea bx, buff
- mov cl, [bx+1]
- lea di, [buff+2]
- xor ax,ax ;обнуляется регистр
- xor ch,ch ;обнуляется регистр
- mov si,10 ;si содержит множитель 10 a
- xor bh,bh ;обнуляется регистр
- m2:
- mul si ;умножить ax на si(10)
- mov bl,[di] ;к произведению добавить число
- sub bl,30h ;отнять 30h
- add ax,bx ;добавить число к сумме ax
- inc di ;инкремент di
- loop m2 ;повтор цикла
- mov bx, 1
- m1:
- cmp ax,bx ;сравниваем числа
- jbe BREAK ; если <= 1 то выходим
- inc bx ;увеличиваем bx т.е будет не 1 а уже 2
- mov cx,ax ;временно сохраняем число из ax
- mov dx,0 ;кидаем 0 в dx это типа нужный остаток
- div bx
- mov ax,cx
- test dx, dx ;смотрпим остаток
- jnz m1
- push ax ;вывод делителя и перевод строки
- mov ax, bx
- call Show_AX
- pop ax
- delenie:
- mov cx,ax
- mov dx,0
- div bx
- test dx,dx
- jz OKAY
- ja RENEW
- OKAY:
- dec bx
- jmp m1
- RENEW:
- mov ax,cx ;восстанавливаем ax черех cx вкотором лежит число
- jmp m1
- Show_AX:
- push ax
- push bx
- push cx
- push dx
- push di
- mov cx, 10
- xor di, di ; di - кол. цифр в числе
- or ax, ax
- Conv:
- xor dx, dx
- div cx ; dl = num mod 10
- add dl, '0' ; перевод в символьный формат
- inc di
- push dx ; складываем в стэк
- or ax, ax
- jnz Conv
- Show:
- pop dx ; dl = очередной символ
- mov ah, 2 ; ah - функция вывода символа на экран
- int 21h
- dec di ; повторяем пока di<>0
- jnz Show
- pop di
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- BREAK:
- mov ax,4c00h
- int 21h
- CLOSE
- mov ax,4c00h
- int 21h
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement