4.04 逻辑运算指令

1、请说说CF的用途,至少给出使CF清零的三种方法。

答:	
	1 配合条件转移指令进行条件转移
	2 配合移位指令实现操作数之间的位转移
	3 常用子程序的出口参数,如DOS磁盘文件管理功能调用
CF清零的三种方法:
	1 CLC
	2 CMP AX,0
	3 ADD AX,0FFFFH

2、MOV AX,0可使寄存器AX清零,另外再写出三条可使AX清零的指令。

答:
	1 XOR AX,AX
	2 SUB AX,AX
	3 AND AX,0

3、设DATA1存放在AL的低4位,DATA2存放在AH的低4位,DATA3存放在SI的低4位,DATA4存放在SI的高4位。现要把这四个数据合并为16位,并存放到DX寄存器中。存放要求:DH:DATA1,DATA2;DL:DATA3,DATA4

请读懂并比较下面的2种实现方法的汇编代码,并添加注释:

; 将DATA1存放在DH
MOV DH,AL

; 设置循环计数器为4
MOV CL,4

; 将DH向左循环移位4个位置,相当于将DH的低4位清零
SHL DH,CL

; 将AH的低4位保留,其余位清零
AND AH,0FH

; 将DH和AH进行逻辑或操作,将DATA1和DATA2合并
OR DH,AH

; 将DATA3, DATA4合并后的结果存放在AX寄存器中
MOV AX,SI

; 将AX向左循环移位1个位置
SHL AX,1

; 将DL向左循环移位1个位置,并通过进位标志RCL进行进位处理
RCL DL,1

; 将AX向左循环移位1个位置
SHL AX,1

; 将DL向左循环移位1个位置,并通过进位标志RCL进行进位处理
RCL DL,1

; 将AX向左循环移位1个位置
SHL AX,1

; 将DL向左循环移位1个位置,并通过进位标志RCL进行进位处理
RCL DL,1

; 将AX向左循环移位1个位置
SHL AX,1

; 将DL向左循环移位1个位置,并通过进位标志RCL进行进位处理
RCL DL,1

; 将DL的高4位清零
AND DL,0FH

; 将DL和AL进行逻辑或操作,将DATA3和DATA4合并
OR DL,AL

; 将存放合并后的结果的AX寄存器的值保存到DX寄存器中
MOV AX,SI

; 将AX向右循环移位4个位置
ROR AX,CL

; 将DX的低8位设置为AH的值
MOV DL,AH


另外一种写法

; 设置循环计数器为4
MOV CL,4

; 将AL向左循环移位4个位置,相当于将AL的低4位移到高4位
ROL AL,CL

; 将AX的低4位清零
AND AX,0FF0H

; 将AH存放到DH
MOV DH,AH

; 将AH和AL进行逻辑或操作,将DATA1和DATA2合并
OR DH,AL

; 将DATA3, DATA4合并后的结果存放在AX寄存器中
MOV AX,SI

; 将AX向右循环移位4个位置
ROR AX,CL

; 将AH的值存放到DL寄存器中
MOV DL,AH

两种实现方法的关键区别在于数据的合并方式和移位操作的次数.

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

仙肖醒醒

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值