Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TITLE STRING (SIMPLFIED .EXE FORMAT)
- .MODEL SMALL
- ;---------------------------------------------
- .STACK 32
- ;---------------------------------------------
- .DATA
- MSG1 DB 10,13, "ENTER NUMBER : ", '$'
- MSG2 DB 10,13, " ASCII CHARACTER: ", '$'
- MSG3 DB 10,13, "IT PASSED SINGLE:", '$'
- DIGIT1 DB ?,0ah, 0dh, "$"
- DIGIT2 DB ?,0ah, 0dh, "$"
- BCD DB ?,0ah, 0dh,"$"
- TEMP DB ?,0ah, 0dh,"$"
- ;---------------------------------------------
- .CODE
- MAIN PROC FAR
- MOV AX,@data
- MOV DS,AX
- START:
- LEA DX,MSG1 ;prints message1
- MOV AH,09H
- INT 21H
- MOV AH,01H ;TAKES INPUT AS HEX
- INT 21H
- MOV DIGIT1,AL
- ;EXIT
- CMP DIGIT1,1BH
- JE ENDING
- ;NOS ONLY
- CMP DIGIT1,31H
- JB START
- CMP DIGIT1,39H
- JA START
- ;subtract 30hex from DIGIT 1
- SUB AL,30H
- MOV DIGIT1,AL
- MOV AH,01H ;TAKE INPUT2 AS HEX
- INT 21H
- ;CONDITION FOR SINGLE DIGIT INPUT-NOT WORKING YET
- ; CMP DIGIT1,31H
- ;JB SINGLE
- ; CMP DIGIT1,39H
- ;JA SINGLE
- SUB AL,30H
- MOV DIGIT2,AL
- MOV AH,DIGIT1
- MOV AL,DIGIT2
- MOV CL,4
- ROL AH,CL
- CONTINUE:
- ADD AL,AH
- MOV BCD,AL
- LEA DX,MSG2
- MOV AH,09
- INT 21H
- ;display ASCII CHAR
- MOV AH, 09
- LEA DX, BCD
- INT 21H
- MOV TEMP,00
- CALL PRINT_DOLLAR
- ENDING:
- MOV AH, 4CH
- INT 21H
- MAIN ENDP
- PRINT_DOLLAR PROC NEAR
- ;PRINT $
- MOV AL, 24H
- MOV AH, 02H
- MOV DL, AL
- INT 21H
- INC TEMP
- MOV AL,BCD
- CMP TEMP,AL ;NEED HEX CONVERTER. IF EQUAL TO BCD/ASCII VALUE, EXIT LOOP
- JE EXTEND
- JMP PRINT_DOLLAR
- RET
- PRINT_DOLLAR ENDP
- EXTEND PROC NEAR
- JMP START
- RET
- EXTEND ENDP
- SINGLE PROC NEAR ; IF ONLY INPUT 1 IS INPUTTED
- LEA DX,MSG3
- MOV AH,09
- INT 21H
- MOV AL,00
- MOV DIGIT2,AL
- MOV AH,DIGIT1
- MOV AL,DIGIT2
- JMP CONTINUE
- RET
- SINGLE ENDP
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement