.MODEL SMALL .STACK 100H .DATA PROMPT_1 DB \'Enter the binary number (max 16-bit) : $\' PROMPT_2 DB 0DH,0AH,\'The given binary number (16-bit) is : $\' .CODE MAIN PROC MOV AX, @DATA ; initialize DS MOV DS, AX LEA DX, PROMPT_1 ; load and display PROMPT_1 MOV AH, 9 INT 21H XOR BX, BX ; clear BX MOV CX, 16 ; initialize loop counter MOV AH, 1 ; set input function @INPUT: ; jump label INT 21H ; read a digit CMP AL, 0DH ; compare digit with carriage return JE @END ; jump to label @END if carriage return AND AL, 0FH ; convert ascii to decimal code SHL BX, 1 ; rotate BX to left by 1 bit OR BL, AL ; set the LSB of BX with input LOOP @INPUT ; jump to label @INPUT @END: ; jump label LEA DX, PROMPT_2 ; load and display PROMPT_2 MOV AH, 9 INT 21H MOV CX, 16 ; initialize loop counter MOV AH, 2 ; set output function @OUTPUT: ; jump label SHL BX, 1 ; shift left BX by 1 bit JNC @ZERO ; jump to label @ZERO if CF=0 MOV DL, 31H ; set DL=1 JMP @DISPLAY ; jump to label @DISPLAY @ZERO: ; jump label MOV DL, 30H ; set DL=0 @DISPLAY: ; jump label INT 21H ; display digit LOOP @OUTPUT ; jump to label @OUTPUT MOV AH, 4CH ; return control to DOS INT 21H MAIN ENDP END MAIN