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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 19:02   #1
Стас_с
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 22
По умолчанию Преобразовать массив X,расположив в начале отрицательные, а затем неотрицательные элементы (Ассемблер)

; Преобразовать массив X, расположив вначале его отрицатель-
;ные, а затем неотрицательные элементы, сохранив в каждой из двух
;групп исходный относительный порядок элементов. Оценить, как при
;этом изменилось положение максимального по модулю элемента масси-
;ва X.

ну вот как-то так , есть наброски но где-то явно ошибаюсь.
помогите)


______________
Хорошо, что привели свои наработки, иначе я бы грохнул Вашу тему!
Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.
Учтите это на будущее.

Модератор.

Последний раз редактировалось Serge_Bliznykov; 05.07.2011 в 19:39.
Стас_с вне форума Ответить с цитированием
Старый 05.07.2011, 19:08   #2
Стас_с
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 22
По умолчанию

Код:
sseg segment stack 'stack'
     db        64 dup (?)
sseg ends
  data segment
     x   dw 1, -2, 7, -3, 2, 9 	;исходный массив
	 n   dw 6
	 y   dw 6 Dup (?)
	 max dw ?
  data ends 
;
code segment
start   proc    far
assume  ss:sseg,ds:data,cs:code
        push    ds
        xor     ax,ax
        push    ax
        mov     ax,data
        mov     ds,ax
;--------------------Nachalo---------------------------------------------
     lea di,x
	 lea si,y
     mov cx,n
   c1:
      mov ax,[di]
      cmp ax,0
      jge m1
      mov [si],ax
      add si,2
   m1:
      add di,2
	  loop c1
	  lea di,x
	  mov cx,n
   c2:  
	  mov ax,[di]
	  cmp ax,0
	   jl m2
	  mov [si],ax
      add si,2
	m2:  
      add di,2
	  loop m2

; --------------------------------------------------------

	push cx
; Проверяем число на знак.
        test    ax, ax
        jns     @oi1

; Если оно отрицательное, выведем минус и оставим его модуль.
	  push ax
        mov     ah, 02h
        mov     dl, '-'
        int     21h
        pop ax
        neg ax
        
; Количество цифр будем держать в CX.
@oi1:  
        xor     cx, cx
        mov     bx, 10
@oi2:   
       ;cwd
       xor dx,dx
       div bx
; Делим число на десять. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     @oi2
; Теперь приступим к выводу.
        mov     ah, 02h
@oi3:   pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
        add     dl, 30h
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    @oi3
     	pop cx
	mov dx," "
	mov ah,02h
	int 21h

;---------------------------------------------------------	  
ret

code    ends
        end     start

Последний раз редактировалось Стас_с; 05.07.2011 в 19:14.
Стас_с вне форума Ответить с цитированием
Старый 05.07.2011, 19:09   #3
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

обрами код соответствующими тэгами, что бы можно было его нормально читать
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 05.07.2011, 19:35   #4
Стас_с
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 22
По умолчанию

Гляньте если не сложно может что-то где-то не то написал=\

*с оцениванием положения максимального элемента сейчас тружусь
Стас_с вне форума Ответить с цитированием
Старый 05.07.2011, 20:12   #5
Стас_с
Пользователь
 
Регистрация: 05.07.2011
Сообщений: 22
По умолчанию

Код:
push ds
       xor  ax,ax
       push ax
       mov  ax,data
       mov  ds,ax
;
       lea  si,x
       lea  di,y
       mov  dx,di
       push di
       mov  cx,n
       dec  cx
       mov  bx,[si]
 это в начале
 jg   iter_end
       mov  bx,[si]
       push cx
       mov  dx,di
       sub  dx,2
 pop  cx
       mov  bx,dx
       pop  dx
       sub  dx,bx
       mov  ax,dx
       mov  bx,2
       cwd
       idiv bx
       sub  cx,n
       neg  cx
       sub  ax,cx
       mov  max_pd,ax

вот то что придумал по оцениванию положения макс элемента , помогите пожалуйста уже мозги просто после 3-х лаб не работают.
Стас_с вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать массив таким образом, чтобы сначала располагались элементы из интервала [a,b] , а затем все parka Паскаль, Turbo Pascal, PascalABC.NET 7 15.05.2011 22:17
Двухмерный массив - Упорядочить элементы матрицы А, расположив их по убыванию в строках. U4-nik Помощь студентам 3 13.05.2011 22:59
массивы. вначале нули, затем положительные, в конце отрицательные. Сумерки Фриланс 5 17.02.2010 11:21
Сформировать новый массив,содержащий отрицательные элементы - Задача по PASCAl. Waia Помощь студентам 2 17.12.2008 18:27
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16