Advertisement
Sauka1337

Untitled

Mar 19th, 2024
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         org 100h
  2.  
  3. jmp start
  4.  
  5. mess1    db  'Even elements in default order: $'
  6. mess2    db  'Odd elements in reverse order: $'
  7. strClose    db   'Press any key to exit$'
  8. nextLine        db      '', 13, 10, '$'
  9. spaceLine       db      ' ', '$'
  10. array   db  9, 2, 7, 63, 55, 8, 6, 3, 10, 4, 21, 30, 45, 99, 50, 111
  11. size    =   $ - array         ; ðàçìåð ìàññèâà
  12.  
  13. start:
  14.         mov   ah, 9
  15.         mov   dx, mess1
  16.         int   21h
  17.  
  18.         mov   si, array             ; SI = óêàçàòåëü íà ìàññèâ
  19.         mov   cx, size              ; CX = äëèíà ìàññèâà/öèêëà
  20.         xor   ax, ax                ; î÷èùàåì ÀÕ (ñþäà áóäåì ÷èòàòü)
  21.         xor   bx, bx                ; î÷èùàåì ÂÕ (çäåñü áóäåò ñóììà)
  22.         mov   bp, 0
  23.  
  24. cycle1:
  25.         lodsb                      ; áåð¸ì â AL î÷åðåäíîé áàéò èç SI
  26.  
  27.         test  ax, 1
  28.         jz    isEven
  29.  
  30.         push  ax
  31.         inc   bp
  32.  
  33.         loop  cycle1
  34.  
  35. prep:
  36.         mov      ah, $09
  37.         mov      dx, nextLine
  38.         int      21h
  39.  
  40.         mov     ah, $09
  41.         mov     dx, mess2
  42.         int     21h
  43.  
  44.         mov   cx, bp
  45.  
  46. cycle2:
  47.         pop   ax
  48.  
  49.         mov   bx, 10                ; ñèñòåìà ñ÷èñëåíèÿ 10-òè÷íàÿ
  50.         call  hex2asc              ; çîâ¸ì ôóíêöèþ âûâîäà ÷èñåë íà ýêðàí!
  51.  
  52.         mov      ah, $09
  53.         mov      dx, spaceLine
  54.         int      21h
  55.  
  56.         xor     ax, ax
  57.  
  58.         loop  cycle2
  59.         jmp   exit
  60.  
  61.  
  62. isEven:
  63.  
  64.         mov   bx, 10                ; ñèñòåìà ñ÷èñëåíèÿ 10-òè÷íàÿ
  65.  
  66.         call  hex2asc              ; çîâ¸ì ôóíêöèþ âûâîäà ÷èñåë íà ýêðàí!
  67.  
  68.         mov      ah, $09
  69.         mov      dx, spaceLine
  70.         int      21h
  71.  
  72.         xor     ax, ax
  73.  
  74.         loop  cycle1                ; ìîòàåì öèêë ÑÕ-ðàç
  75.         jmp   prep
  76.  
  77. exit:
  78.         mov      ah, $09
  79.         mov      dx, nextLine
  80.         int      21h
  81.  
  82.         mov     ah, $09
  83.         mov     dx, strClose
  84.         int     21h
  85.  
  86.         mov     ah, $08
  87.         int     21h
  88.         ret                  ; íà âûõîä!
  89.  
  90.  
  91.  
  92.  
  93. hex2asc:                 ; Ôóíêöèÿ ïåðåâîäèò ÷èñëà â ñèìâîëû
  94.         pusha                 ; Âõîä:  ÀÕ = ÷èñëî, BX = ñèñòåìà ñ÷èñëåíèÿ
  95.         xor   cx, cx           ; Âûõîä: íà ýêðàíå
  96. isDiv:
  97.         xor   dx, dx
  98.         div   bx
  99.         push  dx
  100.         inc   cx
  101.         or    ax, ax
  102.         jnz   isDiv
  103. isOut:
  104.         pop   ax
  105.         cmp   al, 9
  106.         jle   noHex
  107.         add   al, 7
  108. noHex:
  109.         add   al, 30h
  110.         int   29h
  111.         loop  isOut
  112.         popa
  113. ret
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement