⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eg0418b.lst

📁 宏汇编器
💻 LST
字号:
Microsoft (R) Macro Assembler Version 6.15.8803		    08/18/07 22:31:47
eg0418b.asm						     Page 1 - 1


				;eg0418b.asm
					include io32.inc
			      C .nolist
			      C .list
			      C 
 00000000				.data
 00000000 000002A3		array	dword 675, 354, -34, 198, 267, 0, 9, 2371, -67, 4257
	   00000162
	   FFFFFFDE
	   000000C6
	   0000010B
	   00000000
	   00000009
	   00000943
	   FFFFFFBD
	   000010A1
 00000000				.code
 00000000			start:
 00000000  6A 0A			push lengthof array	; 压入数据个数
 00000002  68 00000000 R		push offset array	; 压数组的偏移地址
 00000007  E8 0000000F			call mean	; 调用求平均值子程序,出口参数:EAX=平均值(整数部分)
 0000000C  83 C4 08			add esp,8	; 平衡堆栈(压入了8个字节数据)
 0000000F  E8 00000000 E		call dispsid	; 显示

					exit 0
 0000001B			mean	proc	; 计算32位有符号数平均值子程序
 0000001B  55				push ebp	; 入口参数:顺序压入数据个数和数据缓冲区偏移地址
 0000001C  8B EC			mov ebp,esp	; 出口参数:EAX=平均值
 0000001E  53				push ebx	; 保护寄存器
 0000001F  51				push ecx
 00000020  52				push edx
 00000021  56				push esi
 00000022  57				push edi
 00000023  8B 5D 08			mov ebx,[ebp+8]	; EBX=堆栈中取出的偏移地址
 00000026  8B 4D 0C			mov ecx,[ebp+12]; ECX=堆栈中取出的数据个数
 00000029  E3 1A			jecxz mean2
 0000002B  33 F6			xor esi,esi	; ESI=求和的低32位值
 0000002D  8B FE			mov edi,esi	; EDI=求和的高32位值
 0000002F  8B 03		mean1:	mov eax,[ebx]	; EAX=取出一个数据
 00000031  99				cdq	; EAX符号扩展到EDX
 00000032  03 F0			add esi,eax	; 求和低32位
 00000034  13 FA			adc edi,edx	; 求和高32位
 00000036  83 C3 04			add ebx,4	; 指向下一个数据
 00000039  49				dec ecx	; 数据个数减少一个
 0000003A  75 F3			jnz mean1	; 循环(这两条指令等同于LOOP指令)
 0000003C  8B C6			mov eax,esi	; 累加和在EDX.EAX
 0000003E  8B D7			mov edx,edi
 00000040  F7 7D 0C			idiv dword ptr [ebp+12]	; 有符号数除法,EAX=平均值(余数在EDX中)
 00000043  EB 02			jmp mean3
 00000045  33 C0		mean2:	xor eax,eax
 00000047  5F			mean3:	pop edi	; 恢复寄存器
 00000048  5E				pop esi
 00000049  5A				pop edx
 0000004A  59				pop ecx
 0000004B  5B				pop ebx
 0000004C  5D				pop ebp
 0000004D  C3				ret
 0000004E			mean	endp

					end start
Microsoft (R) Macro Assembler Version 6.15.8803		    08/18/07 22:31:47
eg0418b.asm						     Symbols 2 - 1




Macros:

                N a m e                 Type

exit . . . . . . . . . . . . . .	Proc


Segments and Groups:

                N a m e                 Size     Length   Align   Combine Class

FLAT . . . . . . . . . . . . . .	GROUP
_DATA  . . . . . . . . . . . . .	32 Bit	 00000028 Para	  Public  'DATA'	
_TEXT  . . . . . . . . . . . . .	32 Bit	 0000004E Para	  Public  'CODE'	


Procedures,  parameters and locals:

                N a m e                 Type     Value    Attr

ExitProcess  . . . . . . . . . .	P Near	 00000000 FLAT	Length= 00000000 External STDCALL
mean . . . . . . . . . . . . . .	P Near	 0000001B _TEXT	Length= 00000033 Public STDCALL
  mean1  . . . . . . . . . . . .	L Near	 0000002F _TEXT	
  mean2  . . . . . . . . . . . .	L Near	 00000045 _TEXT	
  mean3  . . . . . . . . . . . .	L Near	 00000047 _TEXT	


Symbols:

                N a m e                 Type     Value    Attr

@CodeSize  . . . . . . . . . . .	Number	 00000000h   
@DataSize  . . . . . . . . . . .	Number	 00000000h   
@Interface . . . . . . . . . . .	Number	 00000003h   
@Model . . . . . . . . . . . . .	Number	 00000007h   
@code  . . . . . . . . . . . . .	Text   	 _TEXT
@data  . . . . . . . . . . . . .	Text   	 FLAT
@fardata?  . . . . . . . . . . .	Text   	 FLAT
@fardata . . . . . . . . . . . .	Text   	 FLAT
@stack . . . . . . . . . . . . .	Text   	 FLAT
array  . . . . . . . . . . . . .	DWord	 00000000 _DATA	
dispbb . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispbd . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispbw . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispcrlf . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispc  . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disphb . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disphd . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disphw . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispmsg  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disprb . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disprd . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disprf . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
disprw . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispsib  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispsid  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispsiw  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispuib  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispuid  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
dispuiw  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readbb . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readbd . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readbw . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readc  . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readhb . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readhd . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readhw . . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readmsg  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readsib  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readsid  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readsiw  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readuib  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readuid  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
readuiw  . . . . . . . . . . . .	L Near	 00000000 FLAT	External STDCALL
start  . . . . . . . . . . . . .	L Near	 00000000 _TEXT	Public STDCALL

	   0 Warnings
	   0 Errors

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -