assembly相关内容

Delphi中的Fast Swap64函数

我使用以下函数交换(无符号)64位整数值: function Swap64(I: Int64): Int64; begin Int64Rec(Result).Bytes[0] := Int64Rec(I).Bytes[7]; Int64Rec(Result).Bytes[1] := Int64Rec(I).Bytes[6]; Int64Rec(Result).Bytes[2] : ..
发布时间:2022-09-23 17:34:54 其他开发

使用外壳代码调用x86本地函数

我想使用将流重定向到本地函数,然后使用外壳代码返回到原始函数。 我定义了两个简单的函数,并使用objump来获取它们的汇编代码: // unsigned char *g_code = "x55x48x89xe5xb8x2ax00x00x00x5dxc3"; int g() { return 42; } // unsigned char *f_code_original = "x5 ..
发布时间:2022-09-21 10:43:38 其他开发

CreateProcessA函数在MASM64(ml64.exe)中不起作用

我想编写启动另一个程序(进程)的程序。我使用的是来自Visual Studio 2015的MASM64(ml64.exe)。 程序不工作。没有显示任何内容。在调试器中,我遇到访问冲突。 我不知道我的代码出了什么问题。 我的代码: extrn ExitProcess : proc extrn MessageBoxA : proc extrn CreateProcessA : ..
发布时间:2022-09-05 23:22:36 其他开发

将浮点数相乘和相加

我有一项任务是将一些C++代码转换为ASM,我想知道我的想法是否有意义。首先,我会将整数转换为浮点数。我想得到数组数据到SSE寄存器,但这里有问题,因为我只想要3而不是4个整数,有什么方法可以克服这个问题吗?然后,我将使用CVTDQ2PS将这些整数转换为浮点数,并将这些数字保存在内存中。对于像0.393这样的常量数字,我会做3个浮点数的矢量,然后我会做同样的操作三次,所以我只考虑sepiaRed。 ..
发布时间:2022-09-05 23:01:41 C/C++开发

在Irvine32库中使用MASM打印数组

我的程序接受4个整数,并假定将它们显示给用户。在打印值时,我没有得到预期的结果。我正在将MASM与Kip的Irvine32 library 一起使用 我的代码是: include irvine32.inc .data msg byte "Enter a number",0 arr dword 4 dup(?) len=($-arr)/4 .code main PROC mov e ..
发布时间:2022-09-05 22:52:53 其他开发

在程序集文件内调用C++函数

这是我第一次问,所以我将在这里尽我最大的努力,但我在一项汇编任务中遇到了麻烦,在该任务中,我获得了一个.cpp文件(如下所示),并且必须创建一个包含Multiply、Square和Divide函数的.asm文件。我有一个问题,那就是在平方和乘法函数完成后,我必须调用PrintResult来显示答案。对于Divide,成功的除法返回1,不成功的除法返回0并调用PrintResult以显示失败消息。我 ..
发布时间:2022-09-05 22:45:01 C/C++开发

数组的偏移量是如何表示数组的起始地址的

考虑汇编代码-mov edi, offset newarray 据我所知,这将把newarray的地址放入寄存器edi 我不明白的是offset这个词的英文意思是什么? 适合这里。 推荐答案 x86内存地址的格式为segment:offset,其中偏移量部分位于普通(通用)寄存器中,如edi(或64位代码中的rdi)。 在我们使用平面内存模型的现代系统中,segment基数始 ..
发布时间:2022-09-05 22:29:35 其他开发

指令操作数必须具有相同大小的错误

我在数据段中定义了数组,如-myArray byte 01, 03, 02, 05 在代码中,我有一行mov eax, BYTE PTR myArray[ecx]汇编器在这里抛出一个构建错误 指令操作数的大小必须相同 这可能是什么原因呢?我该怎么解决这件事。我想循环遍历此数组并打印它的 元素 TITLE Subtract Two Nums (SubTwoNums.asm) ; Thi ..
发布时间:2022-09-05 22:15:25 其他开发

汇编语言编号:MOV AX、1 ASCII或整数

与 num db 1 mov ax,1 和mov ax, num 执行mov ax,1时是ASCII还是整数? 我的意思是,数字不是从键盘插入的,它是预定义的,它可以要求将其转换为整数吗?是ASCII吗? 推荐答案 ASCII是一种编码类型,即您应该如何解释某些数值,如“33是感叹号”... 但CPU不知道ASCII,mov al,33只是将al寄存器设置为位模 ..
发布时间:2022-09-05 21:57:37 其他开发

Visual Studio 2019-MASM-32位程序集-Hello World

我通过&MIPS汇编语言学习了汇编语言编程的概念。 我写了几个程序,像斐波那契,堆栈相关的东西等等。 现在,我要介绍用于.386指令集的下一级32位Windows程序集。 这是我已经拥有的。 .386 .model flat, stdcall .stack 4096 ExitProcess PROTO, deExitCode:DWORD .data msg db "Hello, Wo ..
发布时间:2022-09-05 21:38:58 其他开发

如何打印数组的内容?

我正在尝试使用汇编语言打印数组的内容,如下所示。 我可以编译代码,但无法运行它。 我应该如何修复代码以打印数组内容? TITLE arrayFill_example (arrayFill_ex.asm) INCLUDE Irvine32.inc .data count = 5 array DWORD count DUP(?) arraySize = ($ ..
发布时间:2022-09-05 21:30:25 其他开发

在MASM中调用C++函数

我正在开发一个程序,该程序将使用MASM调用一些C++函数。我在一个单独的文件中定义了对2个整数求和并显示输出。 目前,我无法让‘main.cpp’运行asmMain()从‘main.cpp’调用函数。 code.asm ; --------------------------------------- promptFirst PROTO C promptSecond ..
发布时间:2022-09-05 21:12:27 C/C++开发

ZF未因汇编语言中的MUL指令而设置

我使用masm615汇编程序和TextPad作为编辑器。我正在写32位汇编语言程序。在程序中,由于mul指令,我试图设置零标志,但它不起作用。 谁能告诉我为什么eax寄存器中的结果是零,而零标志是清零的? include irvine32.inc .data .code main proc xor eax,eax call dumpreg ..
发布时间:2022-09-05 20:49:40 其他开发

汇编语言8086这段代码是什么意思?

我有这个代码,我想问一下如何读取它,以了解程序到达第24行后AX内部的值是什么 在循环内,当 MOV AX,[SP+4d] 它会改变AX的值吗?到SP+4 我知道在节目结束时,斧头是15的六角形,只是想知道为什么? 非常感谢 推荐答案 可能您的老师喜欢欺骗您? mov ax, [sp + 4d]和mov [sp + 4d], ax指令不可编码(*)。它们的语法是错误的,因为SP寄存器 ..
发布时间:2022-08-23 22:26:34 其他开发