标签: masm

MASM/NASM差异

NASM和MASM汇编程序之间的语法差异是什么?

x86 assembly masm nasm

39
推荐指数
1
解决办法
2万
查看次数

ASM:MASM,NASM,FASM?

我已经完成了ARM汇编编程,我想学习英特尔汇编程序.我一直听到所提到的所有这些不同的F/M/N/ASM-但我不确定它们与我希望实现的目标有什么关系?

有人可以帮我确定一下我需要学习如何在英特尔架构上编程低级别吗?我不太明白"不同的汇编程序"如何关联,x86,IA64,AMD64/x86-64等更是如此?

如果它有任何帮助,我最熟悉Eclipse和Visual Studio 08/10 IDE.

assembly intel masm nasm fasm

25
推荐指数
1
解决办法
2万
查看次数

16位汇编代码中的OFFSET是什么意思?

我将通过一些16位实模式的汇编代码示例.

我遇到过这样的问题:

    mov    bx, cs
    mov    ds, bx
    mov    si, OFFSET value1
    pop    es
    mov    di, OFFSET value2
Run Code Online (Sandbox Code Playgroud)

这是做什么的?"OFFSET"有什么作用?

x86 assembly masm 16-bit x86-16

16
推荐指数
2
解决办法
7万
查看次数

MOV src dest(或)MOV dest src?

MOV可能是每个人在学习ASM时学习的第一条指令.

刚才我在GNU/Linux中遇到过一本关于IA32架构的汇编语言编程作者:Rajat Moona说:

alt text http://i.imagehost.org/0897/mov.gif

但我知道它是MOV dest, src.它像"装载destsrc".甚至维基也说同样的话.

我不是说作者错了.我知道他是对的.但我在这里错过了什么?

顺便说一句......他正在使用GCC as来组装这些指令.但这不应该改变指令语法吗?

x86 assembly masm gnu-assembler nasm

16
推荐指数
2
解决办法
1万
查看次数

Visual Studio中的外部程序集文件

我搜索并发现我无法__asm在视觉工作室的x64中使用.相反,我必须使用外部程序集文件.

如何将外部程序集文件添加到我的win32控制台项目?

如何编译它们?

你能一步一步解释吗?

x86 assembly x86-64 masm visual-studio

15
推荐指数
1
解决办法
1万
查看次数

Linux下的MASM?

有没有办法在Linux下使用MASM.即使是强硬的NASM在Linux下也很受欢迎,但它仍然因代码的某些指令风格而异.

linux masm

13
推荐指数
4
解决办法
1万
查看次数

MASM修复DLL中的64位截断

我正在使用Adobe Flash ocx将其加载到我的C++程序中.ocx应该是64位但由于某种原因,当我使用x64平台编译时它会出现问题.我已经阅读了这篇文章,发现有些函数可能会接收DWORD userData而不是void* userData通过某种结构,然后将其转换为对象指针.这在32位环境中正常工作,但在64位崩溃.

在导致崩溃的ocx内部的函数调用的反汇编有以下几行:

mov         ecx,r8d 
Run Code Online (Sandbox Code Playgroud)

第一个操作仅将低32位复制R8DECX(ECX为32位).

cmp         dword ptr [rcx+11BCh],0 
Run Code Online (Sandbox Code Playgroud)

第二个操作访问64位寄存器,其中低32位包含正确的地址,高32位包含一些垃圾.当然,导致崩溃.

我已经读过一个可能的解决方案是执行以下操作:

  1. 创建一个包含以下代码的asm文件:

    nop 
    nop 
    nop 
    
    mov ecx,r8d 
    cmp dword ptr [rcx+11BCh],0 
    
    nop 
    nop 
    nop 
    
    mov rcx,r8d   // I've replaced ecx with rcx here 
    cmp dword ptr [rcx+11BCh],0 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用此asm文件和MASM.exe构建obj文件

  3. 使用十六进制编辑器打开obj文件,找到代表nop的90
  4. 在Flash ocx中,找到nops之间的第一个字节字符串,并将其替换为nops之后的新字节字符串.这会将它从32位更改为64位函数调用.

问题

我通过制作以下asm文件并使用ml64.exe构建它来尝试此操作(我没有masm.exe但我认为ml.exe是它的新32位版本,并且此代码仅使用ml64构建.exe,可能是因为只有64位运算符?):

TITLE: Print String Assembly Program (test.asm)

.Code
main Proc
nop 
nop 
nop 

mov ecx,r8d 
cmp dword ptr [rcx+11BCh],0 

nop 
nop 
nop 

mov rcx,r8   
cmp …
Run Code Online (Sandbox Code Playgroud)

c++ flash dll assembly masm

13
推荐指数
1
解决办法
599
查看次数

浮点计划提供无效结果

最近的编辑

我试图在x86 MASM上运行这个浮点二次方程式程序.这段代码可以在Kip Irvine x86教科书中找到,我想看看它是如何工作的.以下代码如下:

include irvine32.inc 
.DATA
a REAL4 3.0
b REAL4 7.0
cc REAL4 2.0
posx REAL4 0.0
negx REAL4 0.0

.CODE


main proc 
; Solve quadratic equation - no error checking
; The formula is: -b +/- squareroot(b2 - 4ac) / (2a)
fld1 ; Get constants 2 and 4
fadd st,st ; 2 at bottom
fld st ; Copy it
fmul a ; = 2a

fmul st(1),st ; = 4a
fxch ; Exchange
fmul cc ; = …
Run Code Online (Sandbox Code Playgroud)

floating-point x86 assembly masm irvine32

13
推荐指数
1
解决办法
819
查看次数

lea和offset之间的差异

ar db "Defference $"
Run Code Online (Sandbox Code Playgroud)

有什么区别

mov dx,offset ar
Run Code Online (Sandbox Code Playgroud)

lea dx,ar
Run Code Online (Sandbox Code Playgroud)

我认为两者都在做同样的工作,但这两者之间有什么区别

x86 assembly masm tasm

12
推荐指数
1
解决办法
1万
查看次数

错误LNK2001:未解析的外部符号_MessageBox

我正在尝试使用masm而不是masm32库来创建helloworld程序.这是代码片段:

.386
.model flat, stdcall
option casemap :none

extrn MessageBox : PROC
extrn ExitProcess : PROC

.data
        HelloWorld db "Hello There!", 0

.code
start:

        lea eax, HelloWorld
        mov ebx, 0
        push ebx
        push eax
        push eax
        push ebx
        call MessageBox
        push ebx
        call ExitProcess

end start
Run Code Online (Sandbox Code Playgroud)

我可以使用masm组装它:

c:\masm32\code>ml /c /coff demo.asm
Microsoft (R) Macro Assembler Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

 Assembling: demo.asm
Run Code Online (Sandbox Code Playgroud)

但是,我无法链接它:

c:\masm32\code>link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user
32.lib demo.obj
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright …
Run Code Online (Sandbox Code Playgroud)

assembly winapi masm masm32

12
推荐指数
2
解决办法
1万
查看次数