我正在尝试在macOS上的汇编x86_64中打印整数。我已经知道大约有3/4的答案,但我无法解决我的问题。
现在,我会满意地把它倒着印出来。这是代码:
section .bss
3 number_back resb 3
4 number_right resb 3
5
6 section .text
7 global _main
8 _main:
9 mov rax, 123
10 call _get_backwards
11
12 mov rax, 0x2000004
13 mov rdi, 1
14 mov rsi, number_back
15 mov rdx, 3
16 syscall
17
18 mov rax, 0x2000001
19 xor rdi, rdi
20 syscall
21
22 _get_backwards:
23 xor rdx, rdx
24 mov rcx, 10
25 div rcx
26 add rdx, 48
27 mov [rel number_back], rdx
28
29 loop:
30 inc number_back
31 cmp rax, 0
32 jne _get_backwards
33 ret
error: invalid combination of opcode and operands
提前感谢。
您不能递增标签,因为它没有存储在内存中的任何位置,只是一个命名的别名,它将被您分配的内存的地址替换。这样做的方法是有一个额外的寄存器(RBX
现在是免费的)来存储您需要添加到地址中的偏移量。代码的另一个问题是,您将在向后数中存储值的(十)基数表示形式为word,这将超过您的容量。我猜您正在尝试以“正常”的左到右方式打印您的数字。如果你想这样做,你应该做的是保留更多的空间(3bytes=
section .bss
number_back resb 8; 8 characters
number_right resb 3
section .text
global _main
_main:
mov rax, 123
mov rbx, 0
call _get_backwards
mov rax, 0x2000004
mov rdi, 1
mov rsi, number_back
mov rdx, 3
syscall
mov rax, 0x2000001
xor rdi, rdi
syscall
_get_backwards:
xor rdx, rdx
mov rcx, 10
div rcx
add rdx, 48
mov [rel number_back + rbx], rdx
loop:
inc rbx
cmp rax, 0
jne _get_backwards
ret
应该可以工作(对不起,我这台计算机上没有nami编译器)。
问题内容: 我有以下代码可以打印传递给的参数数量。请注意该部分中的。我已经包括了新行,就像 C中一样 ,但是它不是打印新行而是打印: 参数数量:1 \ n 我的代码是: 我知道在0和“ Number …”之后包含10 将打印它,但我想这样做。我用 NASM 汇编代码,然后通过 GCC 将其链接以创建我的可执行文件。 问题答案: 当您在 NASM中 对字符串使用双引号或双引号时,它不接受 C 样式转
问题内容: 我正在尝试编写一个小程序,该程序在数组中打印出不同的数字。例如,如果用户输入1,1,3,5,7,4,3,则该程序将仅打印出1,3,5,7,4。 我在else if函数中遇到错误。 到目前为止,这是我的代码: 问题答案: 首先,“ ”语句是不正确的,因为您没有为if提供任何条件(如果需要if,则需要编写“ ”)。 其次,您不能 在内部 循环中决定是否应打印一个值:代码的工作方式是 为每个
在这个链接中,rustyx提到他使用了一个调试虚拟机和以下标志来获取java字节码的汇编指令 我用sudo apt get install openjdk-17-dbg安装了调试虚拟机 我使用命令java-XX:UnlockDiagnosticVMOptions-XX:PrintAssembly Main 我习惯用C和gdb来完成这项工作,但无法用java来完成。printAssembly只打印指
问题内容: 我想读取捕获的异常的完整堆栈跟踪。 例如: 我想阅读“ … 23更多”,以了解异常的来源。 问题答案: 答案很简单,这些行已经在stacktrace中了:) 基本上,以下情况正在发生:
本文向大家介绍汇编语言实现打印杨辉三角,包括了汇编语言实现打印杨辉三角的使用技巧和注意事项,需要的朋友参考一下 计算杨辉三角形的前n(n<=10)行,并显示在屏幕上。要求计算及显示 用子程序形式实现。其显示格式为: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
如何使用GCC在C99中打印f和? 我搜索了其他建议使用的帖子,但它给出了以下警告: 警告#1:格式为[-Wformat]| 的未知转换类型字符“l”#警告#2:格式为[-Wformat extra args]的参数太多| 进行以下尝试: