汇编语言程序设计:一个字的压缩BCD码的减法
如题。本人汇编语言属于白痴级别,由于课程调整,硬是要求学。所以请高人写得尽量详尽,多写提示。非常感谢!!我们做实验的机器字长是8位。并且我们的编程是在DOS状态下输入的,...
如题。
本人汇编语言属于白痴级别,由于课程调整,硬是要求学。所以请高人写得尽量详尽,多写提示。非常感谢!!
我们做实验的机器字长是8位。并且我们的编程是在DOS状态下输入的,也就是说一上来要用A命令指定起始内存位置。比如:a 2000。这道题就是实现一个压缩BCD码的减法,任意的两个数。并且要写出算法。请回答的高手尽量把代码和注释写出来,我便于理解,谢谢了! 展开
本人汇编语言属于白痴级别,由于课程调整,硬是要求学。所以请高人写得尽量详尽,多写提示。非常感谢!!
我们做实验的机器字长是8位。并且我们的编程是在DOS状态下输入的,也就是说一上来要用A命令指定起始内存位置。比如:a 2000。这道题就是实现一个压缩BCD码的减法,任意的两个数。并且要写出算法。请回答的高手尽量把代码和注释写出来,我便于理解,谢谢了! 展开
3个回答
展开全部
BCD码貌似不是重点吧~我教材上也只有一小段说明而已~压缩的BCD码剑法的十进制调整指令是DAS~。。。。你题目太笼统了~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
十进制数减法调整指令DAS(Decimal Adjust After Subtraction)
该指令于调整AL的值,该值是由指令SUB或SBB运算两个压缩型BCD码所得到的结果。其调整规则如下:
如果AL的低四位大于9,或标志位AF=1,那么,AL=AL-6,并置AF=1;
如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1;
如果以上两点都不成立,则,清除标志位AF和CF。
经调整后,AL的值仍是压缩型BCD码,即:两个压缩型BCD码相减,并进行调整后,得到的结果还是压缩型BCD码。
指令格式:DAS
受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)
理解十进制数减法调整指令DAS,是解决这个问题的关键。以3546-1978为例,正确结果是1568。指令代码如下:
mov ax,3546h ;一个字的压缩BCD码(被减数)
sub al,78h ;46h-78h
das ;十进制数减法调整
xchg ah,al ;交换寄存器中的数据(因为das指令只能调整AL寄存器的值)
sbb al,19h ;带借位减法
das ;十进制数减法调整
xchg ah,al ;交换回来,实现一个字的压缩BCD码减法
该指令于调整AL的值,该值是由指令SUB或SBB运算两个压缩型BCD码所得到的结果。其调整规则如下:
如果AL的低四位大于9,或标志位AF=1,那么,AL=AL-6,并置AF=1;
如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1;
如果以上两点都不成立,则,清除标志位AF和CF。
经调整后,AL的值仍是压缩型BCD码,即:两个压缩型BCD码相减,并进行调整后,得到的结果还是压缩型BCD码。
指令格式:DAS
受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)
理解十进制数减法调整指令DAS,是解决这个问题的关键。以3546-1978为例,正确结果是1568。指令代码如下:
mov ax,3546h ;一个字的压缩BCD码(被减数)
sub al,78h ;46h-78h
das ;十进制数减法调整
xchg ah,al ;交换寄存器中的数据(因为das指令只能调整AL寄存器的值)
sbb al,19h ;带借位减法
das ;十进制数减法调整
xchg ah,al ;交换回来,实现一个字的压缩BCD码减法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询