.186 PUBLIC _inp CODE1 SEGMENT ASSUME CS:CODE1 _inp PROC far param equ [bp+4] seek equ [bp+6] name_in equ [bp+8] push bp mov bp,sp pusha mov ax,3d00h mov dx,name_in int 21h jc _error mov si,ax mov ax,4200h mov bx,si mov cx,0 mov dx,seek int 21h jc _error mov ah,3fh mov bx,si mov cx,2 mov dx,param int 21h jc _error mov ah,3eh mov bx,si int 21h jc _error popa mov ax,0 mov sp,bp pop bp ret 6 _error: mov gs,ax popa mov sp,bp pop bp mov ax,gs ret 6 _inp ENDP public _out _out PROC far atr equ [bp+4] rez_str equ [bp+6] push bp mov bp,sp pusha ; mov ah,03h ; mov bh,04h ; int 10h mov ah,09h mov dx,atr int 21h mov ah,0ch mov al,01h int 21h sub al,30h mov bl,al mov ax,1301h mov cx,12 ; mov bx,atr mov dx,ds mov es,dx mov bp,rez_str mov dx,0000h int 10h popa mov sp,bp pop bp mov ax,0 ret 4 _out ENDP public _foo _foo PROC near push bp mov bp,sp push dx push di push si push bx mov ax,[bp+4] ;get parameter 1 mov di,[bp+6] ;get parameter 2 mov si,di xor bh,bh mov bl,3 begin: mov dx,0 l1:;число делим на основание,остаток переводим и записываем в строчку div bx mov [di],dx ;[di] - адрес строчки add [di],byte ptr 30h inc di mov dx,0 cmp ax,2 ;если в ax 0 то мы поделили число ja l1 mov [di],ax add [di],byte ptr 30h ;dec di ;нам нужно чтобы di указывало на последний символ l2:;разворачиваем строчку cmp di,si jle exit mov al,[di]; далее идет перестановка mov dl,[si] mov [si],al mov [di],dl dec di inc si jmp l2 exit: mov ax,0 pop bx pop si pop di pop dx mov sp,bp pop bp ret _foo ENDP CODE1 ENDS