nasm

    0热度

    1回答

    因此,我目前正在跟随本教程https://www.tutorialspoint.com/assembly_programming/assembly_arithmetic_instructions.htm以及Im从中获得的是,为了将ASCII中的数字转换为小数。我必须用'0'减去它,然后执行数学运算,并将其与'0'相加,将其转换回ascii等效。然而,当数字超过9时,对于我来说这个问题就会出现。 我

    0热度

    1回答

    我想这一块C代码转换为64位NASM int gcd (int a, int b) { int c; while (a != 0) { c = a; a = b%a; b = c; } return b; } ,但我不知道在那里我的错误是,我想也许有一些关于栈组件我“M没有意识到这 是我做的 调用 push word[m

    1热度

    1回答

    我目前正在研究大学任务的基本操作系统。我正在使用x86汇编语言。 我似乎遇到了切换到引导加载程序第二阶段的问题,导致上面的错误,当我尝试在Bochs中运行应用程序时。从我的测试中,我认为错误是由于应用程序没有正确地从内存中读取程序而导致的,无论是由于引导加载程序第一阶段的错误还是makefile中的错误。我将包括这两个以下: 引导程序的第一阶段: BITS 16 ORG 7C00h jmp

    -1热度

    1回答

    我有两个数字的用户输入,num1和num2和num2是负数。 我需要显示这些数字的无符号的产品,但是当我使用mul,它赋予签署产品: mov eax, [num1] mov ebx, [num2] mul ebx 我输入num1 = 2 num2 = -2和输出是-4 我存储的号码。 bss num1 resd 1 num2 resd 1 任何帮助将不胜感激,不知道它是否是我存储的方

    1热度

    1回答

    我目前正在为一项测试而学习,而且我遇到了这个问题,出于某种原因,我似乎很难接受这个问题,我希望能在这里得到一些解释。 我在雅虎的答案找到了答案,但它没有解释,我真的不相信这是答案。它只是表明0040006Ah - 00400020h = 4A = 74字节。 问题是这样的: var1的地址是00400020h。 var1之后的下一个变量的地址是0040006Ah。 var1使用了多少字节? 如果我

    3热度

    1回答

    我正在尝试编写一个程序,它从文本文件中获取二进制输入并将其作为参数发送给汇编函数。该汇编函数必须将这个二进制输入打印到屏幕上。输入通过地址从c代码发送到汇编代码。 当我尝试组装我的asm文件时,在mov msg, [esp+8]行上出现“操作码和操作数的无效组合”错误。我想将我的char arg从堆栈复制到我的静态变量。为什么这不是一个有效的指令? 完整的代码是: segment .data

    0热度

    1回答

    我在Linux VM上使用x86汇编代码intel格式与NASM。 该程序应该占用空格分隔两位数字并打印出总和。我已经用GDB来看它,它在整个过程中都能正常工作,没有任何错误或者任何其他问题,除了它无声地拒绝打印结果。我是新来的汇编代码,所以我不知道我在这里做错了什么。 编辑:缩短代码只包含更多相关位。我认为。 ;Variables section .bss digit resb 1

    0热度

    3回答

    正如我所见,extern汇编代码中的WinAPI函数的名称有[email protected]。 @4部分的含义是什么,以及如何确定在@之后要使用哪个数字? 我知道这与我们链接的DLL有关,但在很多情况下,我们不知道在@之后使用了什么数字,这会导致许多令人讨厌的undefined reference错误。

    -1热度

    1回答

    我在NASM中编码时遇到了问题(我是这种语言的初学者)。我正在使用通过引用。当[ebp-2](用作计数器)中的值等于[ebp + 4](用户的编号)中的值时,代码应该终止。我期待'检查'打印5次,但输出是无限循环或打印n次'检查'。 这是我的代码的一部分,其中存在类似的情况: find_prime: mov ebp, esp sub esp, 2 mov ec

    0热度

    3回答

    假设我已经一个3元素数组中NASM strings: dw 0x00, 0x00, 0x00 ,我想要填充串的地址时,.data部内还限定,例如, hello_word: db "HelloWorld!", 0。 写入strings: dw hello_world, 0x00, 0x00是一个语法错误。 如何使用地址填充数组,以便我可以在运行时循环它,每次增加索引?