首页 > 编程语言 > 详细

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

时间:2021-03-12 08:37:38      阅读:27      评论:0      收藏:0      [点我收藏+]

 

;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

技术分享图片

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!