- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个 8086 汇编程序来连接两个给定的字符串。为此,我使用了“REP MOVSB”指令,但该程序运行不佳。所以我写了一个应该静态连接两个字符串的程序,但似乎“REP MOVSB”对字符串根本没有影响。这是我为测试编写的代码部分:
data segment string1 db "Lotfi", 0string2 db "Ali ", 0 data endscode segment ASSUME CS: code, DS: data start: cld mov ax , data mov DS , ax mov SI , offset string1 mov DI , offset string2 add DI , 3 ; Adding the length of destination string to the DI mov cx , 5 rep movsb ; This should concat two strings ; Printing the result character by character on the console mov SI , offset string2l: lodsb ; Printing loop mov dl, al mov ah, 2h int 21h jmp l hlt code endsend start
代码的结果是这样的:
Ali ü,Z0???... (And so)
我的代码有什么问题?
最佳答案
movsb
从 DS:SI 移动到 ES:DI。您已加载 DS 但未加载 ES 寄存器。
你只需要添加一行:
cld
mov ax , data
mov DS , ax
mov ES , ax ; here!
关于assembly - 在 8086 中连接两个给定的字符串 + MOVSB 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27589178/
从教程中我了解到 movsb 会将数据从 ds:si 复制到 es:di。但就我而言,它不起作用。 虽然尝试使用 gdb 进行调试,但我无法打印分别在 .data 部分和 .bss 部分中清除的 s1
我正在检查使用最新版本的 VS 2017 C++ 编译器完成的项目的发布版本。我很好奇为什么编译器选择构建以下代码片段: //ncbSzBuffDataUsed of type INT32 UINT8
什么 x86 寄存器表示 movsb 指令中的源位置? 最佳答案 在 32 位模式下,esi。 具体而言,movsb 将一个字节从 ds:esi 复制到 es:edi,然后递增或递减两个 esi 和
我正在尝试编写一个 8086 汇编程序来连接两个给定的字符串。为此,我使用了“REP MOVSB”指令,但该程序运行不佳。所以我写了一个应该静态连接两个字符串的程序,但似乎“REP MOVSB”对字符
我正在尝试编写一个 8086 汇编程序来连接两个给定的字符串。为此,我使用了“REP MOVSB”指令,但该程序运行不佳。所以我写了一个应该静态连接两个字符串的程序,但似乎“REP MOVSB”对字符
我是 asm 的新手,正在尝试使用一些操作码来获取它。我在 64 位 linux 上工作,并且在使用 movsb 时总是出现段错误。我用 nas 编译: nasm -f elf64 test.asm
我很快就有了一个组装测试,在准备的时候,我注意到了一些奇怪的事情。repe movsb在 ZF=0 时重复,我被告知 repe应该在 CX 不等于 0 和 ZF=1 时重复。 我做了一些测试,发现之前
这个question让我想知道,当前的现代编译器是否曾经发出REP MOVSB/W/D指令。 基于此discussion,似乎在当前CPU上使用REP MOVSB/W/D可能会有所帮助。 但是无论如何
我是一名优秀的程序员,十分优秀!