学习微机原理第1章绪论_第1页
学习微机原理第1章绪论_第2页
学习微机原理第1章绪论_第3页
学习微机原理第1章绪论_第4页
学习微机原理第1章绪论_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论主讲教师赵晓安

什么是单片机?

单片机的发展

单片机的特点和应用领域

嵌入式系统

微型计算机的运算基础第1章

绪论1.1.1单片机的概念单片机,全称单片微型计算机,是微型计算机发展的一个分支。程序存储器中央处理器并行I/O接口中断系统串行I/O接口定时器/计数器时钟振荡器数据存储器冯.诺依曼型哈佛型数据存储器CPUI/O接口程序存储器系统总线CPUI/O接口存储器系统总线DBCBAB例:PC机例:MCS-51单片机微机组成结构的两大类型运算器的核心部件是算术/逻辑单元,在控制器的控制下对二进制数进行算术运算或逻辑运算。控制器是发布操作命令的机构,是计算机的指挥中心,控制计算机的各部分协调工作,用以自动执行程序。1.中央处理器CPU主要由运算器和控制器组成。存储器(类型、结构、重要指标)RAM

正常工作时既可读又可写的存储器

DRAM动态RAM,集成度高,外加刷新电路

SRAM静态RAM,成本高、速度快

iRAM全集成化RAM,DRAM+刷新电路

NVRAMSRAM+EEPROM,不挥发即不易失

易失ROM

正常工作时只能读不能写的存储器

PROM可编程ROM,厂家一次写入

EPROM用户可编程可擦写ROM,紫外线擦除器

EEPROM电可擦写可编程ROM,在线,读快/写慢

FlashEPROM闪速可编程可擦写ROM不易失类型结构WRA0A1A2A30000B1111B………D7D0RD地址寄存器地址译码器存储阵列16×8输出数据寄存器1111B图l-216×8bitRAM的内部结构框图ROM和RAM芯片均有分四组引脚线:(ROM另有特殊的引脚线)1、地址线传送存储器的地址码,其根数决定存储单元个数即字数2、数据线传送对某一单元进行读/写的数据,双向决定一个单元内存储二进制数的位数,即字长3、控制线传送读/写控制信号,以控制读/写操作4、电源线+5V和GND线存取周期存储器从接到存储单元地址开始,到读出或写入数据为止所用的时间。重要指标例:芯片27324KB×8bit=32Kb

地址线12根,数据线8根芯片21141K×4bit

地址线10根,数据线4根存贮容量存储容量=2地址线条数×数据线的条数bit

字数(存储单元个数)×字长问:27648KB

地址线?根,数据线?根I/O接口是大规模集成电路芯片,是架设在微处理器和外设间的桥梁,实现两者之间的速度、电平和信号性质的匹配。

I/O接口微处理器I/O外设3.I/O接口和外设(1)地址总线AB(AdressBus)用来传送CPU发出的地址码,是单向总线。其条数由CPU型号决定,同时决定可直接寻址的内存地址范围.总线是在微型计算机各部分之间传送信息的公共通道,也是沟通微型计算机各种器件的桥梁。(2)数据总线DB(DataBus)用来传送数据和指令码,是双向总线。通过DB,CPU可将数据写入存储器或通过输出接口向外设输出数据,也可从存储器或通过输入接口从输入设备输入数据。数据总线条数常和所用微处理器字长相等,但也有内部为16位运算而外部仍为八位数据总线的情况,称为准16位。(3)控制总线CB(ControlBus)用来传送CPU发出的控制信号、存储器或外设的状态信号和时序信号等。每根控制总线的信息传送方向是固定、单向的,而控制总线作为整体为双向的。控制总线的条数因机器而异,每条控制线最多传送两个控制信号。4.总线单片机的发展单片机的发展过程单片机的发展趋势典型单片机产品1.1.2单片机的发展过程初期阶段IntelMCS-48完善阶段IntelMCS-51向微控制器发展阶段高速发展阶段多种机型并行发展自1974年美国Fairchild公司推出第一款8位单片机F8以来,世界许多半导体公司都投入到单片机的研发和推广应用上来,单片机技术有了巨大发展。1.1.3单片机的发展趋势性能不断提高CPU功能增强:速度、精度内部资源增多:A/D、D/A、PWM引脚的多功能化品种多样化微型化、低电压和低功耗典型单片机产品Intel公司的MCS-48、MCS-51、MCS-96系列;★Motorola公司的6801、6802、6803、6805、68HCll系列产品;Zilog公司的Z8、Super8系列产品;仙童(Fairchild)公司和Mostek公司的F8、3870系列产品;NEC公司的-87系列产品;Rockwell公司的6500、6501系列产品;Atmel、PHILIPS、LG等公司的51兼容机。★自单片机诞生以来,单片机已有70多个系列的近500个机种。国际上较有名、影响较大的公司及其产品有:优异的性能价格比1.2.1单片机的特点

