number:", 10
len equ $-prompt
size dq 3
section .bss
userinput resq 1
section .text
global _start
_start:
mov rcx, [size]
loop_1:
push rcx
; запрос ввода
mov rax, 1
mov rdi, 1
mov rsi, prompt
mov rdx, len
syscall
; обработка ввода
mov rax, 0
mov rdi, 0
mov rsi, userinput
mov rdx, 1 ; какой размер?
syscall
; вывод введенного значения
mov rax, 1
mov rdi, 1
mov rsi, userinput
mov rdx, 1 ; какой размер?
syscall
pop rcx
loop loop_1
mov rax, 60
xor rbx, rbx
syscall
И снова здравствуйте. Не могу найти (понять) какой нужно указывать размер при обработке пользовательского ввода и выводе введенного значения. Если ввожу двузначное число, то выводится только первая цифра. Подскажите, пожалуйста.
Стикер
Попробовал, не помогает. Вообще хочу ввести двузначное число и получить его на stdout. Если использую однозначные числа до 10, то все ок, с двузначными сложнее. NASM записывает их в переменную справа налево, т.е. 12 будет записано как 0x3231. Получается, что если я запишу значение ввода, например, в RBX, то нужно будет последовательно прочитать BL, напечатать, потом BH. Нет ли какого-нибудь трюка, чтобы напечатать сразу, а не делать в лоб?
Чевооо, почему справа налево
Обсуждают сегодня