.model small .stack 200h .data outStr db 11 DUP ('$') .code ;word Word2ThrChr (word value, word *out) : AX Word2ThrChr proc near push bp mov bp, sp add bp, 2h ;сохранение регистров push bx push cx push dx push si push di ;выделение локальных переменных ;============================================ ;выполнение процедуры mov ax, [bp + 4] ;value xor si, si cmp ax, 0 jge Word2ThrChr_isPositive mov bx, [bp + 2] ;*out mov byte ptr [bx + si], '-' inc si neg ax Word2ThrChr_isPositive: xor cx, cx mov bx, 3 Word2ThrChr_divLoop: xor dx, dx div bx push dx inc cx test ax, ax jnz Word2ThrChr_divLoop mov bx, [bp + 2] ;*out mov ax, 0 Word2ThrChr_movLoop: pop dx cmp si, 10 jge Word2ThrChr_skip add dl, 30h mov byte ptr [bx + si], dl inc si jmp Word2ThrChr_continue Word2ThrChr_skip: mov ax, 1 Word2ThrChr_continue: loop Word2ThrChr_movLoop ;============================================ ;удаление выделенных локальных переменных ;восстановление значений регистра pop di pop si pop dx pop cx pop bx pop bp ret Word2ThrChr endp __main: mov ax, @data mov ds, ax xor ax, ax mov ax, 9 ;value push ax lea ax, outStr ;*out push ax call Word2ThrChr lea dx, outStr mov ah, 09h int 21h mov ax, 4C00h int 21h end __main