单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合于在恶劣环境下工作。此外,程序多采取固化形式也可以提高可靠性。集成度高、体积小、可靠性高

为了满足工业控制要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。控制功能强单片机的系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统。1.智能仪表提高仪器仪表的测量速度和精度,加强控制功能,简化硬件结构,便于使用维修和改进2.机电一体化指集机械技术,微电子技术,自动化技术,计算机技术于一体,如:微机控制的车床,磨床3.实时控制工业控制,如对温度,压力的测量与控制,遥控4.分布式多机系统单片机作为一个终端机,对现场信息实时测量和控制5.家用电器洗衣机,电冰箱,音箱,玩具1.2.2单片机的应用领域1.3嵌入式系统嵌入式系统(EmbeddedSystem)是计算机的一种应用形式,通常指嵌入在其他设备中的微机系统。在嵌入式系统中,操作系统和应用软件通常被集成于计算机硬件系统中,使系统的应用软件与硬件一体化。嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它与一般的PC机上的应用系统不同,针对不同具体应用而设计的嵌入式系统之间差别也很大。嵌入式系统是一种用于控制、监测或协助特定机器和设备正常运转的计算机。它是集软硬件于一体的可独立工作的“器件”,主要包括:嵌入式微处理器、外围硬件设备、嵌入式操作系统以及应用软件等4部分。其中嵌入式微处理器是嵌入式系统的核心部件。按照功能和用途可进一步细分为嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器等几种类型。1.4.1计算机中数的表示方法

1.4.2计算机中的编码

1.4.3计算机中数的运算

重点解决:

在计算机中如何表示一个数?不同性质数的运算规则和算法?1.4微型计算机的运算基础

几个重要概念

不同进制数之间的互换

带符号数的原码、反码、补码4.数的定点与浮点表示

1.4.1计算机中数的表示方法1几个重要概念

重点概念1:

计算机中的数据都是以二进制形式进行存储和运算的。重点概念2:在计算机中存储数据时,每类数据占据固定长度(一般为字节的整倍数)的二进制数位,而不管其实际长度。

重点概念3:计算机中不仅要处理无符号数,还要处理带符号数和带小数点数

重点概念4:机器数与真值机器数:能被计算机识别的数真值:机器数所代表的真实值2不同进制数之间的互换

不同进制数转换成十进制数-按权展开法

表示不同进制数的尾部字母:

二(B),十六(H),八(Q),十(D)(可略)

例:

10101010B=1×27+

1×25

1×23

1×21

=

128+32+8+2=170

十→二整数部分:除2取余,直到商为0

小数部分:乘2取整,直到积为0或达到精度要求为止例:100=B=H=Q

例:0.625=B=H=Q

二进制、八进制与十六进制之间的转换

二→八三合一八→二一分三二→十六四合一十六→二一分四例:1110110B=76H9BH=10011011B0.101011B=0.ACH

问:01110110B=?Q0.1010110B=?Q3

带符号数的原码、反码、补码

原码定义:在表示带符号数时,正数的符号位为“0”,负数的符号位为“1”,数值位表示数的绝对值,这样就得到了数的原码。[X]原=0Xn-2Xn-3…X0=X 0≤X≤2n-1―11Xn-2Xn-3…X0=2n-1-X=2n-1+|X| -(2n-1―1)≤X≤0对于字长为n位的机器数,当真值X≥0时,X可表示为+Xn-2Xn-3…X0;当真值X≤0时,X可表示为-Xn-2Xn-3…X0;则X的原码可定义为:

原码的缺点:

l

“0”的原码有两种形式,这在运算中非常不方便。

[+0]原=00000000B[-0]原=

10000000Bl

原码在进行两个异符号数相加或两个同符号数相减时,需做减法运算。由于微机中一般只有加法器而无减法器,所以,为了把减法运算转变为加法运算就引入了反码和补码。原码的用途:

