如何用“另一个变量”替换“Hello world”中的“o”和“...... world”的“d”

时间:2014-11-02 13:43:00

标签: assembly masm32

String: db "Hello World"
nonhuman: db 0
move SI,String+4
move ax,[SI]
move [nonhuman],ax

1 个答案:

答案 0 :(得分:0)

听起来像是家庭作业,所以没有直接答案。

使用MOV命令将字节存储在内存中。一个参数可以是常数,另一个参数必须是一个寄存器。您可以使用位移寻址,如[SI + 4]。 Bytelong寄存器是AL / AH,BL / BH等。 AX,BX等是两个字节长。

要从内存加载一个字节,你也使用MOV,但内存位置需要是第二个操作数,而不是第一个操作数。

考虑到这一点,代码如下:

load the replacement value from memory into a byte-sized register
store that register in the string+4 (the position of O)
store that same register in the string+10 (the position of D)

也就是说,除非你的任务是用任意字符串替换o和d,而不仅仅是在这个字符串中。在这种情况下,你需要一个循环,你需要从字符串中读取字节并进行比较,并有条件地替换。