不显示控制台上的号码

No shows me the number on console

我在汇编程序中有以下代码:

控制台中没有显示任何内容,我希望你显示最终数字。

section .text
global _start
_start:

inicio:     
    mov ax,12345
    mov cx,5
    mov dx,0
imprime:
    mov bx,10
    div bx
    add dl,30h
    mov dh,0
    push dx
    mov dx,0

    loop imprime 
    mov cx,5
    imp:    
        mov ah,02h
        pop dx 
        int 0x80
        loop imp

mov rax, 60
mov rdi, 0
syscall

我把int 21h打印出来没留我,我改成int 0x80

警告,这个答案对你没有帮助,你需要的是获得一些调试器并学习使用它(gdb 在 *NIX 中几乎无处不在,所以学习一次会很好地为你服务。我什么都不记得了,所以我使用了一些 GUI 的东西,它几乎总是有一些错误,但是 "edb" 对我来说这个小的 asm 东西没问题。

这里有点固定linux你的64b汇编代码,对我有用:

; Kate build command (%f = file name, %n = name without extension):
; nasm -f elf64 -l %n.lst %f; ld -melf_x86_64 -o %n %n.o

section .data
    char_buffer db '_'  ; buffer to store characters to print

section .text
    global _start

_start:
    xor ecx,ecx     ; clear rcx! LOOP in 64b doesn't use only "cx"

    ; store 5 ASCII chars on stack (decimal format of value in ax)
    mov ax,12345
    mov cx,5
    mov dx,0
imprime:
    mov bx,10
    div bx
    add dl,30h
    mov dh,0
    push dx
    mov dx,0
    loop imprime 

    ; print 5 stored ASCII chars on stack
    mov cx,5
    mov rdi,1           ; stdout
    mov rsi,char_buffer ; memory buffer for number
imp:    
    pop dx
    mov [rsi],dl        ; update number in buffer
    mov rax, 1          ; sys_write
    mov rdx, 1          ; 1 byte length
    push rcx            ; rcx is not preserved by syscall
    syscall
    pop rcx             ; restore rcx for LOOP
    loop imp

    ; print new line
    mov [rsi],byte 10   ; NL char into buffer
    mov rax,1           ; sys_write
    ; other arguments are valid from previous call
    syscall

    ; sys_exit
    mov rax,60
    mov rdi,0
    syscall