汇编01-MASM 查看列表文件

Qt源码解析 索引

汇编逆向— MASM 查看列表文件

查看步骤

在“属性”(Configuration Properties)下选择 Microsotf Macro Assembler,展开后选择Listing File

修改Generate Preprocessed Source Listing 为 “是 (/EP)”,修改List All Available Information 为 “是 (/Sa)”,最后修改Assembled Code Listing File 为 “$ProjectName.lst” 即可在项目目录下看到 项目名.lst 的列表文件。

列表内容

Microsoft (R) Macro Assembler Version 14.21.27702.2	    06/27/19 10:39:13
AddTwo.asm						     Page 1 - 1

				.386
				.model flat,stdcall
				.stack 4096
				ExitProcess proto,dwExitCode:dword

 00000000			.code
 00000000			main proc
 00000000  B8 00000005			mov	eax,5				
 00000005  83 C0 06			add	eax,6				

					invoke ExitProcess,0
 00000008  6A 00	   *	    push   +000000000h
 0000000A  E8 00000000 E   *	    call   ExitProcess
 0000000F			main endp
				end main
Microsoft (R) Macro Assembler Version 14.21.27702.2	    06/27/19 10:39:13
AddTwo.asm						     Symbols 2 - 1




Segments and Groups:

                N a m e                 Size     Length   Align   Combine Class

FLAT . . . . . . . . . . . . . .	GROUP
STACK  . . . . . . . . . . . . .	32 Bit	 00001000 DWord	  Stack	  'STACK'	 
_DATA  . . . . . . . . . . . . .	32 Bit	 00000000 DWord	  Public  'DATA'	
_TEXT  . . . . . . . . . . . . .	32 Bit	 0000000F DWord	  Public  'CODE'	


Procedures, parameters, and locals:

                N a m e                 Type     Value    Attr

ExitProcess  . . . . . . . . . .	P Near	 00000000 FLAT	Length= 00000000 External STDCALL
main . . . . . . . . . . . . . .	P Near	 00000000 _TEXT	Length= 0000000F Public STDCALL


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

	   0 Warnings
	   0 Errors

取一行代表

 00000000  B8 00000005			mov	eax,5	

数值B8表示操作代码(或者操作码),表示特定的机器指令,把数值5送入eax寄存器。

作用

列表文件能够查看,汇编器是否正确生成机器码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个可以在DOSBOX-masm汇编实现快速傅立叶变换的完整实例代码: ``` ; Fast Fourier Transform Algorithm in Assembly Language .386 .model flat, stdcall option casemap :none include \masm32\include\msvcrt.inc includelib \masm32\lib\msvcrt.lib include \masm32\include\masm32.inc includelib \masm32\lib\masm32.lib include Complex.inc .data ; Number of samples N equ 16 ; Twiddle factor table TwiddleTable dd 0, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, -1 ; Input signal InputSignal dd 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15 ; Output signal OutputSignal dd N dup(0) ; Scratch memory Scratch dd N dup(0) .code main proc ; Initialize complex arithmetic call Complex_Init ; Compute FFT push offset InputSignal push offset TwiddleTable push offset OutputSignal push offset Scratch push N call FFT ; Display results mov ecx, N mov esi, offset OutputSignal Display: ; Display real part fld dword ptr [esi] call Display_Float ; Display imaginary part fld dword ptr [esi+4] call Display_Float ; Move to next complex number add esi, 8 ; Move to next line call Crlf loop Display ; Exit program exit main endp FFT proc InputSignal:DWORD, TwiddleTable:DWORD, OutputSignal:DWORD, Scratch:DWORD, N:DWORD ; Compute FFT of input signal ; InputSignal: Pointer to input signal ; TwiddleTable: Pointer to twiddle factor table ; OutputSignal: Pointer to output signal ; Scratch: Pointer to scratch memory ; N: Number of samples push ebp mov ebp, esp push ebx push ecx push edx push esi push edi ; Initialize variables mov esi, InputSignal mov edi, OutputSignal mov ebx, Scratch mov ecx, N mov edx, 1 ; Copy input signal to scratch memory Copy: fld dword ptr [esi] fstp dword ptr [ebx] add esi, 4 add ebx, 4 loop Copy ; Perform bit reversal call Bit_Reverse ; Compute FFT mov ebx, 1 Loop1: mov ecx, N shr ecx, 1 mov esi, TwiddleTable Add1: ; Compute twiddle factor fld dword ptr [esi+ebx*4] fld dword ptr [ebx*4+Scratch] fmul fld dword ptr [(ebx+ecx)*4+Scratch] fsub fld dword ptr [(ebx+ecx)*4+TwiddleTable] fld dword ptr [(ebx+ecx)*4+Scratch] fmul fadd fstp dword ptr [(ebx+ecx)*4+Scratch] fstp dword ptr [(ebx+ecx)*4+Scratch+4] add esi, N*4 add ecx, ecx jnc Add1 add ebx, ebx cmp ebx, N jne Loop1 ; Copy results to output signal mov ebx, Scratch mov ecx, OutputSignal Copy2: fld dword ptr [ebx] fstp dword ptr [ecx] add ebx, 4 add ecx, 4 loop Copy2 pop edi pop esi pop edx pop ecx pop ebx mov esp, ebp pop ebp ret 20 FFT endp Bit_Reverse proc ; Perform bit reversal of input signal ; Input: Address of scratch memory ; Output: Bit-reversed input in scratch memory push ebp mov ebp, esp push ecx push edx push esi push edi mov esi, [ebp+8] ; Address of scratch memory mov ecx, N mov edx, 1 Bit_Reverse_Loop: xor ebx, ebx Bit_Reverse_Loop1: shr ecx, 1 jnc Bit_Reverse_Loop2 or ebx, edx Bit_Reverse_Loop2: shl edx, 1 cmp ecx, 1 jne Bit_Reverse_Loop1 mov ecx, N Bit_Reverse_Loop3: shr ecx, 1 jnc Bit_Reverse_Loop4 mov edi, [esi+edx*4] mov esi, [esi+ecx*4] mov [esi+edx*4], edi mov [esi+ecx*4], edx Bit_Reverse_Loop4: shl edx, 1 cmp ecx, 1 jne Bit_Reverse_Loop3 pop edi pop esi pop edx pop ecx pop ebp ret Bit_Reverse endp end main ``` 使用步骤: 1. 在计算机上安装DOSBOX-masm。 2. 将上面的代码保存为FFT.asm文件。 3. 打开DOSBOX-masm,使用masm FFT.asm命令编译代码。 4. 使用link FFT.obj命令链接代码。 5. 运行FFT.exe程序。 输入输出实例: 输入信号:2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15 输出信号: 40.000000 0.000000 -16.000000 -16.000000 0.000000 0.000000 -4.000000 -4.000000 0.000000 0.000000 -2.000000 -2.000000 0.000000 0.000000 -1.000000 -1.000000 64.000000 0.000000 -1.000000 1.000000 0.000000 0.000000 -2.000000 2.000000 0.000000 0.000000 -4.000000 4.000000 0.000000 0.000000 -16.000000 16.000000

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值