原码做乘除法运算方便,两数的符号和数值分别处理:积的符号为两数符号位的异或运算结果积的数值部分为两数绝对值相乘的结果反码定义:正数的反码与原码相同;负数的反码可将负数原码的符号位保持不变、数值位按位取反得到,或者将负数看作正数求原码,再将所有位按位取反得到。[X]反=0Xn-2Xn-3…X0=X0≤X≤2n-1―11Xn-2Xn-3…X0=11…1B-|X|=2n-1-|X|

-(2n-1―1)≤X≤0在n位机器数的计算机中,数X的反码定义为:例如八位微机中:[+11]原=00001011B[+11]反=00001011B[-11]原=10001011B[-11]反=11110100B[+127]原=01111111B[+127]反=01111111B[-127]原=11111111B[-127]反=10000000B[+0]原=00000000B[+0]反=00000000B[-0]原=10000000B[-0]反=11111111B

缺点:“0”的反码也有两种表示法,即+0和-0。

[+0]反=00000000B[-0]反=11111111B补码(难点)定义:正数的补码与原码相同;负数的补码等于它的反码末位加1,即[X]补=[X]反+1[X]补=0Xn-2Xn-3…X0=X 0≤X≤2n-1―11Xn-2Xn-3…X0+1=2n-|X|=2n+X-2n-1≤X<0

优点:0的补码为00000000B,只有这一种形式。[-0]补=00000000B[-0]原=10000000B[+0]补=00000000B[+0]原=00000000B[-127]补=10000001B[-127]原=11111111B[+127]补=01111111B[+127]原=01111111B[-11]补=11110101B[-11]原=10001011B[+11]补=00001011B[+11]原=00001011B[-128]补=10000000B补码的含义:

以时钟对时为例来说明,现由7点钟调到4点钟。

顺时针调:7+9=4(mod12)逆时针调:7-3=4(mod12)

由于时钟上超过12点时就会自动丢失一个数12(这个自动丢失的数叫做“模”)

7-3=7+[-3]补=7+[12+(-3)]=7+9=12+4=4已知补码求真值:已知正数的补码求真值与原码相同,只要将符号位的0变为+(正号),即得到它的真值。

已知负数的补码求真值方法1:将负数补码的数值位按位取反再加1,将符号位的1变为-(负号),即得到它的真值。方法2:用公式:X=-(2n-[X]补)已知补码为01111111B,其真值为B=+7FH已知补码为11111111B,其真值为:10000000B+1=10000001B,其真值为-01H或:X=-(28-11111111B)=-(256-255)=-1小结:已知带符号数的机器数求真值已知正数的原码、反码、补码求真值,只需将符号位的“0”改为正号“+”即可。已知负数的原码求真值,只需将原码的符号位的“1”改为负号“-”即可。已知负数的反码求真值,数值位取反,符号为改为“-”

;或用公式计算:X=-(2n-1-[X]反)已知负数的补码求真值,数值位取反加1,符号为改为“-”;或用公式计算:X=-(2n-[X]补)例:已知带符号数的机器数为0D6H,求其真值。

若0D6H是原码,则真值为:

若0D6H是反码,则真值为:若0D6H是补码,则真值为:

→11010110B-1010110B-56H→11010110B-0101001B-(0FFH-0D6H)→11010110B-0101010B-(00H-0D6H)例:已知带符号数的机器数为56H,求其真值。真值=+56H-29H-2AH

当n=8时,几种码的表示范围原码反码补码-127至+127-127至+127-128至+127

当n=16时,几种码的表示范围原码反码补码-32767至+32767-32767至+32767-32768至+32767

根据小数点的位置是否固定,数的表示方法分为定点表示和浮点表示,相应的机器数称为定点数和浮点数。

任意一个二进制数N均可表示为:

N=S·2J5

数的定点与浮点表示

计算机中如何表示实数中的小数点呢?

计算机中不用专门的器件表示小数点,而是用数的两种不同的表示法来表示小数点的位置。N的尾数,表示数N的全部有效数字,决定了N的精度。N的阶码,底为2,指明了小数点的位置,决定了数N的大小范围。sf

s1s2…sm小数点隐含位置,定点纯小数sf

s1s2…sm小数点隐含位置,定点纯整数

计算机在处理定点数时,常把小数点固定在数值位的最前面或最后面,即分为定点纯小数与定点纯整数两类,如下图所示。例如:00011000B如果看作定点纯整数,其真值为24看作定点纯小数,其真值为0.1875(1)定点表示法

(2)浮点表示法

