Write an ALP to add all the elements of table which are between 50 and 150 only. Display the result as the decimal value.
Solution:
DOSSEG.MODEL SMALL
.STACK 64H
.DATA
TBL DB 2,50,100,200,150
TEMP DB 4 DUP(?)
DIVISOR DB 0AH
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV SI,0
MOV AX,0
MOV DH,0
MOV CX,5
NEXT: CMP TBL[SI],50
JBE SKIP
CMP TBL[SI],150
JAE SKIP
MOV DL,TBL[SI]
ADD AX,DX
SKIP: INC SI
LOOP NEXT
MOV DI,0
REDIV: DIV DIVISOR
MOV TEMP[DI],AH
INC DI
MOV AH,0
CMP AL,0
JNE REDIV
MOV AH,02H
RE: DEC DI
MOV DL,TEMP[DI]
ADD DL,30H
INT 21H
CMP DI,0
JNE RE
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN
Solution:
DOSSEG.MODEL SMALL
.STACK 64H
.DATA
TBL DB 2,50,100,200,150
TEMP DB 4 DUP(?)
DIVISOR DB 0AH
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV SI,0
MOV AX,0
MOV DH,0
MOV CX,5
NEXT: CMP TBL[SI],50
JBE SKIP
CMP TBL[SI],150
JAE SKIP
MOV DL,TBL[SI]
ADD AX,DX
SKIP: INC SI
LOOP NEXT
MOV DI,0
REDIV: DIV DIVISOR
MOV TEMP[DI],AH
INC DI
MOV AH,0
CMP AL,0
JNE REDIV
MOV AH,02H
RE: DEC DI
MOV DL,TEMP[DI]
ADD DL,30H
INT 21H
CMP DI,0
JNE RE
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN