Найти максимальный отрицательный элемент в одномерном массиве - Assembler

Узнай цену своей работы

Формулировка задачи:

Задание: Найти максимальный отрицательный элемент в одномерном массиве. Массив задается в программе, например
Листинг программы
  1. .DATA
  2. A DW 5, -3, 9, -4, 5

Решение задачи: «Найти максимальный отрицательный элемент в одномерном массиве»

textual
Листинг программы
  1. .model small
  2. .8086
  3.  
  4. .data
  5. res dw 0
  6. A dw 5,-3,9,-4,5
  7. len equ ($-A)/2
  8.  
  9. .stack
  10. db 255 dup(?)
  11.  
  12. .code
  13. Show_AX proc
  14.         push    ax
  15.         push    bx
  16.         push    cx
  17.         push    dx
  18.         push    di
  19.  
  20.         mov     cx, 10
  21.         xor     di, di          ; di - кол. цифр в числе
  22.  
  23.         ; если число в ax отрицательное, то
  24.         ;1) напечатать '-'
  25.         ;2) сделать ax положительным
  26.         or      ax, ax
  27.         jns     @@Conv
  28.         push    ax
  29.         mov     dx, '-'
  30.         mov     ah, 2           ; ah - функция вывода символа на экран
  31.         int     21h
  32.         pop     ax
  33.  
  34.         neg     ax
  35.  
  36. @@Conv:
  37.         xor     dx, dx
  38.         div     cx              ; dl = num mod 10
  39.         add     dl, '0'         ; перевод в символьный формат
  40.         inc     di
  41.         push    dx              ; складываем в стэк
  42.         or      ax, ax
  43.         jnz     @@Conv
  44.         ; выводим из стэка на экран
  45. @@Show:
  46.         pop     dx              ; dl = очередной символ
  47.         mov     ah, 2           ; ah - функция вывода символа на экран
  48.         int     21h
  49.         dec     di              ; повторяем пока di<>0
  50.         jnz     @@Show
  51.  
  52.         pop     di
  53.         pop     dx
  54.         pop     cx
  55.         pop     bx
  56.         pop     ax
  57.         ret
  58.  
  59. Show_AX endp
  60. start:
  61.  
  62. mov ax,@data
  63. mov ds,ax
  64.  
  65. lea si,A
  66. mov cx,len
  67. maxsign:
  68. lodsw
  69.  
  70. test ax,8000h
  71. jz skip
  72.  
  73. cmp ax,word ptr [res]
  74. jge skip
  75.  
  76. mov word ptr [res],ax
  77.  
  78. mov ax, [res]
  79. skip:
  80. loop maxsign
  81. call Show_AX
  82. mov ah,4Ch
  83. mov al,00h
  84. int 21h
  85. end start

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы