微机原理与接口技术绪论

学习目的:

        学习微型计算机的基本组成原理、结构、特点、接口、指令、汇编语言程序设计 ,软件硬件结合,以达到把手伸到计算机内部的目的。  

第一章 计算机的基本结构与操作

1.1计算机的数和编码系统

计算机的数制:任何数都可以用一组统一的符号和规则表示。

1.常用数制为:二,十,十六进制。

2.为了防止二义性而进行如下约定:

  • 数字后带大写字母D(decimal system)或不带任何符号,则为十进制数
  • 带大写字母B(binary system)的为二进制数
  • 带大写字母H(Hexadecimal)的为十六进制数

eg:

100,即一百:100B,为四:100H为256

 十,二,十六进制数间的关系如下图所示:

3.任何一个J进制的数N都可以表示为按权展开多项式

                                                                  NJ=∑Ki*Ji

其中:Ki可取0,1,…(J-1)的任一数码符号. Ji------权(即数的基值). J------基数,常用J=2,10,16.

eg:

525.15=5*10^2+2*10^1+5*10^0+1*10^(-1)+5*10^(-2)

1101.11B=1*2^3+1*2^2+0*2^1+1*2^0+1*2^(-1)+1*2^(-2)

4CD.2H=4*16^2+12*16^1+13*16^0+2*16^(-1)

 

4.数制之间的转换

二进制转化为十六进制:

由小数点开始,往前每四位为一组,与十六进制表相对应即可。

例如:0010 1011 1101 B

1与B 之间为小数点所在位置,往前划分组:(0010)(1011)(1101)

分别与十六进制对应为:2,B,D

所以对应的十六进制为2BDH   ps:H表示的是此表达式为十六进制表达

十六进制转化为二进制:

上述过程反过来。每一个十六进制对应4位二进制。

二进制,十六进制转化为十进制:

利用按权展开多项式,相乘相加即可。

eg:

11.11B=1*21+1*20+1*2-1+1*2-2=3.75

11H=1*161+1*160=17

十进制转化为二进制或十六进制:整数----除“基”取余法, 小数----乘“基”取整法

eg:39=27H=100111B

即用基16或2不断地去除待转换的十进制数, 直到商为0,将其余数倒序排列即可.

 eg:0.75=0.11B=0.1100B=0.CH

即用基2或16不断地去乘待转换的十进制小数, 将每次所得的整数依次排列, 直到乘积为0或满足精度要求为止.

二.带符号数的表示

1.机器数与真值----连同符号位在一起编码的数机器数;其数值部分加符号为机器数的真值. 机器中的数也应有正负之分,约定一个数的最高位为符号位: 0代表正数,1代表负数.

eg:X1=+91=0101 1011B=5BH ; +101 1011B,即 +91的真值。

eg:X2=-91=1101 1011B=DBH ; -101 1011B 若把机器数的符号位也当作数值的数为无符号数;如无符号数: DBH=219

为了运算方便,带符号数有三种表示法,分别为:原码,反码,补码.

2.原码:按上述表示,正数的符号位为0,负数的符号位为1,数值部分用其绝对值表示。

 如:

[+91]原=0101 1011B=5BH

[-91]原=1101 1011B=DBH

注:以A----F开头的数,约定前面加0;即写 成:0DBH

原码表示的数,8位数中,D7位为符号位,其余7位为数值位(为真值的绝对值).

原码表示简单易懂,且与真值转换方便,但内部运算复杂,为简化计算机结构,而引进反码和补码.

3.反码:正数的反码与其原码相同,负数的反码为:保留原码的符号位,其余各位取反。

              负数的反码也为他的正数的反码全部取反

如:[+91]反=0101 1011B=5BH

     [-91]反=1010 0100B=0A4H

注:一个负数的反码的数值部分并不是其真值的绝对值,要按位取反才能求得真值的绝对值。


4.补码:正数的补码与原码相同,负数的补码在其反码的基础上加一。

              负数的补码为它的正数的补码按位求反,且在最低位加1(求反加1)

如: [+91]补=0101 1011B=5BH

      [-91]补=1010 0101B=0A5H

注:一个补码表示的数,最高位为0为正数,其余位为其真值;最高位为1为负数,其余位并不表示真值的绝对值,必需再求补,才得其真值的绝对值.

**说明:

微机中,凡是带符号数约定用补码表示(除非特殊声明).

数可用8位或16位或32位(即2位或4位或8位16进制数)表示一个数,这称为字节,字,双字类型.

如:[+4]补=04H为字节表示(两位)

[+4]补=0004H为字表示(四位)

[-4]补=1111 1100B=0FCH为字节表示(8位)

[-4]补=1111 1111 1111 1100B=0FFFCH为字表示(16位)

16位补码实际上是8位补码的符号扩展,即一个二进制数的补码的符号位向左扩展若干位后,仍是该数的补码.

原码扩展是将符号位移至最高位,数值位补0:

如:[+4]原=04H=0004H

    [-4]原=84H=8004H 值得注意的是:只有最高位才是符号位,字节为D7位,字为D15位.

5.进行数的转化时候,应该考虑数的表示范围。

  • 8位无符号数所能表示的范围为:00H~0FFH,即0~255(0~2^8-1)
  • 16位无符号数能表示的范围为:000H~0FFFFH,即0~65535(0~2^16-1)
  • 8位补码数所能表示的范围:80H~7FH,即-128~+127(-2^7~+2^7-1)
  • 16位补码所能表示的范围:8000H~7FFFH,即 -32768~+32767(-2^15~+2^15-1)

 6.无符号数的运算(即8位或16位均表示数值).

  • (1).两个无符号数相加----两数相加,其和超过其所表示的范围时,就向更高位产生进位----用CF标志表示.
  • (2).两个无符号数相减----被减数大于等于减数,无借位;被减数小于减数有借位,结果为负.
  • (3).有进位,有借位,CF=1

7.带符号的运算

  • 两数进行运算,结果超出表示范围就会产生溢出;用OF标志表示.
  • eg:

   67H+5BH=0C2H>127       超出范围,结果为错,所以CF=0,OF=1。

why?

请看5.所述,8位补码所能表示的范围为-128~+127。

结论

  •    结果有溢出,结果为错误,无溢出,则为正确。
  •    两个带符号数运算,结果为正或负,用符   号位(最高位)判断,即D7=1,为负数;D7=0,为正数.

对带符号数运算,首先关心是否溢出;然后再关心符号位;以判断结果情况.

转载于:https://www.cnblogs.com/manner/p/9627518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值