Найти максимальный отрицательный элемент в одномерном массиве - Assembler
Формулировка задачи:
Задание: Найти максимальный отрицательный элемент в одномерном массиве. Массив задается в программе, например
Листинг программы
- .DATA
- A DW 5, -3, 9, -4, 5
Решение задачи: «Найти максимальный отрицательный элемент в одномерном массиве»
textual
Листинг программы
- .model small
- .8086
- .data
- res dw 0
- A dw 5,-3,9,-4,5
- len equ ($-A)/2
- .stack
- db 255 dup(?)
- .code
- Show_AX proc
- push ax
- push bx
- push cx
- push dx
- push di
- mov cx, 10
- xor di, di ; di - кол. цифр в числе
- ; если число в ax отрицательное, то
- ;1) напечатать '-'
- ;2) сделать ax положительным
- or ax, ax
- jns @@Conv
- push ax
- mov dx, '-'
- mov ah, 2 ; ah - функция вывода символа на экран
- int 21h
- pop ax
- neg ax
- @@Conv:
- xor dx, dx
- div cx ; dl = num mod 10
- add dl, '0' ; перевод в символьный формат
- inc di
- push dx ; складываем в стэк
- or ax, ax
- jnz @@Conv
- ; выводим из стэка на экран
- @@Show:
- pop dx ; dl = очередной символ
- mov ah, 2 ; ah - функция вывода символа на экран
- int 21h
- dec di ; повторяем пока di<>0
- jnz @@Show
- pop di
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- Show_AX endp
- start:
- mov ax,@data
- mov ds,ax
- lea si,A
- mov cx,len
- maxsign:
- lodsw
- test ax,8000h
- jz skip
- cmp ax,word ptr [res]
- jge skip
- mov word ptr [res],ax
- mov ax, [res]
- skip:
- loop maxsign
- call Show_AX
- mov ah,4Ch
- mov al,00h
- int 21h
- end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д