第1章汇编语言基础知识
1.教学目的:了解计算机语言的分类和特点,掌握基于微处理器的计算机系统构成和不同进位计数制之间的转换及计算机中数的表示。
2.教学要求:
①了解计算机语言的分类和特点
②掌握计算机的系统构成
③熟练掌握不同进制之间转换和计算机中数的表示
3.教学重点:
①不同进制之间转换
②补码表示法
4.掌握难点:
①不同进制之间转换
②补码表示法
5.教学进程安排:P1~P18
6.教学方法:
①一般叙述基本概念
②着重课堂讲授不同进制之间转换、数的补码表示法
7.教学内容摘要:
1.1 计算机系统的组成
微型计算机系统包括硬件和软件两部分。
1.1.1 硬件系统
图1.1给出了微型计算机组成框图。
图1.1 微型计算机硬件系统组成
1.运算器
2.控制器
3.存储器
(1)“读操作”:是指CPU将存储器中存储的某一部分信息取出来进行处理的操作。(2)“写操作”:是指CPU用新的信息刷新存储器原来存储的某一部分内容的操作。
注意:存储器的读/写操作是以字节为单位按存储器存储单元地址进行的。 4.输入/输出设备
计算机硬件系统由运算器、控制器、主存储器和输入/输出接口五大部件组成。这五大部件通过总线连接起来,它们共同构成了计算机的基本硬件系统。
1.1.2 软件系统
计算机软件可以分成系统软件和应用软件两大类,图1.2表示了计算机软件的层次。
图1.2 软件系统的层次
1.2 计算机语言
计算机语言:机器语言、汇编语言、高级语言
1.2.1 机器语言
机器指令:由硬件电器设定的、计算机能够接受的一组二进制代码。每一条指令完成一个特定的操作。
指令系统:某种CPU 所有机器指令的集合。
机器语言程序:为了让计算机完成特定任务,按一定顺序组织到一起的机器指令系列。 例:100+256
特点:理解困难,容易出错,不便于交流。
1.2.2 汇编语言
汇编指令:用助记符表示的机器指令,与机器指令一一对应。
汇编语言:汇编指令和编写程序的规则。用汇编语言编写的程序叫做汇编源程序。 汇编程序:是一个系统软件,其功能是将汇编源程序翻译成机器指令。
二进制代码:
10111000 01100100 00000000 00000101 00000000 00000001 10100011 00000000 00100000 十六进制代码: B8 64 00 05 00 01 A3 00 20
图1.3表示了汇编程序到机器指令的转换。
图1.3 汇编程序转换为机器指令
例:100+256
mov ax,100
add ax,256
mov [2000],ax
特点:直接控制硬件,速度快,多用于实时控制
1.2.3 高级语言
高级语言:接近自然语言和数学公式。如:Basic和C语言等等。用高级语言编写的程序叫做高级语言源程序。
图1.4表示了高级语言程序到机器指令的转换。
图1.4 高级语言程序转换为机器指令
例:100+256
a=100+256
特点:简单易学,便于理解
1.3 计算机中数的表示
信息在输入计算机内部时,都必须用基2码编码表示,其原因如下:
1.基2码在物理上最容易实现。
2.基2码用来表示二进制数,其编码、加减运算规则简单。
3.基2码的两个符号“1”和“0”正好与逻辑数据“真”与“假”相对应,为计算机实现逻辑运算带来了方便。
1.3.1 数制简介
表1.1 各数制基数及进位规则
加法规则:0+0=0, 0+1=1, 1+0=1, 1+1=0(高位进1)
乘法规则:0Χ0=0,0Χ1=0,1Χ0=0,1Χ1=1
例:
00001001
+00001011
00010100
逻辑运算:
?“与”运算(AND:∧):只有当A、B两个变量的值都为1时,结果才为1。
?“或”运算(OR: ∨ ): A、B两个变量中只要有一个为1,结果就为1
?“非”运算(NOT:—):1“非”的结果为0;0 “非”的结果为1;
?“异或” 运算(XOR:∨):当两个变量的取值相异时结果为1
表1.2 二进制逻辑运算真值表
表1.3 各种数制对照表
十进制二进制八进制十六进制BCD码
0 0000 0 0 0000
1 0001 1 1 0001
2 0010 2 2 0010
3 0011 3 3 0011
4 0100 4 4 0100
5 0101 5 5 0101
6 0110 6 6 0110
7 0111 7 7 0111
8 1000 10 8 1000
9 1001 11 9 1001
10 1010 12 A 0001 0000
11 1011 13 B 0001 0001
12 1100 14 C 0001 0010
13 1101 15 D 0001 0011
14 1110 16 E 0001 0100
15 1111 17 F 0001 0101 1.3.4 各数制间的转换
(1)十进制整数转换成二进制整数
方法:除2取余法
注意:第一次得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位。 【例1-1
即A 0=1 即A 1=0 即A 2=0 即A 3=0 即A 4=0 即A 5=1 即A 6=1;
结束
最后结果为(97)10 =(A 6 A 5 A 4 A 3 A 2 A 1 A 0)2=(1100001)2
(2)十进制小数转换成二进制小数
方法:乘2取整法
注意:最后将每次得到的整数部分(必定是0或1)按先后顺序从左到右排列即得到所对应二进制小数。
【例1-2】将十进制小数0.6875转换成二进制小数。如下:
0.6875 × 2
1.3750 整数部分为1,即A -1=1 0.3750 余下的小数部分 × 2
0.7500 整数部分为0,即A -2=0 0.7500 余下的小数部分 × 2
1.5000 整数部分为1,即A -3=1 0.5000 余下的小数部分 × 2
1.0000 整数部分为1,即A -4=1 0.0000 余下的小数部分为0,结束
最后结果为(0.6875)10=(0.A -1A -2A -3A -4) 2 =(0.1011)2
(3)一般的十进制数转换成二进制数
为了将一个既有整数又有小数部分的十进制数转换成二进制数,可以将其整数部分和小数部分分别进行转换,然后再组合起来。例如: (4)二进制数转换十进制数
方法:按位权展开后相加。
例如:(111.11)2 =1×22+1×21+1×20+1×2-1+1×2-2 =4+2+1+0.5+0.25 =(7.75)10 2. 十进制与八进制之间的转换 (1)十进制整数转换成八进制整数
方法:除8取余法
(2)十进制小数转换成八进制小数
方法:乘8取整法
余数为1, 余数为0, 余数为0, 余数为0, 余数为0, 余数为1, 余数为1, 余数为0
商为 0
(1)十进制整数转换成十六进制整数
方法:除16取余法
(2)十进制小数转换成十六进制小数
方法:乘16取整法
(3)十六进制数转换十进制数
方法:按位权展开后相加
4. 二进制与八进制、十六进制数之间的转换
因为:23=8,所以每三位二进制数对应一位八进制数;
24=16,所以每四位二进制数对应一位十六进制。
1.3.5 计算机中数与字符的表示方法
1. 补码表示法
无符号数:所有的二进制位数都表示数的大小。
如:00001001表示9 10001001表示137
有符号数:二进制中最高有效位表示符号位,正数用0表示,负数用1表示。
如:00001001表示+9 10001001表示-119
11110111表示-9
00000001表示+1 10000001表示-127
11111111表示-1
有符号数表示:采用补码形式。
(1)求补运算:对一个二进制数按位取反后末位加1的运算。
例1:求-9的补码形式
* 写出-9绝对值的二进制:00001001
* 按位取反: 11110110
+ 1
* 末位加1: 11110111
例2: 10001001表示什么数?
10001001
* 按位取反:01110110
+ 1
* 末位加1: 01110111(此数的绝对值为119)
* 结果:10001001表示-119
(2)补码加法和减法运算规则:
[X]补===>[-X]补===>[X]补
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补
(3)无符号数、有符号数表示的范围:
无符号数有符号数
8位二进制 0...255 -128...+127
16位二进制 0...65535 -32768...+32767
无符号数运算的溢出判断:
加法:二数相加,最高位有进位,则有溢出。
减法:二数相减,最高位有借位,则有溢出。
例1: 10000001 129
+10001010 +138
100001011 267(溢出)
例2: `10000001 129
-10001010 -138
11110111 -9(溢出)
有符号数运算的溢出判断:
加法:二个同符号数相加,结果的符号相反,则有溢出。
减法:二个不同符号数相减,结果的符号与减数的符号相同时,则有溢出。例1: 00001001 +9
+01111100 +124
10000101 +133(大于+127 溢出)
例2: 11100111 -25
-01111111 -(+127)
01101000 -152(小于-128 溢出)
2.计算机中字符编码:采用ASCII码,参见P11
常用字符的ASCII码:
0...9 30H...39H
A...Z 41H...5AH
a...z 61H...7AH
$...24H
空格(SP)...20H
回车(CR)...0DH
换行(LF)...0AH
8.参考资料:《IBM-PC汇编语言程序设计》沈美明
9.作业:P18 习题1
10.本章小结:
①本部分为汇编语言的基础,必须理解和熟悉。
②本部分要求灵活应用,不要死记硬背。