如何在 nasm 64 位中显示数据和地址

  • 本文关键字:显示 数据 地址 nasm nasm
  • 更新时间 :
  • 英文 :


我正在做一个实际作业。我已经制作了一个数组,我想以 (address: data 格式同时显示数据和地址。怎么做?我需要在代码中执行哪些更改?如何再次使用 rsi 显示地址?我的代码链接是:http://rextester.com/AQMJ86771

通常为

某人做作业不是好习惯,但因为你们离得很近,我会忍受

    %macro disp 2
        push    rsi
        push    rcx
        mov rax,1
        mov rdi,1
        mov rsi,%1
        mov rdx,%2
        syscall
        pop    rcx
        pop    rsi
    %endmacro
    section .data
        msg1 db "Menu : ",10
             db "1.NOWOS",10
             db "2.NOWS ",10
             db "3.OWOS ",10
             db "4.OWS  ",10
        l1 equ $-msg1
        newline db 0AH
        colon db ' : '
        src dq 01H,02H,03H,04h,05h
        dst dq 00h,00h,00h,00h,00h
    section .bss
        buff resb 16
        pcount resb 1
        ncount resb 1
    section .code
    global _start
    _start:
        disp msg1,l1
        mov rsi,src
        mov rcx,5
    back:
        mov     rax, rsi
        call    disp16num
        disp    colon, 3
        lodsq
        call    disp16num
        disp    newline,1
        loop    back
        mov rax,60
        mov rdi,0
        syscall
    disp16num:
       push    rcx
       push    rsi
       mov     rsi, buff
       mov     rcx, 16
       mov     rbx, rax
    back1:
       rol rbx,4
       mov al,bl
       and al,0FH
       cmp al,09H
       jbe add30
       add al,7H
    add30:
        add al,30H
        mov [rsi],al
        inc rsi
        loop back1
        disp buff,16
        pop     rsi
        pop     rcx
        ret

这将为您提供此输出。

菜单:
1.诺沃斯
2.现在
3.奥沃斯
4.欠薪
00000000006001B4 : 0000000000000001
00000000006001BC : 0000000000000002
00000000006001C4 : 0000000000000003
00000000006001CC : 0000000000000004
00000000006001D4 : 0000000000000005

最新更新