Как это работает с [si] и всякими ds:bx? Например у меня стоит задача превратить число в текст: ; in: ax - number ; out: ds:bx - text ; cx - number of digits itoa proc ... itoa endp Именно с такой спецификацией. Допустим number of digits я уже правильно посчитал. Я делаю так: itoa proc push ax push bx push dx mov si, cx ; index to the end mov bx, 10 ; dividing by 0 mov [si], 0 ; 0 to the end dec si get_digit: xor dx, dx ; zero dx before dividing div bx add dl, 48 ; digit -> char dec si mov [si], dl or ax, ax jnz get_digit pop dx pop bx pop ax ret itoa endp И что теперь мне с этим [si] делать? Где вообще это [si]? Если я буду иметь char[] в виде: .data text1 db 512 dup(?) То если: mov ax, @data mov ds, ax mov dx, offset text1 То это я могу понять. Теперь под ds:dx мой text1. Но какое это имеет отношение к [si]? Как [si] относится к text1 и к ds:dx? Как все это в памяти соотносится? И как скопировать содержимое [si] в text1? А как в ds:bx? И верно ли что я делаю так: mov si, cx ; index to the end где cx = number of digits? Или я вообще где-то совсем не прав?