草庐IT

IDA汇编

全部标签

汇编语言(32位除法、分支结构、循环结构,奇偶校验,ascii转换,功能号调用)

题目:1)顺序结构:编写一个32位无符号数除法的程序。要求将存放在NUM1中的32位无符号数与存放在NUM2中的16位无符号数相除,结果存放在NUM3和NUM4中。根据题目要求,应把存放在数据段内的被除数NUM1定义为32位,除数NUM2定义为16位,商NUM3定义为16位,余数NUM4定义为16位。2)分支结构:编写一个字符比较程序,比较3个无符号字节数A,B,C的大小,并根据比较结果对变量K赋值:如果3个数不相等,则K=0;如果3个数中有两个相等,则K=1;如果3个数都相等,则K=2。3)循环结构:将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个

Visual Studio 2022 MASM x64汇编hello world以及调试(Console版 + Windows版)

本文介绍使用VisualStudio2022的MASM开发x64汇编程序helloworld的环境配置和汇编代码,作为学习CPU指令的起点。分两个版本的helloworld,一个是console版本,另一个是windows版本。第1步:安装首先安装visualstudiocommunity2022,下载地址https://visualstudio.microsoft.com/,安装时选择C++开发模块第2步:新建项目,配置项目安装好以后新建项目,项目类型选择C++ console emptyproject创建好项目以后右击项目,点击生成依赖项,生成自定义,勾选masm,确定第3步:Window

c++ - 链接器如何解析汇编代码中的符号

我想知道链接器如何解析以下汇编代码中的printf符号。#includevoidmain(){printf("Hello");}.file"test.c".def___main;.scl2;.type32;.endef.section.rdata,"dr"LC0:.ascii"Hello\0".text.globl_main.def_main;.scl2;.type32;.endef_main:pushl%ebpmovl%esp,%ebpsubl$8,%espandl$-16,%espmovl$0,%eaxaddl$15,%eaxaddl$15,%eaxshrl$4,%eaxsall$

Linux Mach-O 反汇编器

是否有任何Linux程序可以像objdump一样反汇编OSX通用x86/x86_64fatMach-O二进制文件?GNUbinutils的objdump支持ELF和WindowsPE文件,但不支持Mach-O。 最佳答案 据我所知,原生Darwin二进制工具是cctools的一部分包裹。它们没有与GNUbinutils相同的命令行语法或输出.但是,后来的binutils(即2.22)支持Mach-O格式。您可以获得这些预构建的工具名称前缀“g”,如前所述here.或者,您可以使用类似以下内容编译binutils:>./configu

Linux 汇编调试器

我需要一个在Linux上进行汇编的调试器。我对Linux上缺乏调试器感到非常惊讶!它应该具有各种功能,例如显示寄存器等等。我会使用GDB,但它对NASM不太友好。我宁愿让调试器有intel语法,但我可以做出牺牲。我试过kdb、gdb/ddd和ald。有谁知道其他的吗?不推荐strace,因为我超越了系统调用! 最佳答案 当你说gdb对NASM不友好时,我不确定你到底是什么意思。问题是gdb使用AT&T表示法来显示汇编程序。NASM使用英特尔符号。您可以在Google上找到一些差异。您可以配置gdb以使用Intel符号显示汇编器。命令

windows - FASM 汇编程序在退出前等待

这是我在FASM中使用的代码:formatPEconsoleentrymaininclude'..\MACRO\import32.inc'section'.data'datareadablewriteablemsgdb"привіт!",0dh,0ah,0;hilcl_setdb?section'.code'codereadableexecutablemain:;failwithoutsetlocalepushmsgcall[printf]popecx;succeedwithsetlocalepushmsgcall_liapnutypopecxpush0call[ExitProcess

windows - 如何在 64 位 Windows 中运行旧的 x86 DOS 汇编程序?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion几年前,我编写了一些x86DOS汇编程序作为批处理文件编程的辅助工具。程序很小;.COM版本大约有两三百个字节。我现在正在更新和创建这些程序的新版本;但是,.COM或.EXE可执行文件不能在64位Windows版本中运行。我需要知道最简单的方法来转换此类程序,以便它们在64位Windows中运行。我知道DosBox可能会这样做,但我需要我的程序在Wincmd.exe批处理文件中运行。有人可以帮

c++ - c++ by-ref参数传递如何在汇编中编译?

在大学后期,我有一门关于编译器的类(class)。我们为C的一个子集创建了一个编译器。我一直想知道在C++中如何将pass-by-ref函数调用编译成汇编。据我所知,传递值函数调用遵循以下过程:存储PP的地址将参数压入堆栈执行函数调用在函数中,从栈中弹出参数按引用传递有什么不同?(intvoid(int&);)编辑:我可能听起来完全迷失了,但如果你能帮助我,我将非常感激。大家的回答基本都是传地址,不传值。我明白这基本上就是传递指针的意思。那么,这两个函数的行为为何不同呢?:structA{intx;A(intv){x=v;}};intbyRef(A&v){v=A(3);return0;

c++ - 汇编中 64 位结果的最快阶乘实现

这不是作业,只是我想到的。所以,直接计算阶乘并不是很快;记忆化会有帮助,但如果结果适合32位或64位,则阶乘仅适用于输入0到12和20分别。所以……我们不妨使用一个查找表:nn!01112236424512067207504084032093628801036288001139916800124790016001362270208002^32=42949672961487178291200151.30767E+12162.09228E+13173.55687E+14186.40237E+15191.21645E+17202.4329E+182^64=1.84467E+19因此,假设我想

c++ - C++函数模板在汇编中是如何实现的?

我正在尝试使用汇编代码——具体来说是ARMv7-a来实现C++函数。现在遇到一个不知道C++函数模板应该怎样的程序在汇编中实现。我尝试使用-S-O1标志编译源代码以查看生成的程序集但无法理解。谁能给我一个简短的想法C++模板是否被翻译成汇编代码?只需使用以下简单功能举个例子:templateTf(Ta){returna+1;}如果您发现任何其他功能更容易解释,请这样做。谢谢! 最佳答案 正确措辞会有所帮助。这不是模板函数,它是函数模板...注意到区别了吗?模板,就是在实例化时生成代码。所以在这种情况下,如果您为int实例化您的f程序