求用汇编语言编写拆字程序

求用汇编语言编写拆字程序,第1张

ORG 0000H

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12486244.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存