问题标签 [masm]
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.
assembly - 什么会导致汇编语言程序显示“垃圾”?
我有一些代码应该显示一条短消息。这是相关的代码:
输出是:
这里发生了什么?
visual-studio - 使用 Visual Studio 2008 汇编、链接、调试和执行 MASM 6.11 汇编代码
我想尽可能地使用 Visual Studio 2008,同时有效地编译/链接/构建/等代码,就好像所有这些构建过程都是由 MASM 6.11 提供的工具完成的一样。MASM 的确切版本无关紧要,只要它在 6.x 范围内,因为这是我的大学用来教授 16 位汇编的版本。
我对该主题进行了一些研究,得出的结论是有几种选择:
- 重新配置 VS 以使用与 MASM 6.11 本身相同的标志等调用 MASM 6.11 可执行文件。
- 创建要由 VS 调用的中间批处理文件,然后为 MASM 的链接器等调用正确的命令。
- 重新配置 VS 的内置构建工具/规则(汇编器、链接器等)以提供与 MASM 6.11 使用的环境相同的环境。
当我意识到 VS 的“外部工具”界面中可用的选项可能不足以正确调用 MASM 的构建工具时,选项 (2) 被提出,因此解释 VS 传递参数的严格方法的批处理文件可能会有所帮助,因为很多我学习如何使这项工作涉及我从命令提示符手动调用 ML.exe、LINK.exe 等。
以下是几个可能有助于回答我的问题的链接。请记住,我已经阅读了所有内容,但没有一个是实际的解决方案。我只能希望我指定的 MASM 6.11 不会阻止任何人提供可能更普遍的答案。
与选项(2)类似的方法,但线程上的用户无法联系:http:
//www.codeguru.com/forum/archive/index.php/t-284051.html
(另外,我对中间批处理文件的必要性)
对我的问题的过时解释:
http ://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html
可能是我最接近最终解决方案的东西,但指的是除 MASM 之外的工具套件,还使用批处理文件:
http ://www.kipirvine.com/asm/gettingStarted/index.htm#16 -少量
如果我在代码的每个步骤中使用的工具的术语 - > exe 进程已关闭,我深表歉意,但由于我试图在完成编写代码和生成可执行文件之间重现所有步骤,所以我不认为这很重要。
assembly - 为什么我不能更改段寄存器的值?(MASM)
我决定自学汇编语言。
我意识到如果我尝试更改任何段寄存器的值,我的程序将无法编译。
我发现的每一篇文章都说我确实可以改变至少 4 个段寄存器的值,那么给出了什么?
我真的只对为什么在这一点上感兴趣,我没有任何真正的目的来更改这些地址。
linux - Linux下的MASM?
有没有办法让我在 Linux 下使用MASM 。即使是坚韧的 NASM 在 Linux 下也很流行,但对于代码的某些指令风格来说,它仍然存在差异。
runtime - zlib + masm
zlib 可以在没有所有 c 运行时库(如 msvcrt.dll 和许多其他库)的情况下与 masm 一起使用吗?如果是这样,你能告诉我怎么做吗?
performance - 我如何故意从主内存与缓存中读取?
所以我正在学习汇编,我们有一个任务是找到从内存读取和从缓存读取之间的时间差。我们必须通过创建 2 个循环并对它们进行计时来做到这一点。(一个从主存读取,另一个从缓存中读取)。问题是,我不知道也找不到任何告诉我如何从缓存或主内存中读取的东西=/。你们能帮帮我吗?我在 MASM32 中这样做。我了解如何制作循环以及大多数汇编语言,但我就是无法阅读 =/
编辑:
我有一个问题,我已经这样做了......
……这样可以吗?
编辑2:
那么,我不打算撬,感谢您的帮助,我还有另一个问题,因为这是我必须做的两个循环。我需要以某种方式比较它们,我一直在寻找计时器指令,但我没有找到任何我只找到的:timeGetTime,GetTickCount和Performance Counter但据我了解,这些指令返回系统时间而不是时间循环完成。有没有办法真正做我想做的事?还是我需要考虑另一种方式?
此外,如果我给出各种“mov”指令,可以在第二个循环中读取不同的寄存器(不从缓存中读取的寄存器)吗?还是我完全不在这儿?
很抱歉所有这些问题,但再次感谢您的帮助。
syntax - 组装原型说明
我在 MASM32 Assembly 中写了一个作业,我几乎完成了它,但我有 2 个问题我似乎无法回答。首先,当我编译时,我收到消息:
INVOKE 需要程序原型
&
无效的指令操作数
首先是由于这段代码:
现在,我知道了
INVOKE 指令必须在被调用过程的 PROTO 语句之前。
但即使我发现了 PROTO 语句的语法:
我不明白我应该写什么才能使它工作,我什至不知道是什么导致了第二个错误或如何修复它......=/
编辑
我已经有了这些库,还有这些:
我在 Windows Vista 下工作,以防万一也有帮助。
编辑 2
如果我在 .data 之后写 Freq :QWORD 我会收到以下错误消息:
使用假定为 ERROR 的寄存器
还有我应该在哪里添加
据我所知,这没有出错,但我仍然不确定是否有任何更改(我将它放在 .data 之前和库之后)。
assembly - MASM32 循环
我试图在 Windows Vista 下运行的 masm32 中创建一个循环,但是我这样做了,即使它实际上完成了循环,它也会崩溃,我看不出有什么明显的原因......任何想法?
编辑
做过
还是崩溃...
pointers - dword ptr 用法混乱
如果我们使用汇编语言
那么就是复制ebx指向的值(ebx包含的是地址值,不是实际值,这条指令复制的是地址中的实际值)?
如果我们使用
那么这意味着将变量“some_variable”本身的值复制到eax,而不是复制变量“some_variable”指向的值?
我的理解正确吗?
如果是,我很困惑为什么相同的汇编指令有两种不同的含义——在第一种情况下有一个间接级别,但在第二种情况下没有额外的间接级别。
任何意见?
编辑:
并非每个 [] 都不会产生任何影响,例如,指令 xchg 将采用一个间接级别,它加载 edx 指向的值。
可以从以下位置找到完整的源代码,
assembly - 如何在 MASM 程序集中将十进制数转换为 REAL10?
现在我将包含十进制数的字符串转换为整数(暂时忽略小数点),将其加载到 ST(0) 中,然后除以十的正确幂来计算小数点。这看起来很圆,需要我有一个查找表来查找 10 的某些幂。有没有更好的方法来做到这一点?