Привет всем!!! Кому не трудно, помогите пожалуйста доделать программу. Большую часть я уже сделал, осталось реализовать следующее задание:
"Подсчитать количество положительных элементов в массиве, которые удовлетворяют условию: c<=a[i]<=d "
Вот код программи в которой вводятся элементы "с" и "d", размерность массива ("n"), и сам массив:
| Код | stak segment stack db 256 dup(0) stak ends data segment array db ' $' masx db ' $' newl db 0ah,0dh,'$' sizemes db 'Size of array:$' elem db 'mas[i]=$' c_in db 'Enter c:$' d_in db 'Enter d:$' error1 db 'Menyshe 30h$' error2 db 'Bolyshe 39h$' result db 'Result:$' line db '-------------$' buffer label byte maxlen db 20 actl db ? masiv db 20 dup(0) des db 10 buf db 0 n db ? ;array size c db ? d db ? rez dw 0 k db 0 ;counter data ends code segment Assume cs:code,ds:data,ss:stak
;-----------------New line------------------------------ newline proc push ax push dx mov dx,offset newl mov ah,09h int 21h pop dx pop ax ret endp newline ;----------------------StrToNum------------------------ StrToNum proc push ax push cx push dx mov buf,0 xor cx,cx xor si,si mov cl,actl mov si,cx dec si mov ax,1 mit: cmp si,0 jne nemin mov bl,masiv[si] cmp bl,45 jne last mov al,buf neg al mov buf,al jmp exit nemin: mov bl,masiv[si] cmp bl,30h jb er1 cmp bl,39h ja er2 sub bl,30h push ax mul bx add buf,al pop ax mul des xor bx,bx dec si loop mit last: mov bl,masiv[si] cmp bl,30h jb er1 cmp bl,39h ja er2 sub bl,30h push ax mul bx add buf,al pop ax mul des xor bx,bx jmp exit exit: xor ax,ax mov al,buf pop dx pop cx pop ax ret er1: mov dx, offset newl mov ah,09h int 21h mov dx,offset error1 mov ah,09h int 21h jmp exit er2: mov dx, offset newl mov ah,09h int 21h mov dx,offset error2 mov ah,09h int 21h jmp exit endp StrToNum ;--------------------Ввод---------------------------- Input proc push ax push dx mov dx,offset buffer mov ah,0ah int 21h pop dx pop ax ret endp Input
;---------------------NumToStr-------------------- NumToStr proc xor ax,ax mov al,k mov cl,actl mov si,cx cmp ax,0 jg mitx neg ax mov masx[0],'-' mitx: div des add ah,30h mov masx[si],ah xor ah,ah dec si cmp al,0 je exitx cmp al,10 jg mitx add al,30h mov masx[si],al jmp exitx exitx: mov ah,09h mov dx,offset masx int 21h ret endp NumToStr
start: mov ax,data mov ds,ax ;-------Enter C mov dx,offset c_in mov ah,09h int 21h call input call strtonum xor ax,ax mov al,buf mov c,al call newline ;-------Enter D mov dx,offset d_in mov ah,09h int 21h call input call strtonum xor ax,ax mov al,buf mov d,al call newline ;--------Enter mas size call newline mov dx,offset sizemes mov ah,09h int 21h call input call strtonum xor ax,ax mov al,buf mov n,al call newline xor cx,cx mov cl,n xor bx,bx cycl: jcxz quit mov dx,offset elem mov ah,09h int 21h call input call strtonum xor ax,ax mov al,buf mov array[bx],al inc bx call newline loop cycl call newline mov dx,offset line mov ah,09h int 21h call newline mov dx,offset result mov ah,09h int 21h call NumToStr call newline mov dx,offset line mov ah,09h int 21h
quit: mov ah,4ch int 21h code ends end start
|
Зарание спасибо !!! |