📄 eg0418.lst
字号:
Microsoft (R) Macro Assembler Version 6.15.8803 08/18/07 22:31:30
eg0418.asm Page 1 - 1
;eg0418.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 8B 5D 08 mov ebx,[ebp+8] ; EBX=堆栈中取出的偏移地址
00000024 8B 4D 0C mov ecx,[ebp+12] ; ECX=堆栈中取出的数据个数
00000027 33 C0 xor eax,eax ; EAX保存和值
00000029 33 D2 xor edx,edx ; EDX=指向数组元素
0000002B 03 04 93 mean1: add eax,[ebx+edx*4] ; 求和
0000002E 83 C2 01 add edx,1 ; 指向下一个数据
00000031 3B D1 cmp edx,ecx ; 比较个数
00000033 72 F6 jb mean1 ; 循环
00000035 99 cdq ; 将累加和EAX符号扩展到EDX
00000036 F7 F9 idiv ecx ; 有符号数除法,EAX=平均值(余数在EDX中)
00000038 5A pop edx ; 恢复寄存器
00000039 59 pop ecx
0000003A 5B pop ebx
0000003B 5D pop ebp
0000003C C3 ret
0000003D mean endp
end start
Microsoft (R) Macro Assembler Version 6.15.8803 08/18/07 22:31:30
eg0418.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 0000003D 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= 00000022 Public STDCALL
mean1 . . . . . . . . . . . . L Near 0000002B _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 + -