ВУЗы и колледжи

Ассемблер. Циклы. Найти кол-во числе больше 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
Ксю ))
Ксю ))
51 590
Лучший ответ

Похожие вопросы