Посчитать количество байт, число единиц в которых не превышает 6 - Assembler

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

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

Дан массив из 10 байт. Посчитать количество байт, число единиц в которых не превышает 6.ПОЖАЛУЙСТА ПОМОГИТЕ

Решение задачи: «Посчитать количество байт, число единиц в которых не превышает 6»

textual
Листинг программы
model tiny,pascal
.code
org 100h
szMas   equ 10
start:  mov cx,szMas
    xor di,di
@@01:   call    inpNumber,di
    mov dbMas[di],al
    inc di
    loop    @@01
 
    xor di,di
    xor bx,bx
    mov cx,szMas
@@02:   mov al,dbMas[di]
    xor dx,dx
    push    cx
    mov cx,8
@@03:   shr al,1
    adc dx,0
    loop    @@03
    cmp dx,6
    ja  @@04
    inc bx
@@04:   inc di
    pop cx
    loop    @@02
    call    outNumber,bx
    ret
dbMas   db  szMas dup(?)
outNumber   proc    a:word
uses    bx,cx,dx,si,di
    mov ah,9
    lea dx,dbRes
    int 21h
    mov ax,a
    mov si,10
    xor cx,cx
@@05:   xor dx,dx
    div si
    push    dx
    inc cx
    or  ax,ax
    jnz @@05
@@06:   pop ax
    add al,'0'
    int 29h
    loop    @@06
    ret
outNumber   endp
inpNumber   proc    a:word
uses    bx,cx,dx,si,di
    mov si,10
    xor dx,dx
    mov ax,a
    div si
    add al,'0'
    mov dbInp10,al
    add dl,'0'
    mov dbInp01,dl
in00:   mov ah,9
    lea dx,dbMess
    int 21h
    xor bx,bx
in01:   xor ax,ax
    int 16h
    cmp al,13
    je  in02
    cmp al,'0'
    jb  in01
    cmp al,'9'
    ja  in01
    int 29h
    and ax,0fh
    xchg    ax,bx
    xor dx,dx
    mul si
    add bx,ax
    or  ah,ah
    jz  in01
    mov ah,9
    lea dx,dbError
    int 21h
    jmp in00
in02:   mov ax,bx
    ret
inpNumber   endp
dbRes   db  10,13,'Result:$'
dbError db  10,13,'Error overflow!'
dbMess  db  10,13,'Enter A['
dbInp10 db  ?
dbInp01 db  ?
    db  ']:$'
    end start

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


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

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

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