首页 文章
  • 0 votes
     answers
     views

    mov啊,01h int16h,如何用它来改变蛇的方向

    .model small .data var db '@', '$' delaytime db 10 total db 0 col db 40 row db 12 .stack 100h .code delay proc mov ah, 00 int 1Ah mov bx, dx jmp_delay: int 1Ah sub dx, bx cm...
  • 0 votes
     answers
     views

    将GAS宏转换为MASM宏

    我正在研究一个Forth编译器,JonesForth,它是在GAS中为Linux编写的 . 我的计划是重写它,在MASM32中进行一些小的改动,作为一种方法来提高我对Forth内部机制的理解并重新学习汇编编程(我上次在20世纪80年代早期在6509处理器上使用汇编) . 我对汇编代码本身很好,我想我理解GAS宏实际上做了些什么 . 但我很难将它们转换为MASM宏(可能是因为我在MASM宏上仍然有点...
  • 0 votes
     answers
     views

    注册ESI导致RunTime-Check Failure#0错误

    我花了很多时间试图解决这个问题,我不明白,为什么它不起作用 . 问题的描述在下面的评论中: .386 .MODEL FLAT, STDCALL OPTION CASEMAP:NONE .NOLIST .NOCREF INCLUDE \masm32\include\windows.inc .LIST .CODE DllEntry PROC hInstDLL:HINSTANCE, reason:D...
  • 1 votes
     answers
     views

    在StdCall约定中调用MASM函数

    我在Visual Studio 2015中用C编写了一个程序,我有一个masm模块 . 我想定义一些要调用的函数作为stdcall而不是默认的cdecl . 那有办法吗?我的目标是跳过调用函数中的堆栈清理 . 我在 myModule.h 有一个功能 SIZE_T MyFunc(PVOID IN param1, PVOID IN param2); 但是,通过以下方式将 __stdcall 添加到函...
  • 2 votes
     answers
     views

    装配MASM处理负整数

    我被指示在程序集中编写一个程序,它将执行以下算法: ((A B)/ C)*((D - A)E) 当没有负值发挥作用时,我成功地做了这个,但假设A = 5,B = 4,C = 3,D = 2,E = 1.这给了我们((5 4)/ 3) *((2 - 5)1)或-6 . 这是我需要帮助的地方 . 我已经做了一些研究,并且已经发现2可以成为一种解决方案,但我不确定是否将它实现到我的代码中 . 如...
  • 3 votes
     answers
     views

    Windows上PE文件(exe)的最小文件大小是多少?而最小的内存分配? [重复]

    这个问题在这里已有答案: What is the smallest possible Windows (PE) executable? 2个答案 Windows上PE文件(exe)的最小文件大小是多少?最小的内存分配? 我组装(使用MASM(ml.exe)和VS 10附带的link.exe)以下代码:我不能省略kernel32.lib和ExitProcess,如果我这样做,程序崩溃了 . ; ...
  • 0 votes
     answers
     views

    如何在MASM32程序集中向后打印文档行

    我的尝试: .386 .model flat, stdcall ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;includem biblioteci, si declaram ce functii vrem sa importam includelib msvcrt.lib extern e...
  • 2 votes
     answers
     views

    汇编 - 尝试反转字符串,但它在最终字符串上添加了一个额外的字符

    我'm rather new to Assembly (And programming in general, to be honest). I'我试图玩堆栈 . The purpose of this code: 接受一个字符串,限制为80个字符 重新输入输入的字符串 在将每个字符推入堆栈时打印它们 打印从堆栈中弹出的每个字符 打印反转的字符串 . The code ...
  • 0 votes
     answers
     views

    我试图用汇编语言编写有限状态机,但我被卡住了

    有许多有限状态机问的问题,但都与我的问题无关 . 我需要5种方法 S0 S1 S2 S3 and read the input 我们开始吧 S0 我们要打印状态→0和输出0→ 读输入首先是ebx,第二个是eax . If (ebx ==0&&eax==0) Call S0 .elseif (ebx==1)&&(eax==1) Cal...
  • 0 votes
     answers
     views

    我对比较和跳跃装配很困惑

    我想输入 11,00,01,10 in ebx and eax register. Everytime i input 01 or 10 i need to jump at l1. And if i input 11 or 00 i want to quit from the procedure. 我怎样才能做到这一点 . 我尝试过,但只有前两个cmp正在工作休息不起作用 . cmp ebx...
  • 6 votes
     answers
     views

    MASM shellcode和NASM shellcode之间是否存在差异

    我是StackOverflow的新手 . 最近,我开始研究汇编,对于汇编来说还是一个新手,对shellcode来说是全新的 . 我正在使用RadAsm使用MASM汇编程序进行编译,我尝试从这个网站学习shellcode Shellcoding for Linux and Windows 我在Windows 64位上使用RadAsm . 我使用的代码几乎相同,只是我使用函数的绝对名称而不是DLL中函...
  • 2 votes
     answers
     views

    LEA和MOV指令比较

    Instruction 1: LEA DX, MESSAGE ; Move the address of MESSAGE in register DX Instruction 2: MOV DX, OFFSET MESSAGE ; Move the address of MESSAGE in register DX 问题: 上述说明是否相同?他们似乎工作方式相似,但我刚刚开始编程程序集,所...
  • 3 votes
     answers
     views

    旧dos组件问题中的硬件VGA文本模式IO

    在阅读了大约4本关于汇编编程的不同书籍的前3或4章后,我进入了一个阶段,我可以使用MASM 6.11将“Hello World”放在dosbox控制台上 . 想象一下我的喜悦! 我的程序的第一个版本使用DOS函数13h . 我的程序的第二个版本使用BIOS功能10h 我现在想要使用直接硬件输出来完成第三个版本 . 我已经阅读了部分书籍,解释了屏幕在VGA显示器上划分为80x25(不关心检测CGA以...
  • 1 votes
     answers
     views

    使用MASM32在x86程序集中未解析的外部符号

    免责声明:我对大会全新,所以请原谅我的潜在无知 . 我正在为x86处理器第6版的汇编语言学习x86汇编 . 欧文 . 按照本书中的示例,我使用 Irvine32.inc 文件 . 我的程序汇编但是当我尝试链接 .obj 文件时,它给出了以下错误: error LNK2001: unresolved external symbol _ExitProcess@4 我猜它应该在 Irvine32.inc...
  • 1 votes
     answers
     views

    使用MASM将寄存器输出到控制台

    我有一天学习ASM并且我做了一些教程,甚至成功修改了教程内容以使用jmp和cmp等代替MASM .if和.while宏 . 在继续学习更高级的教程之前,我决定尝试编写一些非常非常简单的东西 . 我正在写一个Fibonacci数字生成器 . 这是我到目前为止的来源: .386 .model flat, stdcall option casemap :none include \masm32\in...
  • 0 votes
     answers
     views

    从DX:AX寄存器移动到单个32位寄存器

    我在添加到16位乘法的乘积时遇到了问题 . 我希望将2015年这样的年份乘以365,这样我就可以 mov dx, 0 ; to clear the register mov ax, cx ; cx holds the year such as 2015 mov dx, 365 ; to use as multiplier mul dx ; multiply dx by ax...
  • 0 votes
     answers
     views

    使用寄存器作为DB的参数(MASM)

    我有一个整数存储在寄存器 edx 中,包含0到255(0x00到0xFF)的随机值,我想将其值用作 db 的参数 . db edx 但是,当我尝试这样做时,我得到错误A2138说"invalid data initializer" . 要明确一个命令就好 db 57 确实有效,而不是之前显示的那个 . 所以我想我问的问题是如何使用寄存器作为 db 命令的参数? 感谢您的时间...
  • 0 votes
     answers
     views

    Assembly / Nasm - 分段故障(核心转储)错误

    我是NASM的新手,我正在尝试在网上执行一个我发现的MASM示例,但是转向NASM是一件痛苦的事 . 它正确编译并生成输出文件,但是当我尝试运行它时,它会产生分段错误(核心转储错误),我不知道它是什么 . 操作系统是Ubuntu,尝试执行以下编译: nasm -f elf binario.asm ld -m elf_i386 binario.o io.o -o binario 这是代码: %in...
  • 0 votes
     answers
     views

    汇编程序内存分配

    我试图解决这个问题几天 . 我不知道如何分配内存来将字符串复制到另一个位置 . 这是代码: caesarAsm proc string: DWORD, key: DWORD, stringLength : DWORD ; inside this procedure I have a code that ciphers string value using caesar ciphe...
  • 0 votes
     answers
     views

    x86汇编中的索引寻址 - 就像mov array [ebx],eax是一个有效的指令吗?

    我的理解是索引寻址本质上产生一个地址,其偏移量是括号中的数字 . 这种理解是否正确?但我也明白,这个地址不知何故被取消引用 . 我不明白这是如何工作的 . “基于Intel的计算机的汇编语言”一书显示了许多 mov reg,array[reg] 形式的指令,它将数据从索引数组元素移动到寄存器中 . 但我需要一种方法将数据从寄存器移回阵列 . 我怎样才能做到这一点?我是否使用相反的方法,那将是 m...
  • 1 votes
     answers
     views

    MASM分部为负数

    我正在尝试在汇编中划分两个数字[Irvine-Intel x86处理器] . 这是我的代码: mov eax, 4 mov edx, 0 mov ebx, 2 div ebx 我得到了除法的正确答案,但是当我将值更改为负数时,它并没有给出正确的答案 . mov eax, -4 mov edx, 0 mov ebx, 2 div ebx 据我所知,“div”是无符号的鸿沟 . 那么如果我想用负数...
  • -1 votes
     answers
     views

    如何使用汇编语言x86 masm将十进制转换为十六进制

    1)将十进制数转换为十六进制数 . 我不知道如何将十进制转换为十六进制 . 我只是输入一个数字,但我不知道如何开始下一个 . 任何帮助表示赞赏 . TITLE include irvine32.inc .data a dword ? b dword ? final dword ? count dword 0 prompt1 byte ,'Enter a number',0 .code mai...
  • 0 votes
     answers
     views

    使用偏移访问数据段

    我正在读_904991的书 我正试图解决其中一章问题 Question is : 在程序中插入以下变量: .data Uarray WORD 1000h,2000h,3000h,4000h Sarray SWORD -1,-2,-3,-4 编写使用直接偏移寻址的指令,将Uarray中的四个值移动到EAX,EBX,ECX和EDX寄存器 . 我写这段代码: TITLE MASM Template ...
  • 8 votes
     answers
     views

    masm师溢出

    我正在尝试在汇编中划分两个数字 . 我正在为Irvine组装英特尔计算机书工作,我无法为我的生活做分工 . 这是我的代码 .code main PROC call division exit main ENDP division PROC mov eax, 4 mov ebx, 2 div ebx call WriteDec ret div...
  • 7 votes
     answers
     views

    快速,初学的MASM注册问题 - DX:AX

    我目前正在学习x86组装的考试 . 我没有太多的运气谷歌搜索“:”,太常见的标点符号:/ IDIV - 有符号整数除法用法:IDIV src修改标志:(AF,CF,OF,PF,SF,ZF未定义)累加器的有符号二进制除法 . 如果source是字节值,则AX除以“src”,商存储在AL中,余数存储在AH中 . 如果source是一个字值,则DX:AX除以“src”,并且商存储在AL中,余数存储在...
  • 0 votes
     answers
     views

    为什么我的选择排序代码不起作用?

    我正在学习集会 . 我需要使用选择排序来对整数列表进行排序 . 我在交换功能上花了几个小时,但我无法弄清楚为什么我的程序在以下步骤中停止编译:mov [eax],edx&mov [ebx],ecx . 问题出在sort函数和swap函数中 . 有人可以看看,并给我一些指导 . 非常感谢! (更新:我的代码现在编译 - 解决了问题) INCLUDE Irvine32.inc MIN_NUM = 1...
  • 0 votes
     answers
     views

    每5个循环MASM添加新行

    我正在尝试在我正在编写的汇编程序中正确格式化输出,但我发现很难使用ECX寄存器来跟踪我所处的循环并根据该值采取操作 . 我想每循环运行5次添加一个新行,并且我尝试使用带有ECX寄存器的模数来执行此操作,但没有任何运气 . 我正在使用Irvine32库 . 我正在尝试做这样的事情: mov ecx, someNumber the_loop: cmp 0, ecx mod 5 ...
  • 0 votes
     answers
     views

    在MASM中将一系列小数位转换为十六进制大数

    我正在编写一堆宏来处理MASM中的大数字,我发现自己需要从一系列数字转换为数字 . 基本上,为了绕过MASM大小限制,我一直把bignums作为字符串传递 . 所以,bignum调用看起来像: MOV_BIG_NUM [eax], <1234567891011121314151617181920212223> 我有一个实现,可以处理(据我所知)在2的幂的基础中传递的字符串 . 也就是...
  • 0 votes
     answers
     views

    AND,OR或XOR汇编语言MASM X86 IRVINE

    在句子而不是代码中,我只需要一个解释 . 你如何编写命令来将大写X改为小写x
  • 3 votes
     answers
     views

    如何打印出MUL产品的输出?

    我在汇编(MASM)中使用MUL来乘以两个整数 . 根据MASM指令集文档,产品存储在EDX:EAX中,EDX和EAX寄存器的组合(如果我理解正确的话) . 所以我首先尝试打印出EDX寄存器的结果然后打印出EAX寄存器以打印出整个数字 . 但是,当我得到一个超过32位(小数点后10位)的产品时,我得到了一个奇怪的答案 . 例如 100000 * 100000 = 21410065408 ,这是错误...

热门问题