我正在尝试扫描来自用户的输入,并且字符串将被转换为缺少换行符的内容,以便为文件提供名称。在扫描来自用户的输入时,以某种方式发生的事情是将换行符附加到扫描的字符串上。 (实际上我在这里对两个文件进行操作,所以我使用了两个字符串。)。在这里,我试图使用movsb,直到通过在al中移动10来生成换行符。 10这是ascii中的换行符,但不起作用。
section .data
msg3 db "%s",10,0
msg4 db "%s",0
msg5 db "%d",10,0
msg6 db 10
section .bss
x resd 50
y resd 50
a resd 1
d resd 1
b resd 50
c resd 50
section .text
global main
extern printf , scanf,gets
main :
xor eax,eax
mov eax,3
mov ebx,0
mov ecx,x
mov edx,30
int 80h
mov dword[a],eax
push dword[a]
push msg5
call printf
add esp,8
xor eax,eax
mov eax,3
mov ebx,0
mov ecx,y
mov edx,30
int 80h
mov dword[d],eax
xor eax,eax
mov esi,x
mov edi,b
mov ecx,dword[a]
mov al,10
cld
repne movsb
mov esi,y
mov edi,c
mov ecx,dword[d]
repne movsb
xor eax,eax
答案 0 :(得分:0)
最后做了这样的事情。早期代码的某些部分也存在缺陷。谢谢Frank Kotler。
xor eax,eax
mov eax,3
mov ebx,0
mov ecx,x
mov edx,30
int 80h
mov dword[a],eax
push dword[a]
push msg5
call printf
add esp,8
xor eax,eax
mov eax,3
mov ebx,0
mov ecx,y
mov edx,30
int 80h
mov dword[d],eax
xor eax,eax
mov esi,x
mov edi,b
mov ecx,dword[d]
mov al,0
cld
repne movsb
mov ecx,dword[d]
mov byte[ecx+b-1],0
mov esi,y
mov edi,c
mov ecx,dword[d]
repne movsb
xor eax,eax
mov ecx,dword[d]
mov byte[ecx+c-1],0
xor eax,eax
mov esi,b
mov edi,x
mov ecx,dword[d]
mov al,0
cld
repne movsb
mov al,0
mov ecx,dword[d]
mov esi,c
mov edi,y
mov ecx,dword[d]
repne movsb
xor eax,eax