x86汇编代码中,为啥倒着存数据的话,会把上一次存放的数据刷新为0

【x86汇编代码中,为啥倒着存数据的话,会把上一次存放的数据刷新为0】 没仔细看,但是我看到虽然36变成了0,但是36左边那个变成了32,which跟DX的L是一样的。不过改成了32的的确是SS:SI,因为字节的顺序是先L后H,我觉得说不定就是你高亮错了位置?

■网友
注意数据长度,你应该是想写入一个字节吧,程序里把一个字写入内存地址,当然会改掉内存中的两个字节了,倒着写正好把高地址覆盖了。
■网友
数据长度写入错误mov [si],dx进行的是字操作(x86寄存器16位)而题主希望的是进行字节操作题主在数据段创建的是10个字节为零的空间第一次si=0009h dx=0006h加30h=0036h存进去时操作的内存空间是0710:0009(低位)和0710:000a(高位)第二次操作的空间是0710:0008(低位)和0710:0009(高位)问题在于此,值被覆盖了把dx改成dl应该就行了
■网友
没有问题啊,mov , dx将dx中的两字节存入ss:si指向的内存,0710:0006写入低字节36h,0710:0007写入高字节00h
■网友
没有啥特殊的,dx是双字节,dl dh分是一个字节,si指向06,当mov ,dx时相当于mov byte ptr ,dlmov byte ptr ,dhdh是0,所以07自然被刷为0了
■网友
不请自来... 你的汇编是8086的吧... 到了i386开始就是esi edi...32bit 到了x86....就是rsi rdi....64bit所以才会有你发现的这些区别...
■网友
因为你人工编写的入栈代码是一个dec si,而你一次存一个两字节的dx,显然会覆盖前一次入栈数据的低字节,改成mov dl吧骚年


    推荐阅读