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