BCD码的加减法
BCD码怎么加减法 -
加法:由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运希望你能满意。
当两个BCD码相加,如果和等于或小于1001(即十进制数9),不需要修正;如果相加之和在1010 到1111(即十六进制数0AH~0FH)之间,则需加6 进行修正;如果相加时,本位产生了进位,也需加6 进行修正。这样做的原因是,机器按二进制相加,所以4 位二进制数相加时,是按“逢十六进一”的原则进等我继续说。
加法:由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运希望你能满意。
当两个BCD码相加,如果和等于或小于1001(即十进制数9),不需要修正;如果相加之和在1010 到1111(即十六进制数0AH~0FH)之间,则需加6 进行修正;如果相加时,本位产生了进位,也需加6 进行修正。这样做的原因是,机器按二进制相加,所以4 位二进制数相加时,是按“逢十六进一”的原则进等我继续说。
因为CPU执行Add或者Sub指令时,是按照二进制加减法来进行运算的,结果当然就不是BCD的结果,所以需要进行进制调整以得到正确的BCD结果。
BCD码与十进制数的转换就像一场舞蹈,直观易懂。例如,将十进制数75.4转换成8421BCD码,我们得到0111 (0101.0100)BCD。反过来,1000 0101.0101 BCD则对应十进制数85.5。但请注意,同样的8位二进制代码,若当作二进制数和BCD码,其实际数值是不同的,比如00011000在二进制和BCD中的含义就大相径庭。
汇编指令ascii或加减法调整指令为什么加减6 -
比如一个数11要转为BCD码,显然11>9,要向高字节进位,所以低字节就只剩11-10,而高字节一位表示低字节的16,所以这个数要+16,所以这个数的BCD码为11-10+16,也就是11+6。
BCD码:也叫做二一十进制编码(binary coded decimal),几种常见的BCD码有8421码,2421码,余3码,余3循环码,其中余3码和余3循环码都是无权码。余3循环码:余3循环码可看成将格雷码首尾各3种状态去掉后得到的,相邻两个编码只有一位不同。优点:1. 构成计数器时每次状态转换中只有一个触发器发生好了吧!
寄存器AX,BX,CX,DX是否有区别,可以随便使用吗? -
2)在除法指令中存放被除数和商\x0d\x0a(3)用在非组合型BCD码运算的调整中\x0d\x0a(4)用在某些串操作指令(LODS,STOS,SCAS)中\x0d\x0a(5)在输入/输出指令中作数据寄存器\x0d\x0aAH:在LAHF指令中作目的寄存器\x0d\x0aAL:\x0d\x0a(1)用在组合型BCD码的加减法调整指令中\x0d好了吧!
全加器的逻辑表达式为:S=ABCi-1+ABCi-1+ABCi-1+ABCi-1=ABCi-1,Ci+1=ABCi-1+ABCi-1+ABCi-1+ABCi-1 =(AB)Ci-1+AB。(3)全加器作为基础逻辑器件,应用广泛。它不仅支持二进制的加减法,还能用于BCD码的加减运算,码组变换以及数码比较等任务,体现了其在数字系统中的核心地位。
汇编语言中的加减法~~~困扰我很久了。。有高人吗 -
加减法只有一套指令,因为这一套指令同时适用于有符号和无符号。下面这些指令:mul div movzx …是处理无符号数的,而这些:imul idiv movsx …是处理有符号的。举例来说:内存里有一个字节x 为:0x EC ,一个字节y 为:0x 02 。当把x,y当作有符号数来看时,x = -20 ,y = +2 。
加法和减法的操作数可以直接使用ASCII码,而不必把高位0011清为0000,AAA和AAS指令就是专门为ASCII码操作数或非压缩BCD码操作数的加减法而设计的。AAA和AAS的调整方法如下:执行加法指令(ADD、ADC)或减法指令(SUB、SBB)后,结果存放在AL寄存器中:(1)如果(AL)0~3= 0~9,且AF=0,则(AL)4~等会说。