Посчитать количество байт, число единиц в которых не превышает 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д