- 打卡等级:偶尔看看III
- 打卡总天数:40
- 最近打卡:2025-05-11 10:23:56
注册会员
- 积分
- 154
|
发表于 2023-11-30 15:07:34
|
显示全部楼层
本帖最后由 hadv 于 2023-11-30 15:09 编辑
第九讲 继续汇编指令
注意 c语言不能用 . 取出位很麻烦 要移位后做逻辑运算
一、位操作指令:
完成位传送,位状态控制、位逻辑操作、位条件转移、控制转移类等功能,一共17条。可被汇编程序识别的位地址表示方式:
(1)直接使用位地址。
(2)写成“字节地址.位号”,例如:0B8H.0
(3)位寄存器的定义名称,例如C、EA等
(4)对于位寻址寄存器,可以用“字节寄存器名.位号”,例如P1.0、PSW.4
(5)伪指令事先定义的符号地址,EQU
接下来分别介绍:
1、位数据传送指令
MOV C, bit ; (C) ⬅ (bit)
MOV bit, C ; (bit) ⬅ (C)
注:其中一个操作数必须为累加器(进位标志CY)
2、位状态控制指令
位清零指令
CLR bit ; (bit) ⬅ 0
CLR C ; (C) ⬅ 0
位求反指令
CPL bit ; (bit) ⬅ (/bit)
CPL C ; (C) ⬅ (/C)
位置位指令
SETB bit ; (bit) ⬅ 1
SETB C ; (C) ⬅ 1
3、位逻辑操作
位逻辑与
ANL C, bit ; (C) ^ (bit) 注:^为与符号
ANL C, /bit ; (C) ^ (bit)
位逻辑或
ORL C, bit ; (C) ⬅ (C) v (bit) 注:v为或符号
ORL C, /bit ; (C) ⬅ (C) v (bit)
4、位条件转移
判断进位标志C
JC rel ; 若(CY) == 1, 则(PC) ⬅ (PC) + rel , 否则顺序执行
JNC rel ; 若(CY) == 0, 则(PC) ⬅ (PC) + rel , 否则顺序执行
判断直接寻址位
JB bit, rel
JNB bit, rel
JBC bit, rel ; 若(bit) == 1, 则(PC) ⬅ (PC) + rel, (bit) ⬅ 0
5、控制转移类指令
控制程序走向,分为:
程序转移指令
LJMP addr16
AJMP addr11
SJMP rel
JMP @A + DPTR
JZ rel
JNZ rel
CJNZ、DJNZ
子程序调用
LCALL addr16
ACALL addr11
RET ; 子程序返回
其他:RETI ; 中断返回 NOP ; 空操作
具体看下 下面的例子
|
-
|