在浮点表示法中,小数点的位置是浮动的,阶码J可取不同的数值,则在计算机中除了要表示尾数S,还要表示阶码J。因此,一个浮点数表示为尾数和阶码两部分,尾数一般是定点纯小数,阶码是定点纯整数,其形式如下图所示。小数点隐含位置

阶符阶码尾符尾数阶码部分尾数部分jfj1j2……jnsfs1s2……sm00000000000000B阶符阶码尾符 尾数

(24位)(-469.375)10=(-111010101.011)2

=(-0.111010101011)2×2+9

=(-0.111010101011)2×2+1001B[-0.111010101011]补=100010101010100000000000B[+1001B]补=00001001B例如,某计算机用32位表示浮点数,尾数部分为24位补码定点纯小数,阶码为8位补码定点纯整数。求数-469.375的浮点表示。

因此,数-469.375在该计算机中的浮点表示为:1.4.2计算机中的编码ASCII码:由七位二进制编码组成,共有128个字符编码。包括图形字符(字母、数字、其它可见字符共96个)和控制字符(回车、空格等共32个)

其中数字0~9的ASCII码为30H~39H,差30H

字母A~F的ASCII码为41H~46H,差37HD7位加奇偶校验位:无校验D7位补0

奇校验D7位使含1的个数为奇数个偶校验D7位使含1的个数为偶数个例:30H00110000HD7补0为无校验和偶校验

10110000HD7补1为奇校验BCD编码:具有十进制位权的二进制编码。最常见的是8421码注意:

0000B~1001B0~9的BCD码

1010B~1111B非法码例:

15的BCD码为00010101B=15H15=0FH100的BCD码为000100000000B=100H100=64H

压缩的BCD码56H占一个存储单元非压缩BCD码05H06H占两个单元存储方式算术运算加减运算电路及无符号数的四则运算带符号数补码运算及判OVBCD码加/减法及十进制调整逻辑运算1.与

2.或3.非

4.异或

1.4.3计算机中数的运算

计算机中的运算分为两类:算术运算:加、减、乘、除逻辑运算:与、或、非、异或1加/减运算电路及二进制无符号数的四则运算FAAiBiCiSiCi+1图1-8全加器符号图AiBiCiSiCi+10000111100110011010101010110100100010111全加器真值表

加/减运算电路减法的实现减法时SUB=1,有取反加1功能加法时SUB=0,无取反加1功能求补电路进/借位标志CY=SUBC8SUBC8CY000011101110C7C8OV000011(负)101(正)110SUB加/减标志位0/1CyFAA6B6C6S6C7=1FAA1B1C1S1C2=1FAA0B0C0S0FAA7B7S7C8=1=1图1-9八位微机加/减运算电路OV=1=1溢出标志OV=C7C8二进制无符号数的四则运算(1)加法运算二进制加法法则为:0+0=01+0=0+1=11+1=101+1+1=11例:二进制无符号数加法

被加数10111011B+加数00010110B进位00111110和11010001B1、求187+22结果:11010001B即2092、求200+200

被加数11001000B+加数11001000B进位11001000和110010000B结果:10010000B即144SUB=0,C8=0SUB=0,C8=1和=256B=400CY=0CY=11101110100110100110001010000011010000011111结果:11010001B即209SUB=0,C8=0,CY=0机器算被加数187(10111011B

)+加数22(00010110B

)0001001110001001100001000101100010010001001结果:SUB=0,C8=1,CY=1和=进位值+8位和值=256B=400机器算被加数200(11001000B

)+加数200(11001000B

)(2)减法运算法则:

0-0=0 1-0=1 1-1=00-1=1(借1当2)

被减数10111011B

-减数00010110B借位00000100差10100101B例:求187-22例:二进制无符号数减法结果:无借位,差为10100101B即165取反1101110100110100110100101001101011111001011被减数187(10111011B

)-减数22(00010110B

)借位标志CY=SUBC8=11=010101011加1X-Y=X+[-Y]补=X+2n-Y=X-Y+1减数按位取反加1求补机器算

被减数

10111011B=BBH

11101001B取反+1 加1+

11101010B=EAH进位 11111010

差 10100101B=A5H求补- 减数 00010110B=16H对减数求补后,加被减数例:求187-22结果:10100101B即165无借位,SUB=1,C8=1,CY=0说明:直接相减无借位,求补相加有进位,反之亦然。(3)乘法运算法则

0×0=00×1=1×0=01×1=1

被乘数1001B

乘数×1011B100110010000

+1001

