汇编语言-怎样查看标志位、怎样生成列表文件、列表文件格式

2019/10/11

加法减法,标志位:

;加法减法
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
Rval SDWORD ?
Xval SDWORD 24
Yval SDWORD 40
Zval SDWORD 50

.code
main PROC
	;INC和DEC
	mov ax,1000h
	inc ax  ;执行完之后,ax=1001h
	dec ax	;1000h
	;表达式:Rval=-Xval+(Yval-Zval)
	mov eax,Xval
	neg eax
	mov ebx,Yval
	sub ebx,Zval
	add eax,ebx
	mov Rval,eax
	;零标志位ZF
	mov cx,1
	sub cx,1
	mov ax,0FFFFh
	inc ax
	;符号标志位

	invoke ExitProcess,0
main ENDP
END main

f11逐语句调试

点击调试》开始调试,再点击调试》窗口,会出现寄存器,内存等等,点寄存器,可以考到寄存器的窗口,之后在寄存器窗口处右击,把标志点上。就可以看到。但是这里没有SF、ZF等标志位,只不过是换了个名字,看下表:根据这个可以找到OF、SF等标志位。

溢出标志OF(Over flow flag)               OV(1)        NV(0)

方向标志DF(Direction flag)                DN(1)        UP(0)

中断标志IF(Interrupt flag)                  EI(1)           DI(0)

符号标志SF(Sign flag)                      NG(1)          PL(0)

零标志ZF(Zero flag)                          ZR(1)          NZ(0)

辅助标志AF(Auxiliary carry flag)           AC(1)            NA(0)

奇偶标志PF(Parity flag)                    PE(1)           PO(0)

进位标志CF(Carry flag)                   CY(1)           NC(0)

问题1:
显示无源信息、反汇编等,可以先检查下自己的代码是否有错,比如注释等是否使用的中文下的格式
也可以试一下“调试”->“选项”->“常规”下的“要求原文件与原始版本完全匹配”设置以编辑并继续。请取消此选项

问题2:

怎样生成列表文件:

1、项目右键->属性->Microsoft Macro Assembler->Enable Assembly Generated Code Listing 选是(/Sg)

2、Assembled Code Listing File

写入生成文件名称,比如

$(ProjectName).list

扫描二维码关注公众号,回复: 10850170 查看本文章
汇编译列表文件说明

offset      [code]
offset:自本段首开始的偏移。
code:生成的二进制机器码。


列表中的符号和缩写的含义

C   表示此行来自于包含文件
=   EQU或者相当于赋值的号(=)的指令
nn[xx]  DUP 表示达: nn次xx值的副本
----   段/组地址(链接器必段解决)
R   重定位表地址 (链接器必须解决)
*   由汇编器产生的代码
E   外部地址 (链接器必须解决)
n   宏扩展的嵌入层次 (如果超过9层)
|    运算符大小重写
&   地址大小重写
nn:   表达式中的段重写
nn/  REP 或 LOCK 前缀指令
发布了63 篇原创文章 · 获赞 323 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_41289254/article/details/102512381