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