Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2009, 18:02   #11
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
По умолчанию

Код:
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. Найти в ряде числе два, сумма которых ближе всего к заданному.
Horknee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивом begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 2 21.06.2008 21:40
Работа с массивом: n на n ! Angst Помощь студентам 1 24.01.2008 22:14
работа с одномерным массивом _Solomon_ Помощь студентам 1 07.06.2007 12:06