当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。
sub
sub A, #K
伪代码描述
| TEMP = (~K) & 0xff
AC = ((A & 0x0f) + (TEMP & 0x0f) + 1) >> 4;
SC = ((A & 0x7f) + (TEMP & 0x7f) + 1) >> 7;
C_A = A + TEMP + 1;
C = C_A >> 8;
A = C_A & 0xff;
OV = C ^ SC;
Z = A == 0 ? 1 : 0;
|
指令描述
累加器A和立即数K减法,结果存储到累加器A;
注意
按照伪代码描述的算法,减法C
标志在有借位时为0
,无借位时为1
。
范例
| //0x68 - 0x4C
//C = 0, AC = 0, Z = 1, OV = 0
mov A, #0x68 //A = 0x68
sub A, #0x4C //A = 0x1C, C = 1, AC = 0, Z = 0, OV = 0
|
sub A, R
伪代码描述
| TEMP = (~K) & 0xff
AC = ((A & 0x0f) + (TEMP & 0x0f) + 1) >> 4;
SC = ((A & 0x7f) + (TEMP & 0x7f) + 1) >> 7;
C_A = A + TEMP + 1;
C = C_A >> 8;
A = C_A & 0xff;
OV = C ^ SC;
Z = A == 0 ? 1 : 0;
|
指令描述
累加器A和寄存器R减法,结果存储到累加器A;
注意
按照伪代码描述的算法,减法C
标志在有借位时为0
,无借位时为1
。
范例
| //0x7B - 0xF3
//C = 0, AC = 1, Z = 1, OV = 0
mov A, #0xF3 //A = 0xF3
mov 0xCB, A //[0xCB] = 0xF3
mov A, #0x7B //A = 0x7B
sub A, 0xCB //A = 0x88, C = 0, AC = 1, Z = 0, OV = 1
|