Untitled
unknown
plain_text
2 years ago
2.1 kB
5
Indexable
;start=led_display.exe# TITLE IOANNIS STAMOU DEDOMENA SEGMENT debug dw 0 digit db 3 dup(0) DEDOMENA ENDS KWDIKAS SEGMENT ARXH: MOV AX, DEDOMENA MOV DS, AX ; Prompt the user to enter a decimal number MOV DX, OFFSET digit MOV AH, 09h INT 21H ; Print the entered decimal number CALL output_value_to_display ; Print the binary representation of the number MOV CX, 3 MOV SI, 0 PRINT_BINARY_LOOP: CALL output_binary_digit INC SI LOOP PRINT_BINARY_LOOP MOV AH, 4Ch INT 21H output_value_to_display PROC PUSH SI PUSH AX PUSH CX PUSH BX MOV CX, 0 MOV SI, 0 MOV AL, digit[SI] MOV BL, 100 MUL BL ADD CL, AL INC SI MOV AL, digit[SI] MOV BL, 10 MUL BL ADD CL, AL MOV AL, digit[SI] ADD CL, AL MOV AX, CX OUT 199, AX POP BX POP CX POP AX POP SI RET output_value_to_display ENDP output_binary_digit PROC MOV AL, digit[SI] CALL binary_conversion MOV AH, 02h INT 21H RET output_binary_digit ENDP binary_conversion PROC MOV CX, 8 ; 8 bits MOV BX, 0000_0001b ; Mask for checking each bit binary_conversion_loop: AND AL, BX JZ zero_bit MOV DL, '1' MOV AH, 02h INT 21H JMP next_bit zero_bit: MOV DL, '0' MOV AH, 02h INT 21H next_bit: SHR BX, 1 LOOP binary_conversion_loop RET binary_conversion ENDP get_three_decimal_digits PROC PUSH BP PUSH SI PUSH CX MOV CX, 3 MOV SI, 0 LOOP1: CALL get_one_decimal_digit MOV BP, SP MOV AX, [BP-8] MOV digit[SI], AL INC SI LOOP LOOP1 POP CX POP SI POP BP RET get_three_decimal_digits ENDP get_one_decimal_digit PROC PUSH AX PUSH BP MOV BP, SP AGAININPUT: MOV AH, 01h INT 21H CMP AL, '0' JB AGAININPUT CMP AL, '9' JA AGAININPUT MOV AH, 0 SUB AL, 30H MOV [BP-2], AX POP BP POP AX RET get_one_decimal_digit ENDP KWDIKAS ENDS SOROS SEGMENT STACK db 256 dup(0) SOROS ENDS END ARXH
Editor is loading...
Leave a Comment