上篇 学习指导

第1章 计算机基本知识

1.1 教学指导

【教学要求】

◉ 掌握信息在计算机中的存储形式,为后面程序设计等内容的学习打下坚实基础。

◉ 掌握带符号数在计算机中的表示方法。

◉ 掌握BCD数的编码方式以及BCD数运算中出现的问题。

◉ 参考学时数:3。

【教学关键点】

1.数制及相互转换

这些知识比较容易掌握,介绍各种进位制的基数,如二进制的基数是2,三进制的基数是3,十六进制的基数是16等,举例即可。最后总结为两句话(在计算机中主要使用二进制的、十六进制的和BCD):

• 任意进位制数转换成十进制数:按位权展开(按其进位制基数的幂)。

• 十进制数转换成任意进位制数:辗转相除(按其进位制基数除)。

2.带符号数在计算机中的表示以及在运算中出现的问题

由于计算机只能处理0和1所组成的信息,故在计算机中,任何信息都要转换成0和1的二进制数串,二进制位数越多,表达的信息越丰富,如颜色、声音、气体浓度、压力大小、符号、汉字等。如何将这些信息转换成0、1二进制数字串呢?通过传感器将物理信号转换成模拟或数字电信号,若是模拟信号,还要通过A/D转换器将其转换成数字信号等。符号和汉字可以通过规定的二进制编码实现。所以,带符号数的符号也要用0或1来表示,规定“+”以0表示,“−”以1表示。

(1)以+1和−1的原码为典型例题,对进行加法运算时出现的问题,讨论其原因,引导学生思考,从而提出,带符号数用补码表示。

例如:+1的原码(用8位二进制表示)为00000001,

−1的原码(用8位二进制表示)为10000001。

完成(−1)+(+1)运算:

其原因是,符号也参加运算,计算机并不知道那是符号。

(2)解决问题的方法是改变带符号数的表示方法。

在此,讲述补码为什么可以解决以上问题。可以从1位十进制数开始,若以10为模,则3和7互补,10−7=3,10+3=13,若丢弃进位,则10−7和10+3所得结果相同。故减7可以用加3来运算,前提是必须丢弃进位,而计算机的结构正好满足这个条件。可以举二进制数的例题来进一步解释,要注意使用8位二进制数时,模为100H,而使用16位二进制数时,模为10000H。

(3)带符号数补码的求法。

教材这里的教材特指《微机原理与接口技术(第3版)》(ISBN 978-7-121- -),以下同。介绍了如何求一个带符号数的补码。实际上,用户在编写程序时并不需要去求它,仅按其数学书写方式即可,如−8A5H。此处是原理介绍,让学生知道带符号数在计算机中是如何处理的,在调试程序时,出现类似的问题可以理解。

(4)对计算机中的一个二进制数的理解完全取决于程序设计者。

例如:10010011可表示为无符号数147(93H)、带符号数−109(93H)和BCD数93。

3.十进制数在计算机中的表示以及在运算中出现的问题

(1)十进制数有0~9共10个计数符号,除0以外其他符号计算机都不能理解。如何用0和1来编码0~9这10个计数符号呢?考虑采用4位二进制编码,从0000(0)到1001(9),去除1010~1111这6个符号,用这种编码方式表示0~9计数符号,就称为二进制编码的十进制数,即BCD(Binary Code Decimal)码。

(2)BCD数运算时出现的问题。

例如:88+49=137 63−25=38

这两个运算的结果不是BCD数,结果也不对。为什么?这是不同的进位制所产生的。

在加法运算中,低4位的加法结果向前产生了进位,但它是达到16后才进位的;而高4位的加法结果超过10,但还没有进位,这4位二进制码已不是BCD的计数符号。

在减法中,低4位的减法向前产生了借位,而借过来的是16,并非10,即多借了6。

(3)解决BCD数在运算时产生的问题的方法是对运算结果进行调整。

其调整原则是:

• 运算结果中个位(D3向D4)有进位或借位,则加6(0110)或减6。

• 运算结果中十位(D7向前)有进位或借位,则加60H(01100000)或减60H。

• 运算结果中的个位超过计数符号1001(9),则加6(0110)或减6。

• 运算结果中的十位超过计数符号1001(9),则加60H(01100000)或减60H。

例如: 88+49=137 63−25=38

在程序设计时,若设计者做BCD运算,仅需写相应的调整指令,让计算机自动调整,而不是靠手工调整。这里仅介绍原理。

(4)教材中所介绍的BCD数是无符号的,用1个字节(8位二进制数)表示十进制数的十位和个位,称为压缩BCD数;若仅有个位,而十位为0(即1个字节的高4位总是0,低4位为十进制数的个位),称为非压缩BCD数。后面的章节中会用到这些概念。

4.有关ASCII码

将26个大写西文字母和26个小写西文字母、数字0~9,以及一些常用符号用7位二进制编码,最多可以表达128个符号。ASCII码是一种标准,可以让学生熟悉ASCII码表,这对后面的程序设计有帮助。

为什么只用7位二进制编码而不用8位呢?

• 7位二进制码表示西文足够了,而汉字即使用16位二进制码,也只能表达65536个汉字。

• 最高位留作奇偶校验时用(后面讲FR寄存器的PF标志时会用到)。

注意:现在的ASCII码有扩展,扩展的ASCII码是8位的。

5.二进制数的算术运算和逻辑运算

二进制数的运算按其进位(借位)原则,运算较简单。

例如:计算11010110×01011001。

又如:100101001100110 ÷ 1011011=11010001余11011。

即4A66H÷5BH=D1H余1BH。

【教学难点】

(1)带符号数在加、减运算时的溢出问题。要讲清楚该问题,需将参与运算数据的各种可能都列出,如:

• 两数都为正数,这时加法的进位进入符号位,使符号位为1。

• 两数都为负数,这时加法的进位进入符号位,使符号位为0。

• 一个正数和一个负数或两个较小的正、负数相加,一般不会溢出。

• 要注意两个较小的负数问题,因负数用其补码表示,所以看似大的数实际较小。

(2)压缩BCD和非压缩BCD的格式,调整原理。