
Administrator
   
Group: Admin
Posts: 265
Member No.: 1
Joined: 19-November 05

|
The objective was to insert two valid hexadecimal numbers/letters and have the program output the sum of both.
| CODE | PAGE 60,80 TITLE CAPTAIN NARADA ONE.ASM CSEG SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CSEG;DS:CSEG;ES:CSEG;SS:CSEG
ORG 0100H
ENTP: JMP MAIN
MAIN PROC NEAR
MOV AH,01 ;INPUT FIRST NUMBER INT 21H
CALL CHECK ;CHECK FIRST NUMBER
CMP BH,01 ;IF CHECK RETURNS 01(BAD), END JE END
CALL HEX ;CONVERT 1ST NUMBER FROM ASCII TO HEX
MOV BL,AL ;MOVE HEX VALUE FROM AL TO BL
MOV AH,01 ;INPUT SECOND NUMBER INT 21H
CALL CHECK ;CHECK SECOND NUMBER
CMP BH,01 ;IF CHECK RETURNS 01(BAD), END JE END
CALL HEX ;CONVERT 2ND NUMBER FROM ASCII TO HEX
ADD AL,BL ;ADD AL AND BL HEX VALUES
CALL ASCII ;CONVERT FROM HEX TO ASCII
MOV DL,AL ;MOVE ASCII VALUE OF SUM FROM AL TO DL
MOV AH,02 ;OUTPUT SUM INT 21H
END:RET
MAIN ENDP
CHECK PROC NEAR ;CHECK NUMBER, RETURN GOOD(00H) OR BAD(01H)
CMP AL,66H JG BAD CMP AL,30H JL BAD CMP AL,3AH JL GOOD CMP AL,41H JL BAD CMP AL,47H JL GOOD CMP AL,60H JG GOOD
GOOD:MOV BH,00H RET BAD:MOV BH,01H RET
CHECK ENDP
HEX PROC NEAR ;CONVERTS VALUE FROM ASCII TO HEX
SUB AL,30H CMP AL,0AH JL MOO
SUB AL,7H CMP AL,10H JL MOO
SUB AL,20H
MOO:RET
HEX ENDP
ASCII PROC NEAR ;CONVERTS VALUE FROM HEX TO ASCII
ADD AL,30H CMP AL,3AH JL COW
ADD AL,7H
COW:RET
ASCII ENDP
CSEG ENDS END ENTP |
--------------------

|