Здравствуйте! Вот написал программу обработки массива с интерфейсом.Что то напутал с выводом...или с вводом...Искал но не смог найти ошибки. Выводит нули почему то...в массов вроде правильно записываю... Код (Text): NAME SORT ALPHALEN EQU 10 MAXMASLEN EQU 100 STLEN EQU 5 DATA SEGMENT MAS1 DW MAXMASLEN DUP(?) MAS2 DW MAXMASLEN DUP(?) FL DB 0 ALPHA DB '0123456789' EMPTY DB 0AH,0DH,'$' hello db 'VAS PRIVETSTVUET PROGARAMMA DLYA SORTIROVKI DVUH MASSIVOV',0Ah,0Dh db 'MAX KOLICHESTVO IMEN V MASSIVE = 100',0Ah,0Dh db 'DLYA VIHODA IZ CIKLICHESKOGO VVODA NAGMITE 2RAZA ENTER',0Ah,0Dh,'$' wait_mes db 0Ah,0Dh,'DLYA PRODOLGENIYA NAGMITE ENTER....',0Ah,0Dh,'$' entr_mes1 db 'VVEDITE CHEREZ ENTER IMENA DLYA PERVOGO MASSIVA:',0Ah,0Dh,'$' ERR_MES DB 'INVALID DATA',0AH,0DH,'$' warn_mes db 'VI NICHEGO NE VVELI',0Ah,0Dh,'$' out_mes db 0Ah,0Dh,'DLYA VIHODA NGMITE ENTER',0Ah,0Dh,'$' TEMPSTR DB 6 DUP(?),'$' PARAMETERS LABEL BYTE MAXLEN DB 6 ACTLEN DB ? ENTNAME DB 5 DUP(?),'$' COUNT1 dw ? COUNT DW ? DATA ENDS STACK SEGMENT STACK DW 16 DUP(?) STKTOP LABEL WORD STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ;===ПОДПРОГРАММА ВВОДА INTERF PROC MOV BP,SP ;cx=0 - нуль элементов введено ;сохраняем счетчик элементов ;циклический ввод имен ADDLOOP: ;блок ввода MOV AH,0AH ;запрашиваем ввод имени LEA DX,PARAMETERS INT 21H ;блок проверки 1 LEA SI,entname ;блок проверки 2 (запрещенные символы) XOR CH,CH MOV CL,actlen ;расширяем до слова ACTLEN check_1: CMP CX,0 ;если CX=0 проверка прошла успешно JE check_2 LEA DI,ALPHA ;загружаем в DI алфавит английских букв PUSH CX ;сохраняем счетчик длины имени MOV CX,ALPHALEN ;счетчик на длину англ алфавита MOV AL,[SI] ;извлекаем букву имени на проверку m1: CMP AL,[DI] ;начинаем сравнивать JE continue_m ;переходим на след.букву INC DI LOOP m1 POP CX ;чтобы не искажать стэк извлекаем CX JMP vvod_err continue_m: INC SI ;буква нашлась - модифицируем счетчики POP CX DEC CX JMP check_1 check_2: MOV AL,ACTLEN CMP ACTLEN,5 JB MAKE_ELEMENT LEA SI,ENTNAME MOV AH,36H CMP [SI],AH JB MAKE_ELEMENT JE CHECK_3 JMP VVOD_ERR CHECK_3: MOV AH,35H CMP [SI+1],AH JB MAKE_ELEMENT JE CHECK_4 JMP VVOD_ERR CHECK_4: MOV AH,35H CMP [SI+2],AH JB MAKE_ELEMENT JE CHECK_5 JMP VVOD_ERR CHECK_5: MOV AH,33H CMP [SI+3],AH JB MAKE_ELEMENT JE CHECK_6 JMP VVOD_ERR CHECK_6: MOV AH,35H CMP [SI+4],AH JBE MAKE_ELEMENT JA VVOD_ERR MAKE_ELEMENT: MOV AL,ACTLEN ;досрочный выход из цикла ввода XOR AH,AH ADD AH,AL CMP AH,0 JE end_ent ;если да то заканчиваем выполнение LEA DI,[BP+4] LEA SI,ENTNAME XOR BX,BX XOR AX,AX MOV CH,0 MOV CL,ACTLEN-1 MOD1: MOV AL,[SI] SUB AX,30H ADD BX,AX SHL BX,1 MOV AX,BX ADD BX,AX ADD BX,AX ADD BX,AX ADD BX,AX ADD BX,AX INC SI LOOP MOD1 MOV AL,[SI] SUB AL,30H ADD BX,AX MOV [DI],BX ADD DI,TYPE MAS1 MOV AX,COUNT INC AX MOV COUNT,AX MOV AH,09H LEA DX,empty ;перевод курсора на след строку INT 21H MOV AX,COUNT CMP AX,MAXMASLEN ;смотрим достиги предела ввода JE end_ent ;если да то завершаем программу JMP addloop ;если нет продолжаем циклический ввод ;блок сообщения об ошибке ввода vvod_err: MOV AH,09H LEA DX,ERR_MES INT 21H JMP ADDLOOP ;блок завершения подпрограммы end_ent: ;значение количества введенных имен RET 4 INTERF ENDP ;===ПОДПРОГРАММА ВЫВОДА МАССИВА INTERFV PROC MOV BP,SP MOV DI,[BP+2] MOV CX,[BP+4] CMP CX,0 JE warning M7: MOV AX,[DI] MOV BX,10 LEA SI,TEMPSTR+5 M8: XOR DX,DX DIV BX OR DX,30H MOV [SI],DL CMP AX,10 JB COMPLETE DEC SI JMP M8 COMPLETE: MOV AH,09H LEA DX,TEMPSTR INT 21H MOV AH,09H LEA DX,empty ;перевод курсора на след строку INT 21H ADD DI,TYPE MAS1 LEA SI,TEMPSTR MOV BX,3030H MOV WORD PTR [SI],BX MOV WORD PTR [SI+2],BX MOV WORD PTR [SI+4],BX LOOP M7 JMP END_PROC warning: MOV AH,09H LEA DX,warn_mes INT 21H end_proc: RET 2 INTERFV ENDP SORTMAS MACRO MAS,maslen LOCAL INT,EX,LESS INT: LEA SI,MAS MOV FL,0 MOV CX,MASLEN-1 EX: MOV AX,[SI+2] CMP [SI],AX JB LESS MOV DX,[SI] MOV AX,[SI+2] MOV [SI],AX MOV [SI+2],DX MOV FL,1 LESS:ADD SI,TYPE MAS LOOP EX CMP FL,1 JE INT ENDM START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SP,STKTOP ;вывод сообщения приветствия MOV AH,09H LEA DX,hello INT 21H ;вывод сообщения нажатия Enter MOV AH,09H LEA DX,wait_mes INT 21H MOV AH,0Ah INT 21H ;Приглашение ввести элементы первого списка MOV AH,09H LEA DX,entr_mes1 INT 21H ;Вызов подпрограммы ввода LEA DI,MAS1 PUSH DI LEA SI,COUNT1 PUSH SI CALL INTERF MOV AX,COUNT MOV COUNT1,AX SORTMAS MAS1,COUNT1;при сортировке пишет ошибку разрядности ;вызов подпрограммы вывода PUSH COUNT1 LEA SI,MAS1 PUSH SI CALL INTERFV ;Сообщение о выходе по нажатию Enter MOV AH,09H LEA DX,out_mes INT 21H MOV AH,0Ah INT 21H ;Выход MOV AX,4C00H INT 21H CODE ENDS END START Помогите пожалуйста.Сам не могу понять... При сортировке выдает ошибку разрядности,как решить еще и эту проблему? Заранее спасибо.