DMG

Pronaci brojeve koji ne pripadaju nizu

DMG
Mar 17th, 2012
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Dat je prirodan broj n i n cijelih brojeva. Neka je max najveci, a min najmanji u datom nizu. Napisati program za pronalazanje svih cijelih brojeva iz intervala min, max koje ne pripadaju datom nizu. Odrediti min i max.
  2. ; multi-segment executable file template.
  3.  
  4. data segment
  5.     a db 1, 3, 3, 9, 1, 6, 3
  6.     k dw 7
  7.     b db 7 dup (?)
  8.     pkey db "press any key...$"
  9. ends
  10.  
  11. stack segment
  12.     dw   128  dup(0)
  13. ends
  14.  
  15. code segment
  16. start:
  17. ; set segment registers:
  18.     mov ax, data
  19.     mov ds, ax
  20.     mov es, ax
  21.    
  22. ; sortiranje
  23.    
  24.     mov si, 0
  25.     mov cx, 0
  26.     mov bx, k
  27.     sub bx, 2
  28.    
  29. for1:
  30.     cmp bx, cx
  31.     jge for2
  32.     jmp zad
  33.    
  34. for2:
  35.     cmp si, bx
  36.     jle if
  37.     jmp smanji
  38.    
  39. if:
  40.     mov dh, a[si]
  41.     mov dl, a[si+1]
  42.     cmp dh, dl
  43.     jg razmeni
  44.     jmp uvecaj
  45.  
  46. razmeni:
  47.     mov al, a[si]
  48.     mov ah, a[si+1]
  49.     mov a[si], ah
  50.     mov a[si+1], al
  51.    
  52. uvecaj:
  53.     add si, 1
  54.     jmp for2
  55.    
  56. smanji:
  57.     mov si, 0
  58.     sub bx, 1
  59.     jmp for1
  60.    
  61. zad:
  62.  
  63. ; zadatak
  64.  
  65.     mov di, 1
  66.     mov bl, a[0]
  67.     add bl, 1
  68.     mov si, k
  69.     mov bh, a[si-1]
  70.     mov si, 0
  71.  
  72. while:
  73.     cmp bl, bh
  74.     jl radi
  75.     jmp zavrsi
  76.    
  77. radi:
  78.     mov ah, a[di-1]
  79.     cmp a[di], ah
  80.     je uvecaji
  81.     jmp radi1
  82.    
  83. uvecaji:
  84.     add di, 1
  85.     jmp while
  86.  
  87. radi1:
  88.  
  89.     cmp bl, a[di]
  90.     je da
  91.     jmp ne
  92.    
  93. da:
  94.     add bl, 1
  95.     add di, 1
  96.     jmp while
  97.    
  98. ne:
  99.     mov b[si], bl
  100.     add si, 1
  101.     add bl, 1
  102.     jmp while
  103.    
  104. zavrsi:
  105.  
  106.  
  107. ; stampanje
  108.  
  109. mov di, 0
  110.  
  111. petlja:    
  112.     cmp di, si
  113.     jl stampaj
  114.     jmp kraj
  115.    
  116. stampaj:
  117.     mov ah, 2
  118.     mov dl, b[di]
  119.     add dl, 48
  120.     int 21h
  121.     add di, 1
  122.     jmp petlja
  123.    
  124. kraj:      
  125.            
  126.     lea dx, pkey
  127.     mov ah, 9
  128.     int 21h        ; output string at ds:dx
  129.    
  130.     ; wait for any key....    
  131.     mov ah, 1
  132.     int 21h
  133.    
  134.     mov ax, 4c00h ; exit to operating system.
  135.     int 21h    
  136. ends
  137.  
  138. end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment