精易论坛

标题: 汇编问题 [打印本页]

作者: 元老    时间: 2024-6-21 23:11
标题: 汇编问题
  
.global _start
.intel_syntax noprefix
.bss
digit: .skip 1
.text
_start:
mov rax,1234    # Print rax ' s integer value
mov r10,0
mov r8,10
Loop1:
xor rdx,rdx
div r8
inc r10
push rdx
cmp rax,0
jne Loop1
Loop2:
pop r9
mov rax,r9
call Print
dec r10
cmp r10,0
jne Loop2
mov rax,60
mov rdi,0
syscall
Print:
add rax,48
mov [digit],al
mov rax,1
mov rdi,1
lea rsi,digit
mov rdx,1
syscall
ret

将r10全部改成rcx会得到不正常的输出,调试发现rcx会被改变,那么是什么改变的rcx的中的数据?

作者: hxk12349    时间: 2024-6-21 23:11
RCX会被CALL内部影响,寄存器RAX、RCX、RDX、R8、R9、R10、R11和XMM0-XMM5由调用者保存
作者: 305698712    时间: 2024-6-21 23:35
虽然我不懂汇编但是我记得rcx是记录循环次数的  应该是loop用了rcx寄存器吧
作者: zainex    时间: 2024-6-21 23:59
大部分问题但凡查下官方手册都能解决:
https://www.intel.cn/content/www/cn/zh/search.html#q=架构手册






欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4