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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 14:51   #1
СветланаRerum
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 10
Восклицание Обращение к первому и последнему элементу отсортированного массива

Здравствуйте!
Скажите,пожалуйста,Каким образом можно обратиться к 1му и последнему элементу данного двумерного отсортированного массива и вывести их (а это ведь будет min и max,соответственно..^^)..Чем проще,тем будет лучше(т.е. без всяких указателей,если возможно..)..Эх.. Запарилась я уже..=(((
Заранее благодарю..


Код:
.model small

.stack 100h

.data 

str1    db  'Element     $'
str2    db  'Vvedite matricu:$'
str3    db  'Ishodnaya matrica:$'
str4    db  'Resultat$'
error   db  'Neverniy symvol !$'
caret  db  0Ah,0Dh,'$'
mas   dw  16 dup (0)

.code
    
; vvod matricy
Input PROC   

   mov ah,09h
   mov dx,offset str2
   int 21h

   mov dx,offset caret
   int 21h
   int 21h
   
   xor di,di           ; obnulyaem indeks
   mov cx,10h     ; kol-vo elem matricy 16 
   mov bx,0         ; flag polozhitelnogo

in_elem:
    
   xor dx,dx
   mov ah,09h
   mov dx,offset str1
   int 21h
   mov bx,0

l1:
   
   mov ah,01h   ; vvod simvola al=kod simvola
   int 21h  
     
   cmp al,0Dh           ; esli enter
   je next
   
   cmp al,30h
   jb err_label           ;esli < 0
   cmp al,39h
   ja err_label           ; esli > 9

   xor ah,ah  
   sub ax,30h            ; otnyat' kod '0'
   push ax
   mov  ax, bx
   mov  bx,0Ah         ; umnozhit' na 10 
   mul  bx
   mov  bx, ax
   pop  ax
   add  bx, ax
   jmp l1

next:
   
   mov mas[di],bx
   add di,2               ; dobavit' 2 bayta (dw)

   mov dx,offset caret
   mov ah,09h
   int 21h

   loop in_elem

   jmp label_1

err_label:

   mov ah,09h
   mov dx,offset caret
   int 21h
   mov dx,offset error
   int 21h
   mov dx,offset caret
   int 21h
   jmp  in_elem

label_1:
   
    ret

ENDP

; vivod matricy
Output PROC

     xor si,si
     mov cx,10h
     mov bx,1

out_elem:
    
     jcxz label_2         ; esli cx=0
     push bx                ; sohranit' nomer elementa

     xor ax,ax  
     xor dx,dx
     mov ax,offset mas[si]
   
m1:
     xor bx,bx
     mov bl,0Ah
     div  bl                   ; result v al, ostatok v ah
     mov bl,ah 
     add bx,30h           ; chislo v simvol
     push bx                ; simvol v stek
     inc dx
     xor ah,ah
     cmp ax,0              
     je m2
     jmp m1
    
m2:
     pop ax                 ; simvol iz steka
     xchg ax,dx          ; v ax schetchik, v dx simvol
     push ax
     mov ah,02h
     int 21h
     pop dx
     dec dx                 ; 
     cmp dx,0              ;
     je m4
     jmp m2
      
m4:      
     mov dx,20h   ; probel
     mov ah,02h
     int 21h     
     pop bx
     cmp bx,4       ; posle 4 elementa perevod stroki
     je perevod
     jmp m3
  
perevod:
     mov dx,offset caret
     mov ah,09h
     int 21h
     mov bx,0
    
m3:     
     inc bx
     add si,2
 
     loop out_elem
 

label_2:
 
     ret

ENDP  
  
; sortirovka
Sort       PROC   
      
     xor si,si
     mov di,2

loop1:
 
      mov ax,mas[si]
      mov dx,mas[di]
      cmp ax,dx            
      ja change
    
      cmp di,16*2    ; esli posledniy element
      je loop3
      
loop2:

      add di,2
      jmp loop1

loop3:
 
      cmp si,14*2         ; esli predposledniy element
      je exit

      add si,2 
      mov di,si
      add di,2
      jmp loop1

change:
 
      xchg ax,dx
      mov mas[si],ax
      mov mas[di],dx
      jmp loop2
        
exit:

      ret

ENDP

; NACHALO
start :

     mov ax,@data
     mov ds,ax
     mov es,ax

     call Input
     
; ochistka ekrana

     mov ax,0600h     ; ah=06 - prokrutka, 
                                 ; al=00 - ves' ekran
     mov bh,07           ; normal atribut (black-white)
     mov cx,0             ; verch - levo
     mov dx,184Fh     ; niz - pravo
     int 10h                 ; BIOS
   
; ustanovka kursora
  
     mov ah,02h         ; func BIOS
     mov bh,0             ; ekran 0
     mov dx,0             ; dh - stroka , dl - stolbec
     int 10h

     mov ah,09h
     mov dx,offset str3
     int 21h  
     mov dx,offset caret
     int 21h
     int 21h
       
     call Output

     call Sort

     mov ah,09h
     mov dx,offset caret
     int 21h 
     mov dx,offset str4
     int 21h  
     mov dx,offset caret
     int 21h
     int 21h
          
     call Output

     mov ax,4C00h
     int 21h

end start

Последний раз редактировалось Stilet; 17.05.2010 в 17:20.
СветланаRerum вне форума Ответить с цитированием
Старый 17.05.2010, 16:41   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Код:
mas[0]
mas[15*2]
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 17.05.2010, 18:56   #3
СветланаRerum
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 10
По умолчанию

Давайте я с вами в аське проконсультируюсь лучше..
Если можно.)
СветланаRerum вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к предыдущему/следующему элементу массива по его адресу. InternetStranger Общие вопросы Delphi 9 11.02.2010 06:35
обращение к элементам двумерного массива на С++ серг Помощь студентам 16 05.12.2009 21:01
обращение к элементу таблицы в WebBrowser nikola86 Общие вопросы Delphi 13 14.11.2009 00:55
STL обращение к элементу list sht0p0r Общие вопросы C/C++ 1 05.07.2009 21:22
Обращение из формы в dll к элементу главной формы (delphi) a_n_n_a Помощь студентам 3 10.05.2009 04:00