如何翻译javas;out.println“;组装?不使用printf

如何翻译javas;out.println“;组装?不使用printf,java,linux,assembly,printf,nasm,Java,Linux,Assembly,Printf,Nasm,它应该在我使用gdb-tui文件名访问的调试器中工作,但没有任何结果。代码的其余部分做它应该做的,但不是打印出来的。我几乎什么都试过了。帮助?inta和inti是32位变量,因此适合处理32位寄存器(EAX和EDX)。在32位系统中,通常应避免使用16位寄存器(AX和CX)。使用32位寄存器或8位寄存器(AL,CL) 您忘记初始化CX,并且AX的初始化错误 SYS_WRITE syscall(int80h)在ECX中需要一个指向字符串的指针(您使用了一个立即字符)。因此,您必须首先存储字符,然后

它应该在我使用gdb-tui文件名访问的调试器中工作,但没有任何结果。代码的其余部分做它应该做的,但不是打印出来的。我几乎什么都试过了。帮助?

inta
inti
是32位变量,因此适合处理32位寄存器(
EAX
EDX
)。在32位系统中,通常应避免使用16位寄存器(
AX
CX
)。使用32位寄存器或8位寄存器(
AL
CL

您忘记初始化
CX
,并且
AX
的初始化错误

SYS_WRITE syscall(int80h)在
ECX
中需要一个指向字符串的指针(您使用了一个立即字符)。因此,您必须首先存储字符,然后将指针加载到
ECX
。此外,在
EDX
中,您必须加载要打印的正确的字符量

这一个有效:

cr equ 13
ld equ 10
STDOUT equ 1
SYS_WRITE equ 4

section .bss
    a resb 1

section .text
global _start
_start:
    mov [a], byte 0
    mov [a],ax
    start_for:
    cmp cx,20
    jge slutt_for
    cmp cx,10
    jge else
    inc ax
    jmp slutt_if
    else:
    dec ax
    slutt_if:
    inc cx
    jmp start_for
    slutt_for:


    mov ecx,eax    ; This is where I need help
    add ecx,'0'
    mov eax,4
    mov edx,5
    mov ebx,1
    int 80h        ; End where I need help
    mov eax,1
    int 80h
和。
cr equ 13
ld equ 10
STDOUT equ 1
SYS_WRITE equ 4

section .bss
    a resb 1

section .text
global _start
_start:
    mov [a], byte 0
    mov [a],ax
    start_for:
    cmp cx,20
    jge slutt_for
    cmp cx,10
    jge else
    inc ax
    jmp slutt_if
    else:
    dec ax
    slutt_if:
    inc cx
    jmp start_for
    slutt_for:


    mov ecx,eax    ; This is where I need help
    add ecx,'0'
    mov eax,4
    mov edx,5
    mov ebx,1
    int 80h        ; End where I need help
    mov eax,1
    int 80h
section .bss
    a resb 1

section .text
global _start
_start:
    xor eax, eax            ; a = 0
    xor cl, cl              ; i = 0

    start_for:
    cmp cl, 20
    jge slutt_for

    cmp cl, 10
    jge else
    inc eax                 ; a++
    jmp slutt_if

    else:
    dec eax                 ; a--

    slutt_if:
    inc cl                 ; i++
    jmp start_for

    slutt_for:
    add al, '0'
    mov [a], al
    mov ecx, a              ; Pointer to a

    write:
    mov eax, 4              ; SYS_WRITE
    mov edx, 1              ; Amount of chars to print
    mov ebx, 1              ; STDOUT
    int 80h

    exit:
    mov ebx, 0              ; return 0
    mov eax, 1
    int 80h