微机原理基础知识

微机原理考试专用材料

1 知识点

1.1 原反补码

  • *原码*:我们将数字的二进制表示的最高位视为符号位,其中 0 表示正数,1 表示负数,其余位表示数字的值。
  • *反码*:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。
  • *补码*:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。

1.2 数据类型

1.3 定点数与浮点数

1.3.1 定点数

定点数:小数点的位置在计算机的存储是约定好的,固定的。一个小数的整数部分和小数部分分别转化为二进制的表示。

例如:十进制的 25.125

整数部分:25使用二进制表示为:11001

小数部分:0.125使用二进制表示为:.001

所以合起来使用11001.001 表示十进制的25.125

1.3.2 浮点数

计算机中使用浮点数表示小数类似于以前数学中用科学计数法表示较大的数。

例如:352.47 = 3.5247 * 10的2次方

178.125转化为二进制为 10110010.001,又可表示为:1.0110010001 乘以 2的111次方(111是7的二进制表示)

10110010001 这部分被称作****尾数(M)****

111这部分被称作****阶码(P)****

正负被称作****数符(S)****: 0表示正数 , 1表示负数。

那么一个浮点数可以使用三部分表示:数符(S),阶码(P),尾数(M)。

1.4 浮点数编码

根据 IEEE 754 标准,32-bit 长度的 float 由以下三个部分构成。

  • 符号位 S :占 1 位 ,对应 b31 。
  • 指数位 E :占 8 位 ,对应 b30b29…b23 。
  • 分数位 N :占 23 位 ,对应 b22b21…b0 。

二进制数 float 对应值的计算方法为:

val=(−1)b31×2(b30b29…b23)二进制−127×(1.b22b21…b0)二进制

转化到十进制下的计算公式为:

val=(−1)S×2E−127×(1+N)

1.5 进制与ASCII码

2 例题

2.1 原补码位码转换

【题目】

试将下面8位有符号原码和补码分别扩展为16位原码和补码,并将结果用十六进制表示出来:**(填空中只需写数字, 不要加前后缀或下标!)****

(1)[X]原=(11000010)2

  1. [Y]补=(10001001)2

【解答】

二进制8位转16位:
原码去掉符号位,左侧加8个0,再在左侧添加符号位。
补码保留符号位,左侧加8个符号位值。

二进制[X]原=(11000010)2

十六位原码 1000 0000 0100 0010

十六进制对应 8 0 4 2

二进制[Y]补=(10001001)2

十六位补码 1111 1111 1000 1001

十六进制对应 F F 8 9

2.2 数据类型选地址

【题目】

某64位计算机存储系统中*****有符号整数数据***类型规定为:char为8位、short为16位、int为32位、long为64位,存储模式为小端模式,下面数据块的各个成员按顺序从地址$1000单元开始***按照边界对齐原则***依次向高地址单元存储,请根据数据块在存储器中的映像,完成下面的填空。**(注意:直接填写数据的十六进制表示,不要加前后缀或下标;若单元未被使用或内容不确定,填XX)******

数据块:short m1=-129;char m2=10;long m3=-1000;short m4=128;int m5=258;

【解答】

二进制原码 → 二进制补码 → 小端模式

二进制原码 二进制补码 十六进制 小端模式
short m1-129 1000 0000 1000 0001 1111 1111 0111 1111 FF 7F 7F FF
charm210 0000 1010 0000 1010 0A 0A
longm3-1000 1000 0000 …… 00000000 0011 1110 1000 1111 1111 …… 11111111 1100 0001 1000 FF FF FF FF FF FF FC 18 18 FC FF FFFF FF FF FF
shortm4128 0000 0000 1000 0000 0000 0000 1000 0000 00 80 80 00
intm5258 0000 0000 0000 00000000 0001 0000 0010 0000 0000 0000 00000000 0001 0000 0010 00 00 01 02 02 01 00 00

存储地址表

7F FF 0A
18 FC FF FF FF FF FF FF
80 00 02 01 00 00

2.3 浮点数编码

【题目】

某二进制浮点数字长14位,其中阶码和尾数均用补码表示,阶码5位、尾数9位(均包含符号位),分别写出其所能表示的最小规格化正数和最小非规格化正数。(**用二进制表示,填空中只需写数字,不要写小数点、不加前后缀、下标!)****

(1)最小规格化正数: ________________

(2)最小非规格化正数:______________

【解答】

二进制浮点数=2阶码[二进制]*尾数[二进制]

阶码5位的最小数补码为:10000(十进制-16)

尾数一般形式:[符号位].[小数部分]

最小规格化尾数:0,1000,0000

最小非规格化尾数:0,0000,0001

最小规格化正数:1000,0010,0000,00

最小非规格化正数:1000,0000,0000,01

2.4 定点小数

【题目】

某计算机字长为16位,请依次写出用*****补码表示***的有符号二进制定点小数(纯小数)的几个特殊值:最小值、最大负数值(绝对值最小的负数)、最小正数值和最大值。**(用十六进制表示,填空中只需写数字,不要写小数点、不要加前后缀或下标!)******

(1)最小值: _____________

(2)最大负数值:________

(3)最小正数值:________

(4)最大值:____________

【解答】

定点小数表示:[符号位].[小数部分]

最小值(-215):1000 0000 0000 0000 → 80 00

最大负数值(-1):1111 1111 1111 1111 → FF FF

最小正数值:0000 0000 0000 0001 → 00 01

最大值(215-1):0111 1111 1111 1111 → 7F FF

2.5 进制转换

【题目】

根据温度传感器AT30TSE752A的数据输出规则,回答下面问题:

(1)传感器输出值是(1101,1011.0110,0000)2时,它表示的温度值是: _______________

(2)传感器测得的温度值是-4.1875℃时,其输出值的二进制表示为:_________________

**注意:填空中按需要写正负号(+/-)、数字和小数点,不要加前后缀或下标!****

【解答】

注意原题并非定点整数和定点小数模式,因为原题中二进制模式有小数点,故用进制转换。

(1)

二进制补码: 1101101101100000

反码: 1010010010011111

加1得原码: 1010010010011111 + 1 = 1010010010100000

绝对值的二进制原码:0010010010100000

将其转换为十进制:

213+210+27+25=8192+1024+128+32=9376

所以,16位补码 1101101101100000 表示的整数是 -9376。

由于有8位小数,实际温度值是这个整数除以28=256

温度值 = -9376 / 256 = -36.625 ℃

(2)

温度值:-4.1875℃

由于有8位小数,扩展后完整数为:-4.1875*28=-1072

十进制1072的二进制原码位:1000 0100 0011 0000

二进制反码:1111 1011 1100 1111

二进制补码:1111 1011 1101 0000

输出值:1111,1011.1101,0000

2.6 汇编指令

RAMEND 是 ATmega128 SRAM 的最高地址 (通常是 $10FF)。SP 被设置为 $10FF,表示堆栈从高地址向低地址增长。*SP = $10FF*

在 AVR 微控制器中,堆栈的工作方式是 向下增长 (descending stack),并且堆栈指针 SP 总是指向 下一个空闲(可写入)的堆栈单元。

因此,当执行 PUSH R16 指令时,它的操作顺序是:

*先递减堆栈指针 (SP)。*

*然后将寄存器内容写入 SP 指向的新地址。*

SP = $10FE - 2 = $10FC。(因为 *AVR 的返回地址是16位,占用2个字节*)。

3 定时器/计数器

3.1 两类中断方式(溢出中断与比较匹配中断)

**注:对溢出中断而言,8位寄存器范围为0~255,16位寄存器为0~65535****

3.2 四类工作模式

普通模式:工作在普通模式下,寄存器TCNTn值到达上限,溢出中断。

CTC模式:此模式下只能选择T0定时器。当寄存器TCNT0值达到设定值OCR0,产生比较匹配中断。(多用于产生方波和占空比为50%的波形)

快速PWM模式:溢出中断和比较匹配中断均可

相位可调PWM模式:比较匹配中断

3.3 例题

步骤:

①选取XX(T0/T2)定时器,定时XXms,允许定时器XX(溢出/比较匹配)中断,在中断服务程序中执行xxxx。

②分频系数选择:系统时钟XXMHz条件下,分频系数选择XX分频,即定时时钟周期为XXus(如8MHz,选择1024分频,则定时时钟周期为1024/8=128us)

③初值计算:

  1. *先算计数值n*(如上若时钟周期为128us,需定时16ms,则计数值n=16ms/128us=125
  2. *若为溢出中断,计算初值:n(init)=(MAX+1)-n* (如选8位寄存器,则MAX=255,n(init)=(255+1)-125=131;*若为比较匹配中断,计算比较匹配值:n(oc)=n-1*(n(oc)=125-1=124)

④工作模式设置为XX模式(一般为CTC模式),计数值匹配/溢出后清0,保证每次定时时间相同。


微机原理基础知识
https://blog.ijune.cn/posts/286124972/
作者
LYOfficial
发布于
2025年5月27日
许可协议