- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将寄存器 si
中存储的用户输入与另一个字符串进行比较。
顺便说一句,我正在使用 FASM。这是用户输入后到目前为止我的代码。
如果我使用 repe cmpsb
命令,我知道我必须使用额外的段,但我不知道如何使用。 repe cmpsb
命令不适用于此代码。
.input_done:
cmp si, 0
je no_input
jmp short .compare_input
.compare_input:
mov cx, 20 ;For the repe cmpsb command.
cld
mov di, info ;The string I want to compare.
mov es, di
mov di, info
repe cmpsb
cmp cx, 0
je showinfo
.showinfo:
... ;The output string if both string are the same.
info db "info", 0
最佳答案
mov di, info ;The string I want to compare.
mov es, di
对于一个简单的程序来说,两个字符串可能会存储在同一个内存段中。只需将 DS
中的值放入 ES
即可。
...
push ds
pop es
mov di, info
...
<小时/>
And the
repe cmpsb
command doesn't work with this code.
您已将计数器 CX
设置为固定数字 20,其中至少一个字符串(“info”)只有 4 个字符。难怪比较失败。
由于您想要比较相等性,因此第一步是查看两个字符串是否具有相同的长度。如果没有,您已经知道答案了。
如果它们的长度相同,则将其用作计数器CX
。
; String1 pointer in DS:SI, length in CX
; String2 pointer in ES:DI, length in DX
cmp cx, dx
jne NotEqual
repe cmpsb
jne NotEqual
Equal: ; .showinfo:
... ; The output string if both string are the same.
; Don't fall through here!!!
NotEqual:
...
关于assembly - 如何使用 FASM 比较 x86 汇编中的两个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366160/
我想使用Fasm使用简单的MsgBox编译x64应用程序。我已经编写了代码,它可以成功编译,但是当我运行它时,没有显示任何内容,并且程序刚刚结束。怎么了? format PE64 GUI 4.0 en
所以我正在阅读有关如何创建结构的手册。 起初,我是这样做的: struc point X, Y { .X dw X .Y dw Y } section '.code' code reada
“消息” block 和它的输出有问题(print_less、print_more、print_equal、print_final)。我真的不知道如何存储字符串,所以这就是为什么我在输出中获取所有字符
这是我在 FASM 中使用的代码: format PE console entry main include '..\MACRO\import32.inc' section '.data' data
我对这一件事真的很困惑。我正在阅读 x86 处理器的程序集编程一书,并且正在阅读有关 mov 指令及其工作原理的信息。所以,作者说下面的指令是有效的mov mem,reg .....基本上将寄存器值移
我正在用 FASM 汇编程序编写程序,想看看所有宏展开后生成的代码是什么。通常可以使用 objdump -d 来反汇编二进制文件,但是对于由 fasm 生成的二进制文件,它只输出以下内容: $ cat
bios 中断函数 21h (ah = 1h) 应该从标准输入中读取一个字符并回显它。 我的阅读功能: mov ah, 1h int 21h 所以,如果我按下一个键,它会意识到这一点,
如何将参数传递给 Assembly 中的函数?我确实推送了最后一个参数,推送了第二个参数,推送了第一个参数.. 但是我无法访问 Meh 函数中的参数..我正在做的事情使程序崩溃了.. format P
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
使用 FASM 我正在尝试使用 SHR 指令移动双字,该指令应该将位移动到右附加零。这是代码: format ELF executable 3 entry start segment readab
维基百科指出: High-level assemblers in computing are assemblers for assembly language that incorporate fea
我有一个使用以下代码在 Delphi XE2 中编码的 dll: procedure xMain(MSG:String);export; begin MessageBox(0,PWideChar(
我已经完成了ARM汇编编程,并且想学习Intel Assembler。我一直听到所有提到的所有这些F / M / N / ASM,但是我不确定它们与我希望达到的目标之间有何关系? 有人可以帮我确定我需
我尝试在 FASM 中编译以下代码: mov DWORD PTR [ebp - 4], 1234567 它给了我一个“无效表达式”错误。但是以下代码有效: mov DWORD [ebp - 4],
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
只是想知道是否有一种方法可以将数字打印到控制台通过调用。它可以是 10 进制,也可以是十六进制,我不介意。 我想看看一些函数返回的格式。 我宁愿不使用 WriteConsole 和大量 asm 来做这
这个问题在这里已经有了答案: What are the calling conventions for UNIX & Linux system calls (and user-space funct
Flat Assembler 中的 win32a、win32ax、win32axp、win32w、win32wx 和 win32wxp .inc 文件有什么区别?我试图在 FASM 文档中找到它,但找
我想将寄存器 si 中存储的用户输入与另一个字符串进行比较。 顺便说一句,我正在使用 FASM。这是用户输入后到目前为止我的代码。 如果我使用 repe cmpsb 命令,我知道我必须使用额外的段,但
有谁知道如何添加FASM支持CMake?我试过原始指南 here ,但这对我不起作用。 最佳答案 因此,我设法添加了三个文件,如 here 所述在我的 CMake\share\cmake-3.7\Mo
我是一名优秀的程序员,十分优秀!