我一直在尝试使用系统调用打印所有环境变量,我得到如下输出。但我的目标是将每个人打印成一个新的线条角色。我无法弄清楚如何做到这一点。有人可以帮我解决这个问题。
我的程序代码
BITS 64
%define STDOUT 1
%define SYS_WRITE 1
%define SYS_EXIT 60
section .rodata
msg: db '\n', 10, 0
len: equ 1
section .text
global _start
_start:
push rbp
mov rbp, rsp
mov r15, rsp
add r15, 32
.label1:
mov rsi, QWORD[r15]
mov rdi, rsi
call strlen
mov r10, rax
mov rax, SYS_WRITE
mov rdi, STDOUT
mov rdx, r10
syscall
mov rax, SYS_WRITE
mov rdi, STDOUT
mov rsi, msg
mov rdx, len
syscall
add r15, 8
cmp QWORD[r15], 0
je .label3
jmp .label1
.label3:
mov rax, SYS_EXIT
xor rdi, rdi
syscall
strlen:
push rbp
mov rbp, rsp
xor rax, rax
.cmploop:
cmp BYTE[rsi + rax], 0 ; check if current byte is null
je .cmpdone ; if yes, done
inc rax ; else increment length counter
jmp .cmploop ; and continue
.cmpdone:
leave
ret
我尝试添加一条只包含" \ n"但即使它不起作用。我不确定它是否也是对的。
输出我得到:
LANG=en_IN\DISPLAY=:0\XDG_VTNR=7\LOGNAME=haritha\LANGUAGE=en_IN:en\PWD=/home/haritha/Documents/SEM6/SSOC/assignments/ASS3/1\XAUTHORITY=/var/run/gdm3/auth-for-haritha-gbMdfN/database\XDG_SESSION_ID=1\DESKTOP_SESSION=default\XDG_SESSION_DESKTOP=default\GDMSESSION=default\GNOME_DESKTOP_SESSION_ID=this-is-deprecated\USERNAME=haritha\WINDOWPATH=7\DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-fiK2WG8pyF,guid=efdc721019644023675e56cd58a92340\VTE_VERSION=3801\XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/\GJS_DEBUG_TOPICS=JS ERROR;JS LOG\XDG_MENU_PREFIX=gnome-\GDM_LANG=en_IN\SHELL=/bin/zsh\GJS_DEBUG_OUTPUT=stderr\WINDOWID=37748742\TERM=xterm\SESSION_MANAGER=local/debian:@/tmp/.ICE-unix/2020,unix/debian:/tmp/.ICE-unix/2020\XDG_CURRENT_DESKTOP=GNOME\SSH_AUTH_SOCK=/run/user/1000/keyring/ssh\PATH=/home/haritha/.nvm/versions/node/v6.4.0/bin:/home/haritha/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games\SSH_AGENT_PID=2059\HOME=/home/haritha\XDG_SEAT=seat0\XDG_RUNTIME_DIR=/run/user/1000\GPG_AGENT_INFO=/run/user/1000/keyring/gpg:0:1\USER=haritha\SHLVL=1\OLDPWD=/home/haritha/Documents/SEM6/SSOC\ZSH=/home/haritha/.oh-my-zsh\PAGER=less\LESS=-R\LC_CTYPE=en_IN\LSCOLORS=Gxfxcxdxbxegedabagacad\LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:\NVM_DIR=/home/haritha/.nvm\NVM_CD_FLAGS=-q\NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist\NVM_IOJS_ORG_MIRROR=https://iojs.org/dist\MANPATH=/home/haritha/.nvm/versions/node/v6.4.0/share/man:/usr/local/man:/usr/local/share/man:/usr/share/man\NVM_PATH=/home/haritha/.nvm/versions/node/v6.4.0/lib/node\NVM_BIN=/home/haritha/.nvm/versions/node/v6.4.0/bin\_=/home/haritha/Documents/SEM6/SSOC/assignments/ASS3/1/./a.out\%