Определить количество чисел между первым и последним нулём в массиве - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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