Untitled
unknown
plain_text
2 years ago
1.7 kB
5
Indexable
#START=THERMOMETER.EXE# TITLE IOANNIS STAMOU DEDOMENA SEGMENT MENU DB "ENTER A DECIMAL NUMBER (0-255):$" DEDOMENA ENDS KWDIKAS SEGMENT ARXH: MOV AX, DEDOMENA MOV DS, AX LEA DX, MENU MOV AH, 09h INT 21H ; Read a three-digit decimal number from the user MOV CX, 100 ; Initialize CX with the hundreds place value XOR BX, BX ; Clear BX to store the result MOV SI, 3 ; Set SI to the maximum number of digits READ_DIGIT_LOOP: MOV AH, 01h ; Read a character from input INT 21H SUB AL, '0' ; Convert ASCII to integer CMP AL, 0 ; Check if it's the end of input JE END_READ_DIGIT_LOOP MUL CX ; Multiply the current digit by its place value ADD BX, AX ; Add the result to the total MOV AX, BX ; Move the result to AX for next iteration MOV CX, 10 ; Set CX to the tens place value for the next iteration LOOP READ_DIGIT_LOOP END_READ_DIGIT_LOOP: ; Print the entered decimal number MOV AX, BX ; Use AX for binary conversion MOV CX, 8 ; Number of bits for an 8-bit binary representation PRINT_BINARY_LOOP: ; Shift the binary representation to the left SHL AX, 1 ; Check the leftmost bit and print '1' or '0' JC PRINT_BINARY_PRINT_ONE MOV DL, '0' JMP PRINT_BINARY_CONTINUE PRINT_BINARY_PRINT_ONE: MOV DL, '1' PRINT_BINARY_CONTINUE: ; Print the binary digit MOV AH, 02h INT 21H ; Repeat for all bits LOOP PRINT_BINARY_LOOP ; Print a newline MOV DL, 10 MOV AH, 02h INT 21H ; Terminate the program MOV AH, 4Ch INT 21H KWDIKAS ENDS SOROS SEGMENT STACK db 265 dup(0) SOROS ENDS END ARXH
Editor is loading...
Leave a Comment