ВУЗы и колледжи
Ассемблер. Циклы. Найти кол-во числе больше 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
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
Похожие вопросы
- Помогите перевести число Перевести число 471 в 10-ой в 16-ю систему счисления. Подробно и с проверкой. Заранее спасибо.
- Комплексные числа. Какое изображение на плоскости имеет система:
- Помогите составить алгоритм. Вводится последовательность из М чисел. Найти два наибольших числа и их порядковые номера.
- Найти сумму шестнадцатиричных чисел AA+AC+AE+...+FA..
- Найти последнию цыфру числа 2017 в 4207 степени. ниписать как получилось можно и ответ
- как найти процент от числа. нужно получить величину в процентах
- Найдите четырехзначное натуральное число, кратное 19 сумма цифр которого на 1 больше их произведения. Ответ: 3211
- помогите найти ответ на вопрос экзамена: значение педагогики в общей системе наук о человеке
- Помогите найти список художественной литературы, изучаемой в 10-11 классах, пожалуйста)
- Какое минимальное основание имеет система счисления, если в ней записаны числа 123, 222, 111, 241?