Массив: В массиве найти 7-ой по счету байт - Assembler

Узнай цену своей работы

Формулировка задачи:

в массиве байтов найти 7 по счёту байт
.MODEL SMALL
.STACK 100h
.DATA
DAN db  3Bh,20h,0Dh,32h,0A1h,24h,0A0h,0Dh,0,0A2h,20h
db  0B0h,40h,24h,0E1h,0Dh,0,24h,3Bh,30h,0C0h,0Dh
db  20h,97h,3Bh,83h,0,0A0h,20h,0D0h,27h,20h,0C6h
db  91h,0,20h,0FEh,3Bh,90h,0,3Bh,24h,17h,20h,24h

.code
start:
mov ax,@Data
mov ds,ax
mov cx,7        
mov dx,64       
lea si,DAN  
dec si
EXT:    push    cx  
mov cx,dx   
LOC:    inc si  
-
-
-
-
-
loop    EXT

end start
не пойму что надо дописать в цикл LOC.

Решение задачи: «Массив: В массиве найти 7-ой по счету байт»

textual
Листинг программы
    mov bx, offset massiv   ;смещение начала массива massiv
    mov cx, 40h     ;длина массива в байтах (к примеру 40h)
    mov ah, 0       ;счетчик нечетных байт, изначально нулевой
Search:
    test    byte ptr [bx], 1    ;байт массива чет/нечет ?
    jz  Even            ;переход если чет
    inc ah          ;нашли еще одно нечетное
    cmp ah, 4           ;уже нашли 4 ?
    je  Found           ;переход если да
Even:
    inc bx      ;передвинем указатель на след.элемент массива
    loop    Search      ;цикл по числу элементов массива
    ;не найдено : в массиве меньше 4-х нечетных элементов
    ...
Found:
    ;найдено, причем смещение 4-го нечетного элемента массива в BX

Объяснение кода листинга программы

  1. Входные данные:
    • Массив massiv размером 40h байт.
    • Смещение начала массива massiv в переменной bx.
    • Длина массива в байтах (к примеру 40h) в переменной cx.
    • Счетчик нечетных байт, изначально нулевой, в переменной ah.
  2. Выполняемые действия:
    • Тестирование на четность байта в переменной byte ptr [bx] с использованием инструкции test.
    • Если байт массива чет (jz), то переход на метку Even.
    • Если байт массива нечет (jnz), то увеличение счетчика нечетных байт в переменной ah на 1 с помощью инструкции inc.
    • Сравнение значения счетчика нечетных байт в переменной ah со значением 4 (cmp).
    • Если значение счетчика нечетных байт равно 4 (je), то переход на метку Found.
    • Если байт массива чет (jz), то увеличение указателя на следующий элемент массива в переменной bx на 1 с помощью инструкции inc и переход на цикл по числу элементов массива с помощью инструкции loop.
    • Если не найдено 4 нечетных элемента в массиве, то выполнение цикла до достижения условия.
    • Если найдено 4 нечетных элемента в массиве (je), то смещение 4-го нечетного элемента массива сохраняется в переменной bx.
  3. Результат:
    • Если найдено 4 нечетных элемента в массиве, то смещение 4-го нечетного элемента массива будет храниться в переменной bx.
    • Если не найдено 4 нечетных элемента в массиве, то выполнение цикла будет продолжаться до выполнения условия.

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы