串讲及习题解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
片内程序存储器、片外程序存储器 MCS-51存储器物理结构见下图所示:
内部数据
存储器 内部程序
外部程序 存储器 (ROM)
外部数据 存储器 (RAM)
存储器
8XX51
MCS-51存储器物理结构
从逻辑上看,MCS-51有三个存储器空间: 片内数据存储器、片外数据存储器 片内、片外统一编址的程序存储器 MCS-51的存储器逻辑结构如图1-2所示。
符号int0外部中断0p32引脚的低电平或下降沿信号0003hint1外部中断1p33引脚的低电平或下降沿信号0013ht0定时器0中断定时计数器0计数回零溢出000bht1定时器1中断定时计数器1计数回零溢出001bht2定时器2中断定时计数器2中断tf2或t2ex信号002bhtiri串行口中断串行通信完成一帧数据发送或接收引起中断0023h二中断控制的有关寄存二中断控制的有关寄存1中断的允许和禁止中断的允许和禁止中断控制寄存器中断控制寄存器ieieieie寄存器的各位对应相应的中断源如果允许寄存器的各位对应相应的中断源如果允许该中断源中断则该位置该中断源中断则该位置11禁止中断则该位禁止中断则该位0eaeaet2et2eseset1et1ex1ex1et0et0ex0ex0中断中断总控总控用用t2t2串行口串行口t1t1int1int1t0t0int0int0eaea
由此得出求补的通用方法:
一个数的补数=模-该数,这里补数是对任意的数而言, 包括正、负数。而补码是针对符号机器数而言。
设有原码机器数X, X>0 则 [X]补=[X]原 ; X<0 则 [X]补= 模-| 例如对八位二进制数: X1=+4:[X1]补=00000100=04H; X2=-4:[X2]补 = 100H-4=FCH 对于16二进制位数: X2=+4: [X2]补= 0004H; X2=-4: [X2]补 = 10000H-4=FFFCH
此外还有如下寄存器,它们将在后面章节介绍:
IP——中断优先级控制寄存器。 IE——中断允许控制寄存器。 TMOD——定时器/计数器方式控制寄存器。 TCON——定时器/计数器控制寄存器。
TH0,TL0——定时器/计数器0。
TH1,TH1——定时器/计数器1。 SCON——串行端口控制寄存器。 SBUF——串行数据缓冲器。 PCON——电源控制寄存器。
CY=1 两个负数相加,和应为负数,而结果01100101B却为 正数,显然错误。其原因是和数-155小于8位符号数所能表 示的补码数的最小值-128,也产生了溢出。
结论:当两个补码数相加结果超出补码表示范围,就会产生溢出,导致结果错 误。计算机中设立了溢出标志位OV,通过最高位的进位(符号位的进位) CY和次高位进位(低位向符号位的进位)CY-1异或产生。
2.1 寻址方式
1、立即寻址
指令中直接给出操作数的寻址方式。在51 系列单片机的指令系统中,立即数用一个 前面加 “#“号的8位数(#data,如 #30H)或16位数(#data16,如 #2052H)表示。立即寻址中的数,称为 立即数。
例如指令:MOV A,#30H
2、直接寻址 操作数的地址直接出现在指令中。 寻址对象: ①内部数据存贮器:使用它的地址。
(2)反码
正数的反码与原码相同; 负数反码:符号位不变,数值部分按位取反。
例 求8位反码机器数:
X1=+4 [X1]原=00000100B=04H [X1]反=00000100B=04H X2=-4 [X2]原=10000100B=84H
[X2]反=11111011B= FBH
取反
(3)补码 常规求补码法 ① 正数的补码与原码相同;负数补码为其反码加1。 例:求 8位补码机器数: X1=+4 : [X1] 原 =[X1] 反 =[X1] 补 = 00000100=04H X2= - 4:[X2]原 =10000100 [X2]反 = 11111011 [X2]补 = [X2] 反+1= 1111100=FCH 8位补码数的数值范围为 -128~127(80H~7FH)。 16位补码数的数值范围为 -32768~32767 ( 8000H~7FFFH )。 字节80H和字8000H的真值分别是-128(-80H)和 -32768(-8000H)。补码数80H和8000H的最高位既代表了 符号为负,又代表了数值为1。
FFFFH
外部
ROM
1000H FFH 0FFFH FFFFH
地址重叠
0FFFH
(增强型)
内部ROM (EA=1) 8051
80H 7FH 00H
特殊功能 寄存器
外部
外部ROM (EA=0)
H0000
RAM
内部数据 RAM
0000H
8031
H0000
程序存储器
内部数据存储器
外部数据存储器
图1-2 MCS-51单片机的存储器逻辑结构
结果相同,其真值为36H(=54)。由于数的八位限 制,最高位的进位是自然丢失的(在计算机中。进位被存 放在进位标志CY中的。)用补码表示后,减法均可以用补 码相加完成。因此,在微机中,凡是符号数一律是用补码 表示的。用加法器完成加、减运算,用加法器和移位寄存 器完成乘、除运算,简化计算机硬件结构。
有符号数有原码、反码和补码三种表示法。
1.原码 数值部分用其绝对值,正数的符号位用“0”表示,负数 的符号位用“1”表示。如: X1=+5=+00000101B [X1]原=00000101B X2=-5=-00000101B [X2]原=10000101B
符号位
8位原码数的范围为FFH~7FH(-127~127)。原码数00H和 80H的数值部分相同、符号位相反,它们分别为+0和-0。16 位原码数的数值范围为FFFFH~7FFFH(-32767~32767)。 原码数0000H和8000H的数值部分相同、符号位相反,它们 分别为+0和-0。 原码表示简单易懂,而且与真值的转换方便。但若是两 个异号数相加,或两个同号数相减,就要做减法。为了把 减运算转换为加运算,从而简化计算机的结构,就引进了 反码和补码。
例2: 34-68=34+(-68)=-34
34=22H=0010 0010B
68=44H=0100 0100B 做减运算过程: [-68]补=1011 1100B 用补码相加过程:
结果相同。因为符号位为1,对其求补,得其真值: -00100010B,即为-34=-22H。 由上面两个例子还可以看出, 1)用补码相加完成两数相减,相减若无借位,化为补码相加就会有进位;相 减若有借位,化作补码相加就不会有进位。 2)补码运算后的结果为补码,需再次求补才能得到运算结果的真值。
OV:溢出标志 反映补码运算的运算结果有无溢出 有溢出 OV=1,无溢出OV=0。 -:无效位。 P:奇偶标志 运算结果有奇个“1”,P=1; 运算结果有偶个“1”,P=0。 影响标志位的指令及其影响方式见第2章。 SP—堆栈指针。8XX51单片机的堆栈设在片内RAM, 对堆栈的操作包括压入(PUSH)和弹出(POP)两种方式, 并且遵循后进先出的原则,但在堆栈生成的方向上,与 8086正好相反8XX51单片机的堆栈操作遵循先加后压,先弹 后减的顺序,按字节进行操作。
引脚 EA 的接法决定了程序储存器的0000~ 0FFFH 4KB地址范围是在单片机片内还是片外。
表1-2中还标注了各SFR的名称、字节地址、可 寻址位的位地址和位名称。
21个特殊功能寄存器的名称及主要功能介绍如下, 详细的用法见后面各节的内容。 A—累加器,自带有全零标志Z,A=0则Z=1;A≠0 则Z=0。该标志常用于程序分支转移的判断条件。 B—寄存器,常用于乘除法运算(见第2章)。 PSW—程序状态字。主要起着标志寄存器的作用, 其8位定义见表1-3。
电路原理图
第2章
计算机通过执行程序完成人们指定的任务,程 序由一条一条指令构成,能为CPU识别并执行的指 令的集合就是该CPU的指令系统。 MCS-51单片机汇编语言指令格式: 操作符 目的操作数,源操作数
操作符指明该指令完成什么操作; 操作数是指明该指令的操作对象。 目的操作数是存放结果的。 指令中操作数提供的方式称为寻址方式。
如:X=-15 [-15]补=F1H=11110001B 求补得00001110+1=00001111B=15
③ 当数采用补码表示时,就可以把减法转换为加法。 例1:64-10=64+(-10)=54 [64]补=40H=0100 0000B [10]补=0AH=0000 1010B [-10]补=1111 0110B 用补码相加过程 做减法运算过程:
几点说明: ① 根据两数互为补的原理,对补码求补码就可以得到其原码, 将原码的符号位变为正、负号,即是它的真值. 例如求补码数FAH的真值 。因为FAH为负数,求补码 [FAH]补=86H=-6, 所以补码数FAH的真值为-6. 例如求补码数78H的真值 。因为78H为正数求补码 [78H]补=78H=+120 78H的真值为120 ② 一个用补码表示的机器数,若最高位为0,则其余几位即 为此数的绝对值;若最高位为1,其余几位不是此数的绝 对值,必须把该数求补(按位取反(包括符号位)加1), 才得到它的绝对值。
串讲及习题解答
绪论
0.2.3 计算机中的有符号数的表示
计算机中的机器数分为有符号数和无符号数:
有符号数:机器数的最高位为符号位,符号位为“0”表
示正数,符号位为“1” 表示负数。
无符号数:机器数的最高位没有符号意义,只有数值
意义。 8位无符号数的表示范围为 0~255(000000B~11111111B) 16位无符号数的表示范围为0~65535 (0000000000000000B ~1111111111111111B)
②快速求补码法: 将负数原码的最前面的1和最后一个1之间的每一位取反。例如 x=-4: [x]原 = 10000100 [x]补 = 11111100=FCH
取反
③ 模-|X|求补码 两数互补是针对一定的“模”而言,“模”即计数系统的过 量程回零值,例如时钟以12为模(12点也称0点),4和8互补, 一位十进制数3和7互补(因为3+7=10,个位回零,模为101= 10),两位十进制数35和65互补(因为35+67=100,十进制 数两位回零,模为102=100),而对于8位二进制数,模为28= 100000000B=100H,同理16位二进制数,模为216=10000H
例3 105+50=155 105=69H 50=32H 若把结果视为无符号数,为155,结果正确。若结果视为符 号数,结果为-101,这显然是错误的。其原因是和数155大 于8位符号数所能表示的补码数的最大值127,使数值部分占 据了符号位的位置,产生了溢出,又如: -105-50=-155
0.2.4 进位和溢出
第1章
1.2 存 储 器
MCS-51的储存器结构与常见的微型计算机的配置方法不同, 它将程序存储器和数据存储器分开,各有自己的寻址方式、控 制信号和功能。 程序存储器用来存放程序和始终要保留的常数。 数据存储器存放程序运行中所需要的常数和变量。 从物理空间看,MCS-51有四个存储器地址空间:
片内数据存储器、片外数据存储器
②特殊功能寄存器:既可使用它的地址,也可以 直接使用 寄存器名。
; A=56H 机器码 E540 MOV 40H,41H ; 机器码为854140 内部RAM (41H)→(40H) (40H)=(41H)=78H MOV P0,#45H ;45H→P0, P0为直接寻址的 SFR,其地址为 80H, 机器码为758045
D7 CYD6 ACD5 F0D4 RS 1
D3
D2
D1 -
RS0 OV
D0 位地址 P 位名称
其中 CY:进/借位标志 反映最高位的进位借位情况,加法为进位、减 法为借位。 CY=1,有进/借位 ; CY=0,无进/借位。 AC:辅助进/借位标志 反映高半字节与低半字节之间的进/借位, AC=1有进/借位; AC=0无进/借位 。 FO:用户标志位。可由用户设定其含义。 RS1,RS0:工作寄存器组选择位。
DPTR——数据指针寄存器 用来存放16位地址值,以便用间接寻址或变址寻址片 外存储器。DPTR可分成DPL和DPH两个8位寄存器分别使用。
P0 P1 P2 P3——I/O端口寄存器
是四个并行I/O端口映射入SFR中的寄存器。通过对该 寄存器的读/写,可实现从相应I/O端口的输入/输出。 例如:指令 MOV P1,A实现了把A累加器中的内容从P1端口输 出的操作。指令MOV A,P3实现了把P3端口线上的信息输入 到A中的操作。
例4 74+74=4AH+4AH
01001010
0
01 1 0 0 1 0 1 0 10010100 CY CY-1=0 1=1…..有溢出 OV=1
CY CY-1
无进位 CY=0
由上两例中,例3的 OV=1、CY=1,例4中OV=1、CY=0,可 见溢出和进位并非有必然的联系,这是由于两者产生的原因是不同的, 两者判断的方法也是是不同的。重述如下: 溢出OV:两个补码数相加结果超出补码表示范围而产生,OV= CY异或CY-1 (相同为0不同为1) 进位CY: 当运算结果超出计算机位数的限制(8位、16位),会 产生进位,它是由最高位计算产生的,在加法中表现为进位,在减法中 表现为借位。
相关文档
最新文档