[汇编语言]数据传输指令和算术指令

通用数据传输指令

MOV

在这里插入图片描述

POP PUSH

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

XCHG

在这里插入图片描述
在这里插入图片描述

CBW(convert byte to word)

在这里插入图片描述
CWD:
AX的内容扩展到DX中,形成DX:AX中的双字,即如果(AX)的最高有效位为0,则(DX)=0,若(AX)的最高有效位为1,则(DX)=0FFFFH

算术指令

ADD

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SUB

在这里插入图片描述
对于减法对于标志位的影响:

CF是表示无符号数 减法的溢出(是否溢出)
OF是带符号数 减法的溢出
CF=1表示被减数的最高位有 向更高位的借位,否则则位0
OF=1表示两个操作数相反,而结果却与减数相同(你也可以直接记住特殊情况:正-负=负/负-正=正,这两个异常情况就是溢出)

关于NEG

在计算机系统当中,数值一律采用补码来表示。
NEG指令(求补)也就是补码的非:可以看作用0减取后面的数,并利用减法来判断对标志位的影响。(其实也就是补码的相反数
(值得一提的是,在手算的过程中,补码的非是将所有位都取反,末尾加1)
与not不同的是,neg最后会有个末尾加1

对于NEG对于标志位的影响就可以看作0-操作的减法操作

首先给出neg对标志位的影响结论:

  • CF:只有当操作数为0的时候,CF才为0,很好理解,毕竟CF考虑的是无符号数,那么肯定要借位的。
  • OF:在学习补码的运算的时候,如果是8位时,原码的计算范围位-127~127,而补码的范围位-128 ~127(不做解释了,自己去学吧)
  • 那么当0-(-128(1000 0000,补码的0唯一表示:0000 0000))时得到128,但128超过了补码的表示范围,此时就溢出,因此-128/-32768都会溢出。记住这两个就行了。
NEG的应用

求绝对值
在这里插入图片描述

	MOV AX,A
	MOV DX,A+2
	CMP DX,0
	JNS ZHENSHU
	NEG DX
	NEG AX
	SBB DX,0;带进位减CF,也就是NEG AX(0-AX)
ZHENSHU:
	MOV B,AX
	MOV B+2,DX
	INT 20H;结束程序

MUL与IMUL 以及符号扩展

在这里插入图片描述

DIV IDIV

在这里插入图片描述

习题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编程题:
1.编写程序段:(X+Y*Z-158)/X,其中X、Y、Z均是16位带符号数,已分别装入X、Y、Z单元中,要求上式计算结果的商存入AX,余数存入DX寄存器

MOV AX,Y
IMUL Z
MOV CX,AX
MOV BX,DX
MOV AX,X
CWD
ADD AX,CX
ADC DX,BX
SUB AX,158
SBB DX,0
IDIV X
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值