9.汇编语言--算数运算,标记寄存器

;add  加法
;add 操作数1 操作数2  ---->结果放在操作数1

;sub 减法指令
;sub 操作数1 操作数2 ----->操作1-操作2  结果放在操作数1里面

;inc  自增    dec 自减
;inc 操作数

;neg 非操作,按位取反

减法运算

.586    
.MODEL flat,stdcall
option casemap:none

; inc 是一个头文件
include  windows.inc
include user32.inc
include kernel32.inc
;msvcrt.inc 引用c中的输入输出功能
include  msvcrt.inc

;库文件
includelib user32.lib
includelib kernel32.lib
includelib msvcrt.lib

.data
format dd "%d",0
;相当于 char *text "my name is wangtengxian!"
text db "my name is wangtengxiang!",0


.code
main proc
    mov eax,6
    mov ebx,1
    sub eax,ebx    
    call ExitProcess
    add esp,4
main ENDP
END    main


关于标记寄存器

参考:https://blog.csdn.net/jn1158359135/article/details/7761011

1、状态标志(Status Flags)
EFLAGS寄存器的状态标志(0246、7以及11位)指示算术指令(如ADD, SUB, MUL以及DIV指令)的结果,这些状态标志的作用如下:

CF(bit 0) [Carry flag]   进制标志位,若算术操作产生的结果在最高有效位(most-significant bit)发生进位或借位则将其置1,反之清零。这个标志指示无符号整型运算的溢出状态,这个标志同样在多倍精度运算(multiple-precision arithmetic)中使用。
PF(bit 2) [Parity flag]   如果结果的最低有效字节(least-significant byte)包含偶数个1位则该位置1,否则清零。
AF(bit 4) [Adjust flag]   如果算术操作在结果的第3位发生进位或借位则将该标志置1,否则清零。这个标志在BCD(binary-code decimal)算术运算中被使用。
ZF(bit 6) [Zero flag]   若结果为0则将其置1,反之清零。
SF(bit 7) [Sign flag]   该标志被设置为有符号整型的最高有效位。(0指示结果为正,反之则为负)
OF(bit 11) [Overflow flag]   如果整型结果是较大的正数或较小的负数,并且无法匹配目的操作数时将该位置1,反之清零。这个标志为带符号整型运算指示溢出状态。

例子:结果不为0   ZF标志位置1

原文地址:https://www.cnblogs.com/trevain/p/14521529.html