2014-11-02 2 views
0
String: db "Hello World" 
nonhuman: db 0 
move SI,String+4 
move ax,[SI] 
move [nonhuman],ax 
+2

Просьба уточнить, что вы просите. В том, что вы показали, замените AX на AL, потому что иначе MOVE SI, ... будет перезаписана! –

ответ

0

Звучит как домашнее задание, поэтому нет прямого ответа.

Вы храните байты в памяти с помощью команды MOV. Один аргумент может быть константой, другой должен быть regiater. Вы можете использовать адресацию со смещением, как в [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) 

То есть, если ваша задача не заменяет Выходов и d's в произвольной последовательности, а не только в этом. В этом случае вам нужен цикл, вам нужно прочитать байт из строки, сравнить его и заменить условно.