Простое добавление:
add eax, ebx ; Adds eax and ebx and stores the result in eax
Загрузка из памяти, а затем добавить, а затем хранить в памяти:
mov eax, DWORD PTR [esi] ; Load a double word from memory into eax
mov ebx, DWORD PTR [edi] ; Load a double word from memory into ebx
add eax, ebx ; Adds eax and ebx and stores the result in eax
mov DWROD PTR[esi], eax ; Store a double word in eax into memory
В приведенных выше примерах, DWORD PTR не является строго необходимы , но это хорошая привычка практиковать, потому что она устраняет любую двусмысленность и делает код более удобным для чтения.
Важно помнить, что вы можете добавлять регистры одного размера (DWORD в приведенных выше примерах). Если вы хотите добавить два регистра различных размеров:
mov al, BYTE PTR [esi] ; Loads a single byte from memory into al
mov bx, WORD PTR [edi] ; Loads a word from memory into bx
movzx eax, al ; Zero extends al into the entire eax register
movzx ebx, bx ; Zero extends bx into the entire ebx register
add eax, ebx ; Adds eax and ebx and stores the result in eax
Это не очень хороший пример, потому что есть более простые способы сделать то же самое, но, надеюсь, это будет показать некоторые трюки, которые можно использовать ,
Вы также можете добавить значение памяти до регистров:
mov eax, DWORD PTR [esi] ; Load a double word from memory into eax
add eax, DWORD PTR [edi] ; Add a double word in memory to eax
Вот хороший сайт для использования в качестве ссылки: http://ref.x86asm.net/
Спасибо, кучи! Это было полезно. Что вы подразумеваете под «Есть более простые способы сделать то же самое». В любом случае, спасибо. – Progrmr
А также, когда я добавляю два числа, как бы я хотел поместить это значение в переменную и отобразить эту переменную на консоли? Благодарю. – Progrmr
Вместо отдельной инструкции mov/movzx вы можете просто сделать это: movzx eax, BYTE PTR [esi]. Что касается получения и печати с консоли, попробуйте эту ссылку: http://www.masm32.com/board/index.php?topic=1094.0 – Sparafusile