如何添加值?

时间:2015-11-12 18:22:33

标签: assembly x86 masm irvine32

汇编语言的新手,在这里读书。我试图做一个简单的基本练习。使用适当的寄存器,我必须添加100,200,300,400,500。不知道从哪个程序开始。这是程序的大纲,现在我需要添加寄存器。根据我对本书的理解,这就是我所拥有的。不知道如何继续添加。

(AddSub.asm)
INCLUDE Irvine32.inc

.code   

main PROC

    mov eax, 100
    add eax, 200

exit
main ENDP
END main

3 个答案:

答案 0 :(得分:3)

如果您有使用 C 等高级语言的经验,那么这些行:

mov eax, 100
add eax, 200

会做类似的事情:

int eax;
eax = 100;       /* mov 100 to EAX */
eax = eax + 200; /* add 200 to EAX */

如果您想添加其他数字,请继续添加 EAX ,例如:

add eax, 300
add eax, 400

您可以使用除 EAX 之外的其他寄存器(例如 EBX ECX EDX ESI EDI )。您也可以将这些寄存器一起添加。例如

mov eax, 100
mov ebx, 200
mov ecx, 300
add eax, ebx
add eax, ecx

这类似于:

int eax = 100;
int ebx = 200;
int ecx = 300;

eax = eax + ebx; /* add EBX to EAX */
eax = eax + ecx; /* add ECX to EAX */

这将导致 EAX

中的值为600

使用 Irvine32 库,您可以通过调用WriteInt函数将 EAX 的内容打印为有符号整数:

call WriteInt

答案 1 :(得分:2)

只需添加更多add说明:

add eax, 300
add eax, 400
add eax, 500

您还必须在exit行之前以某种方式打印出结果。

答案 2 :(得分:0)

我认为您应该在-- %>% dplyr::summarise(bfat = mean(bfat)) 指令后立即将add数字添加到eax寄存器中。从小知识我知道这就是eax的用途。

mov

我希望这会有所帮助。