要求:输入任意一个整型数字字符串,并将整型原样输出。
这个子程序主要用于格式化排版,比output直接输出字符串有很大美观性。
1 ; Example assembly language program -- 2 ; Author: Karllne 3 ; Date: revised 05/2014 4 5 .386 6 .MODEL FLAT 7 8 ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD 9 10 INCLUDE io.h ; header file for input/output 11 12 cr EQU 0dh ; carriage return character 13 Lf EQU 0ah ; line feed 14 15 .STACK 4096 ; reserve 4096-byte stack 16 17 18 19 .DATA ; reserve storage for data 20 21 prompt BYTE "Please enter a number",cr,Lf,0 22 fl DWORD ? 23 value BYTE 11 DUP(?),0 24 char BYTE 1 DUP(?) 25 26 PUBLIC _start 27 .CODE ; start of main program code 28 _start: 29 output prompt 30 input value,11 31 atod value 32 push eax 33 call byteInput 34 add esp,4 35 36 INVOKE ExitProcess, 0 ; exit with return code 0 37 38 byteInput PROC NEAR32 39 push ebp 40 mov ebp,esp 41 42 mov fl,0 43 mov ebx,10 44 mov eax,[ebp+8] 45 doWh: 46 cdq 47 idiv ebx 48 push edx 49 inc fl 50 cmp eax,0 51 je enddoWh 52 53 54 jmp doWh 55 enddoWh: 56 57 doPrint: 58 59 cmp fl,0 60 je enddoPrint 61 dec fl 62 pop edx 63 mov char,dl 64 add char,‘0‘ 65 output char 66 jmp doPrint 67 enddoPrint: 68 pop ebp 69 ret 70 71 byteInput ENDP 72 73 END ; end of source code
测试结果: