问题标签 [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.

0 投票
5 回答
1325 浏览

assembly - 什么会导致汇编语言程序显示“垃圾”?

我有一些代码应该显示一条短消息。这是相关的代码:

输出是:

这里发生了什么?

0 投票
6 回答
9621 浏览

visual-studio - 使用 Visual Studio 2008 汇编、链接、调试和执行 MASM 6.11 汇编代码

我想尽可能地使用 Visual Studio 2008,同时有效地编译/链接/构建/等代码,就好像所有这些构建过程都是由 MASM 6.11 提供的工具完成的一样。MASM 的确切版本无关紧要,只要它在 6.x 范围内,因为这是我的大学用来教授 16 位汇编的版本。

我对该主题进行了一些研究,得出的结论是有几种选择:

  1. 重新配置 VS 以使用与 MASM 6.11 本身相同的标志等调用 MASM 6.11 可执行文件。
  2. 创建要由 VS 调用的中间批处理文件,然后为 MASM 的链接器等调用正确的命令。
  3. 重新配置 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 进程已关闭,我深表歉意,但由于我试图在完成编写代码和生成可执行文件之间重现所有步骤,所以我不认为这很重要。

0 投票
2 回答
6275 浏览

assembly - 为什么我不能更改段寄存器的值?(MASM)

我决定自学汇编语言。

我意识到如果我尝试更改任何段寄存器的值,我的程序将无法编译。

我发现的每一篇文章都说我确实可以改变至少 4 个段寄存器的值,那么给出了什么?

我真的只对为什么在这一点上感兴趣,我没有任何真正的目的来更改这些地址。

0 投票
7 回答
17801 浏览

linux - Linux下的MASM?

有没有办法让我在 Linux 下使用MASM 。即使是坚韧的 NASM 在 Linux 下也很流行,但对于代码的某些指令风格来说,它仍然存在差异。

0 投票
3 回答
580 浏览

runtime - zlib + masm

zlib 可以在没有所有 c 运行时库(如 msvcrt.dll 和许多其他库)的情况下与 masm 一起使用吗?如果是这样,你能告诉我怎么做吗?

0 投票
1 回答
2064 浏览

performance - 我如何故意从主内存与缓存中读取?

所以我正在学习汇编,我们有一个任务是找到从内存读取和从缓存读取之间的时间差。我们必须通过创建 2 个循环并对它们进行计时来做到这一点。(一个从主存读取,另一个从缓存中读取)。问题是,我不知道也找不到任何告诉我如何从缓存或主内存中读取的东西=/。你们能帮帮我吗?我在 MASM32 中这样做。我了解如何制作循环以及大多数汇编语言,但我就是无法阅读 =/


编辑:

我有一个问题,我已经这样做了......

……这样可以吗?


编辑2:

那么,我不打算撬,感谢您的帮助,我还有另一个问题,因为这是我必须做的两个循环。我需要以某种方式比较它们,我一直在寻找计时器指令,但我没有找到任何我只找到的:timeGetTimeGetTickCountPerformance Counter但据我了解,这些指令返回系统时间而不是时间循环完成。有没有办法真正做我想做的事?还是我需要考虑另一种方式?

此外,如果我给出各种“mov”指令,可以在第二个循环中读取不同的寄存器(不从缓存中读取的寄存器)吗?还是我完全不在这儿?

很抱歉所有这些问题,但再次感谢您的帮助。

0 投票
1 回答
5530 浏览

syntax - 组装原型说明

我在 MASM32 Assembly 中写了一个作业,我几乎完成了它,但我有 2 个问题我似乎无法回答。首先,当我编译时,我收到消息:

INVOKE 需要程序原型

&

无效的指令操作数

首先是由于这段代码:

现在,我知道了

INVOKE 指令必须在被调用过程的 PROTO 语句之前。

但即使我发现了 PROTO 语句的语法:

我不明白我应该写什么才能使它工作,我什至不知道是什么导致了第二个错误或如何修复它......=/


编辑

我已经有了这些库,还有这些:

我在 Windows Vista 下工作,以防万一也有帮助。


编辑 2

如果我在 .data 之后写 Freq :QWORD 我会收到以下错误消息:

使用假定为 ERROR 的寄存器

还有我应该在哪里添加

据我所知,这没有出错,但我仍然不确定是否有任何更改(我将它放在 .data 之前和库之后)。

0 投票
3 回答
4070 浏览

assembly - MASM32 循环

我试图在 Windows Vista 下运行的 masm32 中创建一个循环,但是我这样做了,即使它实际上完成了循环,它也会崩溃,我看不出有什么明显的原因......任何想法?


编辑

做过

还是崩溃...

0 投票
2 回答
29999 浏览

pointers - dword ptr 用法混乱

如果我们使用汇编语言

那么就是复制ebx指向的值(ebx包含的是地址值,不是实际值,这条指令复制的是地址中的实际值)?

如果我们使用

那么这意味着将变量“some_variable”本身的值复制到eax,而不是复制变量“some_variable”指向的值?

我的理解正确吗?

如果是,我很困惑为什么相同的汇编指令有两种不同的含义——在第一种情况下有一个间接级别,但在第二种情况下没有额外的间接级别。

任何意见?

编辑:

并非每个 [] 都不会产生任何影响,例如,指令 xchg 将采用一个间接级别,它加载 edx 指向的值。

可以从以下位置找到完整的源代码,

http://www.codeproject.com/KB/threads/spinlocks.aspx

0 投票
1 回答
705 浏览

assembly - 如何在 MASM 程序集中将十进制数转换为 REAL10?

现在我将包含十进制数的字符串转换为整数(暂时忽略小数点),将其加载到 ST(0) 中,然后除以十的正确幂来计算小数点。这看起来很圆,需要我有一个查找表来查找 10 的某些幂。有没有更好的方法来做到这一点?