乘积1100011B常用算法:1、左移加2、右移加3、连加(4)定点整数除法运算11100100011001011111011011010常用算法:1、移位相减法2、连减2.带符号数定点补码运算及判OV定点补码运算定律:当X,Y,X+Y,X-Y均在―2n-1~+(2n-1―1)范围内时,则:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补如果X+Y,X-Y的值不在―2n-1~+(2n-1―1)范围内时(n=8,[-128,127]),则机器就产生了溢出错误,上式不成立,运算结果无意义。

溢出判别

(overflow)

若X±Y>2n-1-1,为正溢出;若X±Y<-2n-1,为负溢出。判溢出的方法:

1、双进位位法(本书主要用此法判溢出)

OV=C8C7C8、C7相同不溢出,不同溢出。

2、双符号位法——变形码

0V=Sf’Sf

Sf’、Sf相同不溢出,不同溢出。[例1-1]在八位微机中,已知X=+76,Y=+23,求X+Y

解:[X]补= 01001100B

+[Y]补= 00010111B

01100011B

双进位位法判溢出:∵C7=0,C8=0∴OV=0[X]补+[Y]补=01100011B=[+99]补

=[(+76)+(+23)]补=[X+Y]补

[例1-2]

已知X=+76,Y=-23,求X+Y

解: [X]补= 01001100B

+ [Y]补= 11101001B

100110101B

双进位位法判溢出:∵C7=1,C8=1∴OV=0[X]补+[Y]补=00110101B=[+53]补

=[(+76)+(-23)]补=[X+Y]补

(1)定点补码加法编写出程序片段:MOVA,#76;(A)=4CH=01001100BADDA,#23;(A)=4CH+17H=63H

OV=0或:MOVA,#4CH;(A)=4CH=01001100BADDA,#17H;(A)=63H真值补码[例1-5]

在八位微机中,已知X=+76,Y=+69,求X+Y

解: [X]补= 01001100B

+ [Y]补= 01000101B

10010001B

双进位位法判溢出:∵C7=1,C8=0∴OV=1[X]补+[Y]补=10010001B=[-111]补≠[X+Y]补

两个正数的和为负数,正溢出[例1-6]

已知X=-76,Y=-69,求X+Y

解: [X]补= 10110100B

+ [Y]补= 10111011B

1

01101111B

双进位位法判溢出:∵C7=0,C8=1∴OV=1[X]补+[Y]补=01101111B=[+111]补≠[X+Y]补两个负数的和为正数,负溢出溢出后,运算结果无意义,需要将两个操作数扩大位数后,再算。例1-5可将76的补码写成004CH,69得补码写成0049H

计算:

0000000001001100B+0000000001001001B

0000000010010101B=0095HC16C15OV=0,不溢出

例1-6同理,用16位二进制数表示数,-76得补码为FFB4H-69的补码为FFBBH,再算即可。

双符号位法判断溢出——变形码用两位来表示符号:

00表示正号,11表示负号,称为变形码。用变形码进行加法运算时,两位符号位同数值位一起参加运算,运算后,若运算结果的两个符号位相同,则没有溢出;若运算结果的两个符号位不同,则发生了溢出,运算结果错误。用Sf'和Sf表示运算结果的两个符号位,则有:

OV=Sf'⊕Sf[例1-7]

在八位微机中,已知X=+76,Y=+69,求X+Y

解: [X]补 =01001100B[Y]补 =01000101B

[X]变形码 =001001100B

+ [Y]变形码 =001000101B

010010001B因为Sf'=0,Sf=1,运算后,根据Sf'⊕Sf=0⊕1=1

设置OV=1,有溢出,结果错误。(2)定点补码减法运算

