1 TITLE MASM Template (main.asm)
2
3 ; Description:
4 ;
5 ; Revision date:
6
7 .386P ; Pentium Pro or later
8 .MODEL flat, stdcall
9 .STACK 4096
10 option casemap:none; 大小不敏感
11
12
13 printf PROTO C :dword,:vararg
14 scanf PROTO C :dword,:vararg
15 gets PROTO C :dword
16 getchar PROTO C
17 strlen PROTO C :dword
18 ExitProcess PROTO,dwExitCode:DWORD ; exit program
19 exit EQU <INVOKE ExitProcess,0>
20
21 INCLUDELIB C:\asm\USER32.LIB
22 INCLUDELIB C:\asm\KERNEL32.LIB
23 INCLUDELIB C:\asm\MSVCRT.LIB
24
25 chr$ MACRO any_text:VARARG
26 LOCAL txtname
27 .data
28 txtname db any_text,0
29 align 4
30 .code
31 EXITM <OFFSET txtname>
32 ENDM
33
34 .data
35 val1 qword 123456789abcdef0h
36 val2 qword 9876543210fedcbah
37 s label dword
38 sum qword ?
39
40 .code
41 main PROC
42 MOV EAX,dword ptr val1 ;首先计算低8位,进位在cf中
43 ADD EAX,dword ptr val2
44 MOV EDX,dword ptr val1+4 ;然后计算高八位,并且将第八位的进位加上由adc实现
45 ADC EDX,dword ptr val2+4 ;每一字节两个数字,+4就向前进了8位
46 MOV dword ptr sum,EAX
47 MOV dword ptr sum+4,EDX
48
49 invoke printf,chr$("The result is: %llx",0dh,0ah),sum
50 invoke getchar
51 exit
52 main ENDP
53
54 END main