assembly相关内容
我使用以下函数交换(无符号)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] :
..
我想使用将流重定向到本地函数,然后使用外壳代码返回到原始函数。 我定义了两个简单的函数,并使用objump来获取它们的汇编代码: // unsigned char *g_code = "x55x48x89xe5xb8x2ax00x00x00x5dxc3"; int g() { return 42; } // unsigned char *f_code_original = "x5
..
我想编写启动另一个程序(进程)的程序。我使用的是来自Visual Studio 2015的MASM64(ml64.exe)。 程序不工作。没有显示任何内容。在调试器中,我遇到访问冲突。 我不知道我的代码出了什么问题。 我的代码: extrn ExitProcess : proc extrn MessageBoxA : proc extrn CreateProcessA :
..
作为ASM编程的初学者,我需要在汇编中得到2的38次方的结果,我需要您的帮助来理解为什么我的程序没有产生我需要的结果(它打印4个十进制): .386 .model flat, stdcall option casemap:none include masm32includewindows.inc include masm32includemsvcrt.inc includelib masm
..
我有一项任务是将一些C++代码转换为ASM,我想知道我的想法是否有意义。首先,我会将整数转换为浮点数。我想得到数组数据到SSE寄存器,但这里有问题,因为我只想要3而不是4个整数,有什么方法可以克服这个问题吗?然后,我将使用CVTDQ2PS将这些整数转换为浮点数,并将这些数字保存在内存中。对于像0.393这样的常量数字,我会做3个浮点数的矢量,然后我会做同样的操作三次,所以我只考虑sepiaRed。
..
我的程序接受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
..
这是我第一次问,所以我将在这里尽我最大的努力,但我在一项汇编任务中遇到了麻烦,在该任务中,我获得了一个.cpp文件(如下所示),并且必须创建一个包含Multiply、Square和Divide函数的.asm文件。我有一个问题,那就是在平方和乘法函数完成后,我必须调用PrintResult来显示答案。对于Divide,成功的除法返回1,不成功的除法返回0并调用PrintResult以显示失败消息。我
..
考虑汇编代码-mov edi, offset newarray 据我所知,这将把newarray的地址放入寄存器edi 我不明白的是offset这个词的英文意思是什么? 适合这里。 推荐答案 x86内存地址的格式为segment:offset,其中偏移量部分位于普通(通用)寄存器中,如edi(或64位代码中的rdi)。 在我们使用平面内存模型的现代系统中,segment基数始
..
有这么简单的assemblyWin 32程序: .386 .model flat, stdcall option casemap :none EXTERN printf :PROC ; declare printf .data HelloWorld db "Hello Wolrd!:-)", 0 .code start: sub esp, 4 push offset H
..
我在数据段中定义了数组,如-myArray byte 01, 03, 02, 05 在代码中,我有一行mov eax, BYTE PTR myArray[ecx]汇编器在这里抛出一个构建错误 指令操作数的大小必须相同 这可能是什么原因呢?我该怎么解决这件事。我想循环遍历此数组并打印它的 元素 TITLE Subtract Two Nums (SubTwoNums.asm) ; Thi
..
x86 CPU:MSVC(2010) 在下面的代码中EXTRN _printf:PROC是什么意思?为什么在";:之后我们使用一些";PROC";指令而不是";near或";far";? CONST SEGMENT $SG3830 DB 'hello, world', 0AH, 00H CONST ENDS PUBLIC
..
与 num db 1 mov ax,1 和mov ax, num 执行mov ax,1时是ASCII还是整数? 我的意思是,数字不是从键盘插入的,它是预定义的,它可以要求将其转换为整数吗?是ASCII吗? 推荐答案 ASCII是一种编码类型,即您应该如何解释某些数值,如“33是感叹号”... 但CPU不知道ASCII,mov al,33只是将al寄存器设置为位模
..
我正在用x64汇编和SIMD编写一些代码。 xmm15寄存器中打包了9个字节。为简单起见,让我们看一下以下代码: .data Masks BYTE 0, -1, 0, -1, 5, -1, 0, -1, 0 .code GetSumOfMasks proc movdqu xmm15, xmmword ptr [Masks] ; xmm15 now contains { 0,-1,0,-
..
我通过&MIPS汇编语言学习了汇编语言编程的概念。 我写了几个程序,像斐波那契,堆栈相关的东西等等。 现在,我要介绍用于.386指令集的下一级32位Windows程序集。 这是我已经拥有的。 .386 .model flat, stdcall .stack 4096 ExitProcess PROTO, deExitCode:DWORD .data msg db "Hello, Wo
..
我正在尝试使用汇编语言打印数组的内容,如下所示。 我可以编译代码,但无法运行它。 我应该如何修复代码以打印数组内容? TITLE arrayFill_example (arrayFill_ex.asm) INCLUDE Irvine32.inc .data count = 5 array DWORD count DUP(?) arraySize = ($
..
使用MASM for ml64,我正在尝试将R9和R10中的两个无符号qword作为无符号128B int移到xmm0中 到目前为止,我想出了这个: mov r9, 111 ;low qword for test mov r10, 222 ;high qword for test movq xmm0, r9 ;move
..
我正在开发一个程序,该程序将使用MASM调用一些C++函数。我在一个单独的文件中定义了对2个整数求和并显示输出。 目前,我无法让‘main.cpp’运行asmMain()从‘main.cpp’调用函数。 code.asm ; --------------------------------------- promptFirst PROTO C promptSecond
..
我尝试构建此代码时遇到此错误: 1>------ Build started: Project: Project, Configuration: Debug Win32 ------ 1> Assembling [Inputs]... 1>assign2.asm(12): error A2022: instruction operands must be the same size 1>a
..
我使用masm615汇编程序和TextPad作为编辑器。我正在写32位汇编语言程序。在程序中,由于mul指令,我试图设置零标志,但它不起作用。 谁能告诉我为什么eax寄存器中的结果是零,而零标志是清零的? include irvine32.inc .data .code main proc xor eax,eax call dumpreg
..
我有这个代码,我想问一下如何读取它,以了解程序到达第24行后AX内部的值是什么 在循环内,当 MOV AX,[SP+4d] 它会改变AX的值吗?到SP+4 我知道在节目结束时,斧头是15的六角形,只是想知道为什么? 非常感谢 推荐答案 可能您的老师喜欢欺骗您? mov ax, [sp + 4d]和mov [sp + 4d], ax指令不可编码(*)。它们的语法是错误的,因为SP寄存器
..