[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补

步骤:1、将X、Y(或-Y)转换为补码。2、进行减法运算,符号位参与运算。判溢出的方法与加法相同[例1-9]

已知X=+76,Y=-23,求X-Y

[X]补= 01001100B

[-Y]补=11101001B00010110B 取反+1 加1

+ 00010111B

01100011B

双进位位法判溢出:OV=0∵C7=0,C8=0

01100011B=[+99]补=[(+76)-(-23)]补=[X-Y]补

求补编写出程序片段:MOVA,#76;(A)=4CH=01001100BMOVB,#-23;(B)=0E9HCLRCSUBBA,B;(A)=4CH-0E9H=63HOV=04CH0E9H同补码加法一样,补码的减法运算也可能发生溢出,因为补码的减法运算是转换成加法运算来实现的,所以其溢出的判断方法与加法相同。

[例1-11]

已知X=+76,Y=-69,求X-Y

解: [X]补= 01001100B

[-Y]补= 10111011B 01000100B 取反求补

+1 加1

+ 01000101B

10010001BOV=1(C7=1,C8=0)

,发生溢出,结果错误。

10010001B=[-111]补≠[X-Y]补

3.BCD码加法及十进制调整(1)BCD码的加法运算在两个数的BCD码进行加法运算时,当低四位和高四位都无进位并且不超过9时,可得到正确的运算结果。

[例1-13]

已知X=63,Y=24,求X+Y

解: [X]BCD码 =01100011B

+ [Y]BCD码 =00100100B

进位 0110000010000111B10000111B=[87]BCD码=[63+24]BCD码

[例1-14]

已知X=68,Y=49,求X+Y

解: [X]BCD码 =01101000B

+ [Y]BCD码 =01001001B

进位 01001000CY=0,AC=1

和10110001B

+01100110B调整

100010111BCY=1X+Y=100+17=117,CY=1,进位值为100

例1-14中,低四位有进位,高四位的值超过9,是非法码,结果错误,需进行调整。大家看到,在运算中,当低四位向四高位进位时,是逢16进位为1,即按照十六进制的原则进行的运算,而BCD码是十进制数,应按照逢十进一的原则进行运算,所以应将和的低四位加6以补上多拿走的6,调整为0111B。和的高四位1011B大于9,应向高位进位,同样加上6进行调整,变为10001B。编写出程序片段:MOVA,#68H;(A)=68H=01101000BADDA,#49H;(A)=B1HDAA;(A)=B1H+66H=17HCY=1代表100

结果:117必须写BCD码不能写真值(2)BCD码的减法运算两个数的BCD码进行减法运算时,

当低四位或高四位都不需借位时,可得到正确的运算结果。

[例1-15]

已知X=58,Y=25,求X-Y

解: [X]BCD码 =01011000B

- [Y]BCD码 =00100101B00110011B00110011B=[33]BCD码=[58-25]BCD码=[X-Y]BCD码

当低四位或高四位有借位时,按十进制运算规则,向高位借1当10,而计算机中按二进制运算规则进行,借1当作16,因此运算后必须减6进行调整。

[例1-16]

已知X=68,Y=49,求X-Y

解: [X]BCD码 = 01101000B

- [Y]BCD码 = 01001001B

差 00011111BAC=1,CY=0

0110B 00011001B00011001B=[19]BCD码=[68-49]BCD码=[X-Y]BCD码说明:如果指令系统中有BCD码的减法调整指令,即可直接用该指令完成上述调整。如果指令系统中没有BCD码的减法调整指令,则不能用减法指令直接对两个BCD码进行减法运算,而需对减数求补,进行加法运算,然后用加法运算的调整指令进行调整。对八位微机,BCD码的模为100(十进制数),减去减数实现对减数的求补。为在八位加减运算电路中运算,将100表示成9AH,即10011010B,减去减数求补。[例1-17]

已知X=68,Y=49,求X-Y

解: [X]BCD码 = 01101000B

- [Y]BCD码 = 01001001B

模100 10011010B

- [Y]BCD码 = 01001001B

+ 01010001B

10111001B

调整 + 01100000B 1 00011001B

这样,在程序中将BCD码的减法运算转换为加法运算,然后利用加法运算的调整指令进行调整,即可得到正确的结果。

求补编写出程序片段:CLRCMOVA,#9AH;(A)=9AHMODSUBBA,#49H;(A)=51HBCDADDA,#68H

;(A)=B9H非BCDDAA;(A)=19HBCDCPLC

;CY=0无借位,差=19HBCD求补相加有进位,直接相减位无借位。反之,有借位。算术运算小结1、求补码与求补

求补码:已知真值求补码求补:已知正数的补码求与之数值相同的负数的补码或已知负数的补码求与之数值相同的正数的补码2、算术运算与标志位对于运算器来说:只根据加/减命令对送给它的两个操作数进行相应的运算,并不区分是什么性质的数,并且根据运算结果,填写标志位。其运算结果代表什么完全由用户决定。一般情况下:无符号数运算判CY

定点带符号补码运算判溢出OVBCD码运算判CY,机器调整判AC、CY例:求62+98=?

1、作无符号数运算,结果0A0H=160,CY=0。一般,CY=0,结果在0~255之间,

CY=1,代表256,结果在0~256+255之间

2、做带符号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论