с клавы вводятся 5 чисел, найти и вывести найменьшее число и его порядковый номер
програма не работает с отрицательными числами. помогите!!!
Код: Выделить всё
.MODEL small
.STACK 100h
.DATA
CodeNewLine DB 13,10,'$'
Str1 DB 53 DUP(?)
StrRes DB 53 DUP(?)
min Dw 0
mas dw 53 DUP(?)
Nomer dw 0
masage DB 'min elem:','$'
povid1 DB 'nomer min:','$'
[B].CODE[/B]
mov ax,@data
mov ds,ax
lea di,mas
mov cx,0
F1:
push cx
mov DX,offset Str1
call ReadStr
call NewLine
call AsciiToBin
mov [B][di][/B],ax
add di,2
pop cx
inc cx
cmp cx,5
jnz F1
;-------------------------------
lea si,mas
mov ax,[B][si][/B]
mov min,ax
mov di,1
FORmin:
mov ax,min
cmp [si],ax
jnl t
mov ax,[B][si][/B]
mov min,ax
mov Nomer,di
t:
add si,2
inc di
cmp di,6
jnz FORmin
;---------------------
call NewLine
mov ah,9
mov dx,OFFSET masage
int 21h
mov ax,min
mov bx, offset StrRes+50
mov byte ptr[B][bx][/B], '$'
call BinToAscii
mov dx, bx
call WriteStr
call NewLine
call NewLine
mov ah,9
mov dx,OFFSET povid1
int 21h
mov ax,Nomer
mov bx, offset StrRes+50
mov byte ptr[B][bx][/B], '$'
call BinToAscii
mov dx, bx
call WriteStr
call NewLine
mov ah,4ch
int 21h
ret
ReadStr PROC
MOV BX,DX
MOV AL,51
MOV [BX],AL
MOV AH,0AH
INT 21H
MOV CL,[B][BX+1][/B]
ret
ReadStr ENDP
AsciiToBin PROC
mov ax, 0
mov si, 2
MulLoop:
mul si
mov ch, [B][bx][/B]+2
sub ch, 30h
add al, ch
inc bx
dec cl
jnz MulLoop
ret
AsciiToBin ENDP
BinToAscii PROC
mov dx, 0
mov si, 10
DivLoop:
mov dx, 0
div si
add dl, 30h
dec bx
mov [B][bx][/B], dl
cmp ax, 0
jnz DivLoop
ret
BinToAscii ENDP
NewLine PROC
mov ah,9
mov dx,OFFSET CodeNewLine
int 21h
ret
NewLine ENDP
WriteStr PROC
mov ah,9
int 21h
ret
WriteStr ENDP
END