【发布时间】:2018-08-03 09:26:50
【问题描述】:
从教程中我了解到 movsb 会将数据从 ds:si 复制到 es:di。但就我而言,它不起作用。
- 尝试使用 gdb 进行调试时,我无法打印 s1 和 s2 中的值,这些值分别在 .data 部分和 .bss 部分中清除。
- 任何人请帮助我们如何查看 s2 的值,同时打印 $p2 i got void in debugging?
- 为什么这里 s2 的值不随 s1 的值变化? 代码如下
section .text
global _start
_start:
mov esi,s1
mov edi,s2
cld
rep movsb
mov edx,20
mov ecx,s2
mov ebx,1
mov eax,4
int 80h
mov eax,1
int 80h
section .data
s1 db 'qwerty',0
section .bss
s2 resb 20
【问题讨论】:
-
当使用“rep movsb”时,你应该将CX设置为你想要移动的字节数
-
ecx在 32 位模式下,就像你看起来一样(在 64b 模式下你应该避免int 80h)。 IE。在rep movsb之前添加mov ecx, 20以传输20 个字节。 -
tanx 都明白了