Printf без новой строки в сборке

Недавно я прочитал эту статью об использовании printf и scanf в сборке:

Значение intfmt: db "% d", 10, 0 в сборке

В частности, в нем говорится "В printf новая строка печатает новую строку, а затем (если вывод находится в строчном буферизированном режиме, что, вероятно, так и есть), очищает внутренний буфер вывода, чтобы вы действительно могли увидеть результат.Поэтому, когда вы удаляете 10, сброса не происходит, и вы не видите результат ».

Однако я не знаю, что делать, если мне не нужна новая строка после моего вывода в моем файле сборки. Вот простой тестовый файл, который я написал, чтобы попробовать распечатать без новой строки:

extern printf


LINUX        equ     80H      ; interupt number for entering Linux kernel
EXIT         equ     60       ; Linux system call 1 i.e. exit ()




section .data
    int_output_format: db "%ld", 0


segment .text
    global  main


main:
    mov r8, 10
    push rdi
    push rsi
    push r10
    push r9
    mov rsi, r8
    mov rdi, int_output_format
    xor rax, rax
    call printf
    pop r9
    pop r10
    pop rsi
    pop rdi
    call os_return      ; return to operating system


os_return:
    mov  rax, EXIT      ; Linux system call 1 i.e. exit ()
    mov  rdi, 0     ; Error code 0 i.e. no errors
    syscall     ; Interrupt Linux kernel 64-bit

, но, как видно из статьи, которую я прочитал, stdout не сбрасывается. Я подумал, может, мне нужно как-то смыть после вывода числа? Но я действительно не уверен.

Я использую ассемблер NASM.

Заранее спасибо!

6
задан Community 23 May 2017 в 12:23
поделиться