Untitled
unknown
plain_text
2 years ago
2.7 kB
6
Indexable
section .data
prompt_msg db 'Enter a decimal number (0-255): $'
output_msg db 'You entered: $'
binary_msg db 'Binary representation: $'
newline db 0Ah, 0Dh, '$'
section .bss
user_input resb 3 ; Buffer for user input
number resb 1 ; Buffer for storing the entered number
binary resb 8 ; Buffer for binary representation (8 bits)
section .text
global _start
_start:
; Prompt the user to enter a decimal number
mov eax, 4 ; System call number for sys_write
mov ebx, 1 ; File descriptor 1 is stdout
mov ecx, prompt_msg
mov edx, 30 ; Length of the prompt message
int 0x80 ; Call kernel
; Read user input
mov eax, 3 ; System call number for sys_read
mov ebx, 0 ; File descriptor 0 is stdin
mov ecx, user_input
mov edx, 3 ; Read up to 3 characters
int 0x80 ; Call kernel
; Convert the user input to a decimal number
mov eax, user_input
sub eax, '0'
mov [number], al
; Print the entered number
mov eax, 4 ; System call number for sys_write
mov ebx, 1 ; File descriptor 1 is stdout
mov ecx, output_msg
mov edx, 17 ; Length of the output message
int 0x80 ; Call kernel
mov eax, 4 ; System call number for sys_write
mov ebx, 1 ; File descriptor 1 is stdout
mov ecx, number
mov edx, 1 ; Length of the number
int 0x80 ; Call kernel
; Print a newline character
mov eax, 4 ; System call number for sys_write
mov ebx, 1 ; File descriptor 1 is stdout
mov ecx, newline
mov edx, 3 ; Length of the newline character
int 0x80 ; Call kernel
; Convert the entered number to binary representation
mov eax, [number]
mov ebx, binary
call decimal_to_binary
; Print the binary representation
mov eax, 4 ; System call number for sys_write
mov ebx, 1 ; File descriptor 1 is stdout
mov ecx, binary_msg
mov edx, 23 ; Length of the binary message
int 0x80 ; Call kernel
mov eax, 4 ; System call number for sys_write
mov ebx, 1 ; File descriptor 1 is stdout
mov ecx, binary
mov edx, 8 ; Length of the binary representation
int 0x80 ; Call kernel
; Exit the program
mov eax, 1 ; System call number for sys_exit
xor ebx, ebx ; Exit code 0
int 0x80 ; Call kernel
decimal_to_binary:
; Convert decimal to binary and store the result in the buffer
mov ecx, 8
movzx ebx, ax
convert_loop:
shr ebx, 1
adc [ebx+ecx-1], '0'
loop convert_loop
ret
Editor is loading...
Leave a Comment