Код:
stak segment
dw 256 dup(?)
stak ends
data segment para public 'data'
MS1 db 10,13,'vvedite kol-vo el. v massive',10,13,'$'
MS2 db 10,13,'Vvedite el-ti massiva',10,13,'$'
MS3 db 10,13,'$'
MS4 db 'Perviy element=','$'
MS5 db 'Vvedite x=','$'
MS6 db 10,13,'Vtoroy element=','$'
A dw 100 dup(?)
B dw 100 dup(?)
C dw 100 dup(?)
N dw ?
x dw ?
g dw ?
data ends
extrn read:far, write:far
code segment para public 'code'
start: assume CS: code, DS: data, SS:stak
MOV AX, data
MOV DS, AX
Lea DX, MS1
MOV AH, 9h
INT 21h
call read
MOV N, AX
Lea DX, MS2
MOV AH, 9h
INT 21h
MOV CX, N
XOR SI, SI
cikl_vvod:
call read
MOV A[SI], AX
ADD SI, 2
Lea DX, MS3
MOV AH, 9h
INT 21h
Loop cikl_vvod
Lea DX, MS5
MOV AH, 9h
INT 21h
call read
MOV x, AX
XOR SI, SI
MOV CX, N
cikl_add1:
DEC CX
MOV DI, SI
push CX
cikl_add2:
ADD DI, 2
MOV AX, A[SI]
MOV BX, A[DI]
ADD AX, BX
MOV B[BP], AX
ADD BP, 2
Loop cikl_add2
ADD SI, 2
pop CX
INC CX
CMP CX, 2
je m1
Loop cikl_add1
m1:
MOV CX, BP
SAR CX, 1
push CX
XOR BP, BP
cikl_app:
JCXZ m3
MOV AX, B[BP]
MOV BX, x
CMP AX, BX
jg m2
SUB BX, AX
MOV C[BP], BX
DEC CX
ADD BP, 2
jmp cikl_app
m2:
SUB AX, BX
MOV C[BP], AX
ADD BP, 2
Loop cikl_app ;77
m3:
MOV BX, C[0]
pop CX
DEC CX
MOV BP, 2
c_sr:
JCXZ m4
CMP BX, C[BP]
jle k_c
MOV BX, C[BP]
push BP
DEC CX
ADD BP, 2
jmp c_sr
k_c: ADD BP, 2
Loop c_sr
m4: pop BP
MOV AX, B[BP]
MOV g, AX
XOR SI, SI
MOV CX, N
cikl_add3:
DEC CX
MOV DI, SI
push CX
cikl_add4:
ADD DI, 2
MOV AX, A[SI]
MOV BX, A[DI]
ADD AX, BX
CMP AX, g
je m5
MOV B[BP], AX
ADD BP, 2
Loop cikl_add4
ADD SI, 2
pop CX
INC CX
CMP CX, 2
je m5
Loop cikl_add3
m5:
Lea DX, MS4
MOV AH, 9h
INT 21h
MOV AX, A[SI]
call write
Lea DX, MS3
MOV AH, 9h
INT 21h
Lea DX, MS6
MOV AH, 9h
INT 21h
MOV AX, A[DI]
call write
XOR AX, AX
MOV AH, 01h
INT 21h
mov AX,4C00h
INT 21h
ends
end start
Вот и тот самый код. А задание было такое: дано натуральное n и ряд чисел от a1 до an. Дано целое x. Найти в ряде числе два, сумма которых ближе всего к заданному.