Определить количество чисел между первым и последним нулём в массиве - Assembler
Формулировка задачи:
Выручайте! Дан массив, нужно узнать сколько чисел между первым и последним 0.
Решение задачи: «Определить количество чисел между первым и последним нулём в массиве»
textual
Листинг программы
ORG 100h JMP start mess0 DB 13,10,'Create array.: $' mess1 DB 13,10,'Count digit..: $' buff DB 80,0,80 DUP(0) start: MOV AH,9 MOV DX,mess0 INT 21h MOV AH,0Ah ; сохраняем юзерский ввод MOV DX,buff INT 21h MOV AH,9 MOV DX,mess1 INT 21h XOR BX,BX ; это будет счётчик XOR CX,CX MOV AL,'0' ; найдём первый нуль MOV DI,buff+2 ; адрес буфера MOV CL,[buff+1] ; его длина REPNE SCASB ; ищем нуль! XCHG SI,DI ; отправляем позицию в SI (для LODSB) findZero: LODSB ; читаем сл.символ в массиве CMP AL,'0' ; это нуль? JE next ; да - выходим из цикла INC BX ; нет - счётчик +1 LOOP findZero ; сл.символ... next: XCHG AX,BX ; всё считали. Отправляем счётчик в АХ AAM ; 10-тичная коррекция ADD AX,3030h ; переводим цифры в символ PUSH AX ; запомним AL XCHG AH,AL ; выводим АН на экран INT 29h ; POP AX ; выводим АL на экран INT 29h ; exit: XOR AX,AX INT 16h INT 20h
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д