问题标签 [nasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
debugging - 如何调试汇编程序?
我有一个用程序集编写的程序,该程序因分段错误而崩溃。(代码无关紧要,但在这里。)
我的问题是如何用 GDB 调试汇编语言程序?
当我尝试在 GDB 中运行它并执行回溯时,我没有得到任何有意义的信息。(只是十六进制偏移量。)
如何调试程序?
(顺便说一句,如果这有帮助的话,我在 Ubuntu 上使用 NASM。)
linux - 如何在 x86 程序集中调用 fgets?
根据文档fgets()
,该函数采用三个参数:
- char * - 将保存输入的字符串
- int - 一个整数,表示要读取的最大字符数
- FILE * -
FILE *
要读取的流
我可以毫无问题地调用该函数。我只是push
将三个参数入栈,调用函数,并加ESP
12。
我的问题是参数#3。什么应该作为FILE *
标准输入传入?在 C 中,我可以使用stdin
,但我不知道 x86 程序集中的等价物是什么。
更新:我在 Linux 上使用 NASM。
assembly - 为什么 scanf 在提供双精度时返回 0.000000?
我有以下汇编代码(为 Linux 上的 NASM 编写):
当我组装并运行程序时,我得到了预期的提示。但是,无论我输入什么数字,输出始终是0.000000
.
我究竟做错了什么?
assembly - 使用汇编打印十六进制数字
我正在尝试学习 NASM 汇编,但我似乎在为高级语言中看似简单的东西而苦苦挣扎。
我使用的所有教科书都讨论了使用字符串——事实上,这似乎是他们最喜欢的东西之一。打印hello world,从大写变为小写等。
但是,我试图了解如何在 NASM 程序集中增加和打印十六进制数字,但不知道如何继续。例如,如果我想以十六进制打印 #1 - n,我将如何在不使用 C 库的情况下执行此操作(我已经能够找到使用的所有引用)?
我的主要想法是在 .data 部分中有一个变量,我将继续增加它。但是如何从这个位置提取十六进制值?我似乎需要先将其转换为字符串...?
任何建议或示例代码将不胜感激。
assembly - 汇编中的内存损坏?
我目前有一个汇编程序,它模仿 Linux 中的 hexdump 系统功能。本质上,它打印当前行号,将二进制值转换为十六进制字符串,并显示与十六进制字符串关联的当前 ASCII。
我的打印行号系统出现问题。该函数仅在代码的其他部分被注释掉时才起作用——否则会产生不正确的结果。但是,我不明白为什么代码的两部分应该相互影响,因为使用的寄存器已被清除。
当 PrintLineNum 函数工作时,它将当前行号打印到行的左侧
但是,当重新启用打印十六进制字符串的功能时,它开始“跳过”。
我不确定为什么打印十六进制字符串会影响行数——据我所知,这两个操作是独立的。任何建议、建议或改进都会有所帮助。请注意,其中一些代码来自 Duntemann 的“Assembly Language - Step by Step”。我刚刚添加了行号和 ASCII 打印输出。我在下面标记了有问题的代码部分。
感谢您的帮助!
linux - 在 ubuntu 上运行汇编代码
我试图运行的代码如下。我使用 nasm util 将其转换为目标文件。当我尝试执行时,它说“无法执行二进制文件”。
我运行命令:nasm -f elf -o helloworld.o helloworld.asm
这是我在汇编中的第一个程序,除了编译一些基本的 c 程序外,我没有使用 ubuntu 。我需要一些帮助谢谢大家。
assembly - Nasm,引导加载程序切换前景色和背景色
嘿,我正在使用 nasm 和虚拟机等编写引导加载程序。无论如何,我使用 vram 来显示由键 s、d、f、g 触发的背景和字体颜色变化。S 用背景颜色切换字体颜色。我知道如何做到这一点,但我不知道正确的方法。vram 设置为 2 个字节,第一个是字符,第二个是它的属性。这些是背景然后是字符颜色。所以我需要拿这些并切换它们。这将切换字体颜色和背景颜色。我如何用代码实际做到这一点?
第二个问题:我使用这个循环来检测键的我如何将这些键更改为 Ctrl + 键。
谢谢你。
assembly - nasm 随机数生成器函数
我需要一个用 nasm 编写的随机数生成器函数。我很抱歉问,但我找不到任何!
assembly - asm中传入参数时的字符串长度是多少?
我将 ac 文件中的两个字符串作为参数传递给 asm 文件。然后我将这些从堆栈移动到 ecx 和 edx。我怎么能确切地知道它们的长度是多少?像 c 中的 strlen(string) 一样吗?
operators - NASM 中的 MUL 运算符与 IMUL 运算符
MUL 运算符仅采用单操作数形式有什么原因吗?
IMUL 运算符可以采用三种不同的形式(一个、两个或三个操作数),这样更方便。从技术角度来看,我看不出 MUL 运算符不能采用二/三操作数形式的任何原因。