Ассемблер. Циклы. Найти кол-во числе больше 10h (10 в 16ой системе) . Массив слов
Помогите решить. Желательно с комментариями.
Помогите решить. Желательно с комментариями.
ideal
model small
segment data
Array dw -9579, -9020, 756, 24883, 3031, -19112, -8784
dw 32202, -20170, -9464, -12684, -19663, -1097
dw -1987, -9366, -28971, 16545, 31721, 10057, 28841
dw 28889, 25161, 27541, 72, -5481, -4067, 22490
dw -15513, -13038, -17, 26661, -19337, 31090, -2943
dw 19800, 17330, 13103, 31199, -14650, 18510
Count dw 0
Len equ (Count - Array) shr 1
ends
segment code
assume cs: code, ds: data, ss: stseg
N80909907:
mov dx,data
mov ds,dx
;------
; Начало вашей задачи
lea si,[Array]; запись адреса начала массива в регистр si
mov cx,Len; загрузка кол-ва элементов массива в регистр cx
Repeat:
lodsw; загрузка в ax очередного элемента массива
cmp ax,10h; сравнение его с 16
jle NotInc; если меньше или равно 16, то перепрыгнуть через инкремент
inc [Count]; иначе увеличить счётчик искомых элементов на 1
NotInc:
loop Repeat; уменьшить cx на 1 и если cx/=0, то переход на начало цикла
; Всё. В переменной Count записано кол-во элементов, больших 10h
; Конец задачи, как она была вами сформулирована
;------
mov ax,4C00h
int 21h
ends
segment stseg stack
dw 100h dup (?)
ends
end N80909907