Text only
12 May 2010
 
 
Tools: wrap/unwrap  
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.model small
.386
.stack 100h
.data
msg_yes db 'Yes!',13,10,'$'
msg_no db 'No!',13,10,'$'
arr db -9,1,-2,1,-3,3,-4,4,-5,8,-6,9,-7,-8
arr_len equ $ - arr
.code
main:
mov ax, @data ; Загружаем сегмент данных
mov ds, ax
mov bx, offset arr ; Загружаем смещение на массив
mov di, 0 ; Загружаем индекс
xor dh, dh ; Обнуляем элемент для сравнивания
CheckLoop:
mov ah, [bx+di] ; Загружаем очередной элемент
cmp ah, 0 ; Проверяем больше он нуля или меньше
jle CheckPassed ; Если меньше - игнорируем его
cmp ah, dh ; Проверяем с последним сохраненным
jl CheckFailed ; Если он меньше - элементы не упорядочены
mov dh, ah ; Сохраняем последний элемент для будующего сравнения
CheckPassed:
inc di ; Увеличиваем индекс
cmp di, arr_len ; Цикл обработки
jb CheckLoop
mov dx, offset msg_yes ; Массив упорядочен
jmp OutMsg
CheckFailed:
mov dx, offset msg_no ; Массив не упорядочен
OutMsg:
mov ah,09h ; Выводим сообщение
int 21h
mov ax,4c00h ; Завершаем программу
int 21h
end main