String 在汇编MASM中替换字符串中的字符

String 在汇编MASM中替换字符串中的字符,string,assembly,x86,masm,irvine32,String,Assembly,X86,Masm,Irvine32,我以前做过什么 我试图简单地替换或覆盖字符串中特定位置的字符。我写了这段代码: INCLUDE Irvine32.inc .data myMessage BYTE 'This is a string',0 .code main PROC call Clrscr mov esi, OFFSET myMessage inc esi inc esi inc esi mov ebx, 'a' mov [esi], ebx mov edx, OFFSET myMessage call Write

我以前做过什么

我试图简单地替换或覆盖字符串中特定位置的字符。我写了这段代码:

INCLUDE Irvine32.inc
.data
myMessage BYTE 'This is a string',0


.code
main PROC
call Clrscr  
mov esi, OFFSET myMessage
inc esi
inc esi
inc esi
mov ebx, 'a'
mov [esi], ebx
mov  edx, OFFSET myMessage
call WriteString
call crlf

exit
main ENDP

END main
问题

这个程序的预期输出是Thia,它是一个字符串 但是它输出了Thia。 现在,无论我在什么地方覆盖这个字符串中某个特定位置的字符,当我使用WriteString调用打印它时,该字符串的打印都会在替换字节的位置停止。
如何解决这个问题?

提示:ebx有多大?。。4个字节如何容纳单个字符“a”?你快到了,是的!它与bl.mov[esi]和bl一起工作,这是可行的。谢谢:+1