
AJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#4000H
MOVX A,@DPTR
MOV B,A (4000H)
SWAP A 交换
ANL A,#0FH 屏弯尘升蔽高位
INC DPTR
MOVX @DPTR,A送4001H
INC DPTR
MOV A,B
ANLA,#0FH (4000)内容屏蔽埋老高位兄首
MOVX @DPTR,A 送4002H
SJMP $
END
bcd码相减等于加备高上减数的补简闷数。如55-22就是55+(100-22)=133,丢掉进位之后,就能得到正确的结果。由于影响进位,因此cy会变为1的。
具体程序如下拦滚弯:
clr
c
mov
a,
#9ah
做100-22的减法
subb
a,
#22h
add
a,
#55h
da
a
CODESEGMENT;ASSUME CS:CODE,DS:CODE,ES:CODE;以上是给代码段和数据段段地址赋值
ORG 3020H;代码从此地址开始
S2: MOV BX,4000H
MOV AL,[BX]
MOV AH,AL;以上三句代表将4000h(偏移地址)内容送到al 和ah中
MOV CL,4 ;设置右移次数
SHR AH,CL ;将ah中数据右移4次 就是将数据第四位舍去高四位放到第四位上 而高四位变为0
INC BX ;bx指向4001h
MOV [BX],AH ;将ah中移动好的数据放到4001h中碰枯 就是原来数据的高四位
AND AL,0FH ;保留al中数据低4位 高四位舍去
INC BX ;bx指向4002h
MOV [BX],AL;将al中数据放到4002h 就是原来数据的第四位
JMP $ ;停机
CODEENDS ;代码结束
END S2;程序结束
-----------------清零程序---------------------------
CODESEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 3000H;前面你懂得
S1: MOV BX,4000H
MOV Al,00H ;al清零
MOV CX,0010H;循环次数16次
L1: MOV [BX],AX;将al中数据(地位都是0)放到橘配bx中内容为地址的内存圆吵指中(4000h)
INC BX ;指向内存中下一个单元
not al; 将al内容去反
LOOP L1;循环16次
JMP $;后面你懂得。
CODEENDS
END S1
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)