汇编语言第一章预备知识
第1章 预备知识(数制与码制)

1.2
二进制数的运算
1.2.1二进制数的算术运算
二进制数不仅物理上容易实现,而且算术运算
也比较简单,其加、减法遵循“逢2进1”、“借1当2” 的原则。 以下通过4个例子说明二进制数的加、减、乘、 除运算过程。
1. 二进制加法
续2
2. 二进制减法
1位二进制数减法规则为: 1-0=1 1-1=0 0-0=0 0-1=1 例2: 求10101010B-10101B。 解: 被减数 10101010 (有借位)
减数
借位 -) 差
10101
00101010 10010101
则10101010B-10101B=10010101B。
它代表计数制中所用到的数码个数。
如:二进制计数中用到0和1两个数码; 八进制计数中用到0~7共八个数码。 一般地说,基数为R的计数制(简称R进制)中,包 含0、1、…、R-1个数码,进位规律为“逢R进1”。
续1
(2)位权W(Weight):
进位计数制中,某个数位的值是由这一位的数码值 乘以处在这一位的固定常数决定的,通常把这一固定常数 称之为位权值,简称位权。各位的位权是以R为底的幂。 如:十进制数基数R=10,则个位、十位、百位上的位
2D07.AH=2×163+13×162+0×161+7×160
+10×16-1
=8192+3328+7+0.625=11527.625
续2
2.十进制数转换为二、八、十六进制数
任一十进制数N转换成q进制数,先将整数部分与 小数部分分为两部分,并分别进行转换,然后再用小数 点将这两部分连接起来。
1)整数部分转换
汇编语言第1章 汇编语言基础知识

9
1.2.1 带符号数的补码表示
3. 补码 正数的补码表示与正数的原码相同,即最高符号位用0表 示正,其余位为数值位。负数的补码最高符号位用1表示 负数。负数的补码表示是正数的补码各位求反(包括符号 位),末位加1构成。将负数的补码转换成真值,则将补 码末位减1,各位求反,再加上负号。 例1.7 求补码1001 0110B的真值。 分析:补码1001 0110B的最高位为1,说明是负数的补码, 将例1.6的过程反过来做,即减1后,各位求反,最后加上 负号。 [1001 0110B-1]求反=[1001 0101B]求反 =0110 1010B=106 则[1001 0110B]真值=-106 10
计算机怎么知道这些组合的意思?
?
•
2
1.1.1 CPU指令
• CPU指令:0和1的一些组合。 每款CPU在设计时就规定了一系列与其硬件 电路相配合的指令系统。有了CPU指令集的文档, 就可以通过这个编写CPU认识的机器代码了。 所以,对于不同CPU来说可能会有不同的机 器码。
3
1.1.2 计算机程序设计语言
5
1.1.4 学习汇编语言的主要 目的
1.一些特定的场合需要使用汇编语言。 2. 有助于深入地理解计算机硬件,掌握计算 机硬件、操作系统、应用程序之间的交互 工作。 3. 帮助加深对高级语言的理解。 4. 是学习后续专业课程的基础。
6
1.2.1 带符号数的补码表示
1. 原码 最高有效位表示符号(0-正数,1-负数), 其他位表示数值。在计算机中用原码作加 减运算是不方便的。
11
1.2.2 ASCII码
例1.8 (1)数字值0~9和数字字符’0’~‘9’之间的转 换关系;(2)十六进制数0AH~0FH和字 符’A’~’F’之间的转换关系。
汇编语言第一章 预备知识

第一章预备知识汇编语言是面向机器的低级语言:和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。
学习汇编语言必须做到:了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。
本章的内容包括:什么是汇编语言;汇编源程序举例;汇编和调试过程;寄存器组1.1 机器语言与汇编语言人们用计算机语言操纵计算机,和计算机交流信息。
一般来说,计算机语言可以分为以下几类:低级语言是面向机器的,为特定机器提出的;高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。
一、 机器语言机器指令:能够被计算机识别,并能直接加以执行的语句。
机器语言:由机器指令构成的集合。
机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。
机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。
机器指令的一般形式为:例如:完成操作:MOV AX, 7FH; 7FH →AX操作码指出了运算的种类,如数据传送、加减运算等。
地址码指出了参与运算的操作数和运算结果的存放位置。
用机器语言编程,就意味着要用二进制数0和1编写程序。
这样做效率很低,而且容易出错。
但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。
此后很少直接使用机器语言了。
二、 汇编语言从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;用在语句前加一个标号,来代表该指令的存放地址。
汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。
例如:1011 1000 0111 1111 0000 0000操作码:1011,MOV 目的操作数:1000,AX源操作数:0000 0000 0111 1111,立即数MOV AX, 7FHMOV BX, 1234HADD AX, BX汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。
汇编语言第一章

在书写不同进位计数制数时,常常在尾部用一 个字母来表示该数是什么进位计数制的数。 结尾用B(2进制数)、O(8进制数)、D( 10进制数)、H(16进制数)。缺省为十进制 数。例如712O、9198D、10010B、BE49H 等等。
2.各种数制间的相互转换 例如: 13 .8125 D = 1101.1101B = D.DH
例:1.5
求N=0.625D的二进制数。 0.625×2=1.25 (b-1=1) 0.25×2=0.5 (b-2=0) 0.5×2=1.0 (b-3=1) N=0.625D=b-1b-2b-3=0.101B
十进制数转换为十六进制数 (1)降幂法:先写出小于此数的各位十六进 制权值,然后再求和。(适用于数值不大的数) 例:1.6
1.3.2 中央处理器CPU
CPU 的发展: 8088 (准16位机) 8086:16位机,16位通用寄存器,20位地址线,1M寻址. 80286(准32位机) 80386 : 32位机,32位通用寄存器,32位地址线,4G寻址. 80486 80586:1993,字长32位,主频60-166M,数据总线64,地址总线32, 寻址4G 80686 PⅡ:1997,字长32位,主频-333 M,数据总线64,地址总线32,寻 址4G PⅢ:1999, 字长32位,主频-600 M,数据总线64,地址总线36,寻址 64G PⅣ
例1.9
+
43A5 5A34 9DD9
例1.10
-
5A34 43A5 168F
1.2.2 二进制数和十六进制数运算
例1.11
×
+ 2A34 0025 D304 5468 61984(H)
《汇编语言》

《汇编语言》《汇编语言》第一章预备知识一、教学基本内容1、了解机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,正确认识学习汇编语言的重要性。
2、掌握8086处理器中各寄存器的符号表示形式、大小及主要用途。
3、理解主存的编址方式以及存储器物理地址形成的方式。
4、理解8086处理器关于使用堆栈的有关规定,掌握堆栈操作指令的功能以及使用格式。
5、掌握数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式。
6、掌握标志寄存器中各标志位的置位方式。
重点:主存的编址方式以及存储器物理地址形成的方式难点:堆栈的概念及使用。
二、知识点:1、机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,要求达到“识记”层次。
2、8086处理器中各寄存器的符号表示形式、大小及主要用途,要求达到“识记”层次。
3、主存的编址方式以及存储器物理地址形成的方式,要求达到“理解”层次。
4、堆栈的概念及堆栈操作指令执行后内存及相关寄存器值的变化,要求达到“理解”层次。
5、数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式,要求达到“理解”层次。
6、标志寄存器中各标志位的置位方式,要求达到“识记”层次;运算对各标志位的影响,要求达到“掌握”层次。
1.1机器语言和汇编语言1、机器语言●三种语言的层次关系机器语言汇编语言高级语言●机器指令:指挥计算机完成某一基本操作的命令。
格式:操作码地址码1 地址码2 例:将偏移地址为100的字存储单元中的内容加2,在回送到原存储单元中去的机器指令如下:8306640002其中8306H为操作码6400H 为目的操作数02H 为源操作数●指令系统:机器指令面向机器,每台计算机都规定了自己所特有的一定数量的基本指令,这批指令的全体即为该计算机的指令系统●机器语言:这种机器指令的集合。
●机器语言程序:用机器语言编写的程序。
《汇编语言课件》第1章 基础知识

二、十六进制对应关系
汇
二进制转换成十六进制:从右向左,
编
每4位一组(不足4位左补0) 十六进制转换成二进制:用4位二进
语
制数代替一位十六进制数
言 例:二进制转换为十六进制
0000 ~ 0 0001 ~ 1 0010 ~ 2 0011 ~ 3 0100 ~ 4 0101 ~ 5
程
1100100.11010 =0110 0100.1101 0000 =64.DH
正数:反码与原码相同
序
负数:符号位为1,其余位对原码取反
设 计
例:有符号数的反码表示。
X=45=101101B, [X]反=00101101B
X= -45,
[X]反=11010010B
2019/6/15
9
计算机中的数据表示
第1章 基础知识
汇
补码:
正数:原码、反码、补码相同
编
负数:最高位为1,其余位为原码取反,再对整个数末位加1
八十二进六制进:制:412098715156A=1E44=2881³+01³02+69³28+²11+017²6+28²5¹++11500¹28+1º6¹+1104º16º
逢十进一 逢二进一 逢八进一 逢十六进一
2019/6/15
3
第1章 基础知识
1。2 数制转换
汇
非十进制转换成十进制
语
例:有符号数的补码表示。
言 程
X=45=101101B X=-45
[X]补=00101101B [X]补=11010011B
序
设
计
2019/6/15
汇编语言程序设计第1章基础知识

1.1.1 机器语言
计算机能够直接识别的数据是由二进制数0 和1组成的代码。机器指令就是用二进制代码组 成的指令,一条机器指令控制计算机完成一个基 本操作。
用机器语言编写的程序是计算机惟一能够 直接识别并执行的程序,而用其他语言编写的程 序必须经过翻译才能变换成机器语言程序,所以, 机器语言程序被称为目标程序。
第1章 基础知识
1.1.3 高级语言
汇编语言虽然较机器语言直观,但仍然烦 琐难懂。于是人们研制出了高级程序设计语言。 高级程序设计语言接近于人类自然语言的语法习 惯,与计算机硬件无关,易被用户掌握和使用。
目前广泛应用的高级语言有多种,如 BASIC、FORTRAN、PASCAL、C、C++等等。
第1章 基础知识
第1章 基础知识
1.3.3 标志寄存器
8086CPU中有一个很重要的16位标志寄存器,它 包含9个标志位,主要用于保存一条指令执行后, CPU所处状态信息及运算结果的特征。
1.条件标志 2.状态控制标志
第1章 基础知识
1.条件标志
(1)进位标志CF (2)零标志ZF (3)符号标志SF (4)溢出标志 OF (5)奇偶标志 PF (6)辅助进位标志AF
Intel 8086CPU内部结构 8086寄存器组 标志1.3.1 Intel 8086CPU内部结构
图1.2 8086CPU内部结构
图1.2 8086CPU内部结构
返回本节
1.3 8086CPU
第1章 基础知识
1.3.2 8086寄存器组
图
寄 存 器 分 组
1.1.4 汇编语言的特点
(1)汇编语言与处理器密切相关。 (2)汇编语言程序效率高。 (3)编写汇编语言源程序比编写高级语言源程 序烦琐。 (4)调试汇编语言程序比调试高级语言程序困 难。
第一章 汇编语言基础知识

0000 0001 0010 0 1 2 1100
1010 1011
十六进制
A
B
C
D
E
F
N位二进制数可以表示2n个数。
1.2
二进制数和十六进制数运算
1
二进制数运算
2
十六进制数运算
1.3
计算机中数和字符的表示
1
数的补码表示
2
补码的加法和减法
3
无符号整数
4
字符表示法
1.4
1
几种基本的逻辑运算
“与”运算(AND)
使用“设计视图”创建表
使用“设计视图”创建表
使用“设计视图”创建表
使用“设计视图”创建表
使用“设计视图”创建表
没有“字 段大小” 属性
使用“设计视图”创建表
使用“设计视图”创建表
使用“设计视图”创建表
使用“设计视图”创建表
为了在表间创建关系,使多个表协同工作,需要 确定主键。若选择“是”,则系统自动为表添加 一个自动编号型的字段作为主键。
在“设计视图”下定义表结构的方法
实验课任务
3. 将“性别”字段先后设置为文本型和是否型,并输入数据,以查看两 种情况下的区别。
请ห้องสมุดไป่ตู้位老师批评指正!
数据类型
文本型
字段大小
字节:1个字节 整数:2个字节
说明
可选择字段大小,在满足 需要的前提下,字段大小 越小越好。
不超过255个字符,默认50个字符。 可根据需要设置大小。
数字型
长整型:4个字节
单精度:4个字节,7个小数位 双精度:8个字节,15个小数位 小数:纯小数
备注型 超链接类型 OLE对象类型
第一章 预备知识

第一章预备知识汇编语言是面向机器的低级语言:和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。
学习汇编语言必须做到:了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。
本章的内容包括:什么是汇编语言;汇编源程序举例;汇编和调试过程;寄存器组1.1 机器语言与汇编语言人们用计算机语言操纵计算机,和计算机交流信息。
一般来说,计算机语言可以分为以下几类:低级语言是面向机器的,为特定机器提出的;高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。
一、 机器语言机器指令:能够被计算机识别,并能直接加以执行的语句。
机器语言:由机器指令构成的集合。
机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。
机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。
机器指令的一般形式为:例如:完成操作:MOV AX, 7FH; 7FH →AX操作码指出了运算的种类,如数据传送、加减运算等。
地址码指出了参与运算的操作数和运算结果的存放位置。
用机器语言编程,就意味着要用二进制数0和1编写程序。
这样做效率很低,而且容易出错。
但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。
此后很少直接使用机器语言了。
二、 汇编语言从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;用在语句前加一个标号,来代表该指令的存放地址。
汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。
例如:1011 1000 0111 1111 0000 0000操作码:1011,MOV 目的操作数:1000,AX源操作数:0000 0000 0111 1111,立即数MOV AX, 7FHMOV BX, 1234HADD AX, BX汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。
汇编_第1章 基础知识

3、数据缓冲能力 避免因速度的差异而丢失数据。接口中一般都有数据缓 冲寄存器,称为数据口。数据缓冲器分为输入和输出缓冲器 两种。 4、信号转换功能 由于外设提供或需要的信号与CPU的总线不兼容,因此信 号必须转换。 5、设备选择功能 微机系统中一般有多个外设,一个外设中也有多个端口, 接口中必须有端口选择能力。 6、数据宽度与数据格式转换的功能 如:并/串转换、串/并转换等。
汇编语言的应用
系统程序、效率代码、I/O驱动程序
很多系统软件是用汇编语言编写的。
某些快速处理、位处理、访问硬件设备等高效程序 是用汇编语言编写的。
高级绘图程序、视频游戏程序一般是用汇编语言编 写的。
CPU、接口和外围设备间的连接
接口功能
1、执行CPU命令的功能
接口电路对CPU发来的命令代码(在命令寄存器中,称 为命令口)进行识别和分析,分解成若干个控制信号,传 送到I/O设备,使其产生具体的操作。 CPU不是直接把命令送到被控对象,而是通过接口电路 进行控制。 2、返回外设状态的功能 接口执行CPU的命令后,将整个过程的状态存在接口的 状态寄存器(状态口)中,供CPU读取。状态是:“忙”, “闲”,“就绪”,“错”等。
CPU与接口交换数据的方式
查询方式
中断方式
DMA方式
分析与设计接口电路的基本方法
一、两侧分析法ຫໍສະໝຸດ 凡是接口都有两侧,一侧是CPU,另一侧是外设。
对CPU一侧就是三总线,因此分析比较容易主要搞清楚 是什么类型的CPU以及数据总线、地址总线的宽度和控制线 的逻辑定义,时序关系。 对外设一侧情况很复杂,这是因为被控对象外设种类繁 多,所提供的信号线五花八门;其逻辑定义,时序关系,电 平高低差异甚大。要搞清两点:一是外设的信号引脚的功能 定义和逻辑定义,二是了解被控外设的工作过程。
《汇编语言程序设计》第1章汇编语言基础知识

1.1 汇编语言程序设计的一般概念
基本概念
把汇编语言程序变为可执行程序的过程如 图1.1所示。
汇编程序 汇编语言程序(源程序) 目标程序 连接 可执行程序
图1.1 汇编语言程序执行过程
汇编语言改善了机器语言的不直观性。从 目标代码的长度和程序运行时间的角度上看, 汇编语言程序与机器语言程序是等效的。
1.1 汇编语言程序设计的一般概念
基本概念
2.汇编语言 汇编语言是用易于人们记忆的符号书写, 与机器指令基本上一一对应,并遵循一定语法 规则的符号语言。用汇编语言编写的程序称为 汇编语言程序(源程序)。把汇编语言程序翻 译成机器语言程序的过程称为汇编过程,完成 汇编过程的程序称为汇编程序,而汇编Leabharlann 生的 结果是机器语言程序(目标程序)。
例如: N1 =+90=+1011010B,那么[N1]原 =01011010B N2 =-90=-1011010B,那么[N2]原 =11011010B
1.2 计算机运算基础
带符号数的表示
在原码表示法中,0有两种表示形式: [+0]原 =00000000B [-0]原 =10000000B。
8位原码表示的整数数据范围为-127~127。 利用原码表示的数很直观,而且乘除法可直接 进行,但用原码进行加减法运算的运算规则复 杂。
汇编语言的作用
1.使用汇编语言能正确理解计算机的工作原理
2.目前仍靠汇编语言程序来实现计算机系统中的 部分功能
3.许多高级语言都设置有与汇编语言程序的接口
1.1 汇编语言程序设计的一般概念
汇编语言程序举例
例:用Intel8086.8088系列微机MASM宏汇编语 言完成S=(A+B-C)×D的运算。
汇编语言第一章

二、Intel 80x86内部结构
注意:
它们既可作32位、16位寄存器,也可作8位寄存器使用。 16位和8位的寄存器不能作指示器或变址寄存器。
二、Intel 80x86内部结构
(2) 指示器变址寄存器组(ESI、EDI、ESP、EBP) 作用:一般用来存放操作数的偏移地址,用作 指示器或变址寄存器。 ESI(Source Index),称为源变址寄址器;字符串指令 源操作数的指示器 EDI(Destination Index),称为目的变址寄存器;字 符串指令目的操作数的指示器 ESP(Stack Pointer),称为堆栈指示器,存放的是 当前堆栈段中栈顶的偏移地址; EBP(Base Pointer),为对堆栈操作的基址寄存器;
.386 STACK STACK STACK DATA
SEGMENT USE16 DB 200 DUP(0) ENDS SEGMENT USE16 SUM DW ? ENDS
DATA
二、分段
.386 ;数据段
DATA SEGMENT USE16 ;段为16位段
SUM DW ? ;SUM为字变量,初值不定
源操作数:0000 0000 0111 1111 完成操作:MOV AX, 7FH; 7FH -> AX
一、 机器语言
操作码:数据传送、加减运算等
地址码:操作数和运算结果的存放位置
一、 机器语言
用机器语言编程:
要用0和1编写程序 效率低 容易出错
二、 汇编语言
机器语言的改进方案:符号化的机器语言
三、 80x86的三种工作方式
1. 实方式(实际地址)
操作相当于一个可进行32位快速运算的8086(内部 32位、外部总线16位数据、20位地址) 2. 保护方式(虚地址) 是80386设计目标全部达到的工作方式,通过对程序 使用的存储区采用分段、分页的存储管理机制,达到 分级使用互不干扰的保护目的。能为每个任务提供一 台虚拟处理器,使每个任务单独执行,快速切换。 3. 虚拟8086方式 保护方式下所提供的同时模拟多个8086处理器。
汇编语言程序设计第1章 基础知识

5
(3)汇编语言程序编写和调试困难 编写和调试汇编语言程序比高级语言程序繁琐 ,汇编语言虽然较机器语言直观,但仍然繁琐难懂 ,于是人们研制出了高级程序设计语言。高级程序 设计语言接近于人类自然语言的语法习惯,与计算 机硬件无关,容易被用户掌握和使用。
6
(4)汇编语言的主要应用场合 1)程序执行占用较短的时间,或者占用较小存储 容量的场合。 2)程序与计算机硬件密切相关,程序直接控制硬 件的场合。 3)需提高大型软件性能的场合。 4)没有合适的高级语言的场合。
7
1.2 数据表示方法 1.2.1 数制及其转换 (1)二进制数 在计算机中使用二进制容易实现,便于存储, 抗干扰性强。二进制数的基数为 2,由 0和 1两个 数码组成,运算逢 2进 1,第i位的权以 2i表示。 书写时,在二进制数的尾部加注 B(Binary)或下 标 2表示。十进制数的尾部加注 D(Deci-mal)或 下标 10表示,也可省略。
2
1.1.2 汇编语言 为了克服机器语言的缺点,人们采用助记符表 示机器指令的操作码,用变量代替操作数的存放地 址等,这样就形成了汇编语言。所以汇编语言是一 种用符号书写的、基本操作与机器指令相对应的、 并遵循一定语法规则的计算机语言。
3
1.1.3 汇编语言的特点 (1)汇编语言的指令系统与处理器密切相关 计算机是通过执行指令序列来解决问题的,所以, 每种计算机都有一组指令集提供给用户使用,这组 指令集称为计算机的指令系统。目前,一般小型或 微型计算机的指令系统有几十种或上百种。因此汇 编语言的指令系统通常专属于某种机型或某一系列 机型。汇编语言程序的通用性、可移植性较差。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章预备知识汇编语言是面向机器的低级语言:和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。
学习汇编语言必须做到:了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。
本章的内容包括:什么是汇编语言;汇编源程序举例;汇编和调试过程;寄存器组1.1 机器语言与汇编语言人们用计算机语言操纵计算机,和计算机交流信息。
一般来说,计算机语言可以分为以下几类:低级语言是面向机器的,为特定机器提出的;高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。
一、 机器语言机器指令:能够被计算机识别,并能直接加以执行的语句。
机器语言:由机器指令构成的集合。
机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。
机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。
机器指令的一般形式为:例如:完成操作:MOV AX, 7FH; 7FH →AX操作码指出了运算的种类,如数据传送、加减运算等。
地址码指出了参与运算的操作数和运算结果的存放位置。
用机器语言编程,就意味着要用二进制数0和1编写程序。
这样做效率很低,而且容易出错。
但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。
此后很少直接使用机器语言了。
二、 汇编语言从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;用在语句前加一个标号,来代表该指令的存放地址。
汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。
例如:1011 1000 0111 1111 0000 0000操作码:1011,MOV 目的操作数:1000,AX源操作数:0000 0000 0111 1111,立即数MOV AX, 7FHMOV BX, 1234HADD AX, BX汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。
翻译过程的图形表示:汇编程序不同于汇编语言程序。
汇编语言程序是用汇编语言写的程序,汇编程序是翻译汇编语言程序的加工程序。
汇编程序可分为:ASM——小汇编程序,占有较小的存贮区,但功能较弱,没有宏功能。
MASM——宏汇编程序,需要较大的存贮区,但功能强大,具有宏能力。
这门课使用的是宏汇编程序。
宏,是指用一个宏指令名字代替程序中重复出现的一组语句,在其它的地方,可以用宏指令名字及不同的参数来调用。
宏的功能类似于子函数,但实现方式不同。
此外,汇编语言还必须指出:程序从什么地方开始、什么时候结束、数据放在哪里、数据类型是什么、临时存贮区等,这需要一组另外的指令指示MASM工作,这种指令叫做伪指令。
三、为什么要学习汇编语言?汇编程序产生的目标程序简短,占用的存贮空间小,执行速度快,适合于编写过程控制、多媒体接口、通讯程序。
有些无法用高级语言实现的操作,可以由汇编完成。
1.2 汇编源程序举例举例一、完整源程序为了对汇编语言有具体的理解,下面编写一个简单的程序:.386;堆栈段STACK SEGMENT USE16 STACK ;段名和组合类型DB 200 DUP(0) ;堆栈的大小为200个字节STACK ENDS;数据段DATA SEGMENT USE16;段为16位段SUM DW ? ;SUM为字变量,初值不定DATA ENDS;代码段CODE SEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATA, ES:DATASTART: MOV AX, DATAMOV DS, AX ;数据段首址送DSMOV CX, 50 ;循环计数器置初值MOV AX, 0 ;累加器置初值MOV BX, 1 ;1→BXNEXT: ADD AX, BX ;(AX)+(BX)→AXINC BXINC BX ;(BX)+2→BXDEC CX ;(CX)-1→CXJNE NEXT ;(CX)≠0转NEXTMOV SUM, AX ;(CX)=0累加结果→SUMMOV AH, 4CHINT 21H;返回DOSCODE ENDSEND START ;源程序结束语句。
程序运行时,启动地址为START二、分段在该例中,一共定义了三个段:堆栈段、数据段和代码段。
.386;堆栈段STACK SEGMENT USE16 STACK…STACK ENDS;数据段DATA SEGMENT USE16…DATA ENDS;代码段CODE SEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATA, ES:DATASTART: MOV AX,DATAMOV DS,AX…MOV AH,4CHINT 21HCODE ENDSEND START三、语句该例中的源程序由一系列语句组成。
语句的一般格式为:[名字] 操作符[操作数或地址] [;注释]1. 操作符可分为3类:●指令●伪指令●宏2. 操作数也可分为3类:●数值●寄存器●内存3. 常用指令:MOV AX, 0ADD AX, BXINC AXDEC CX等1.3汇编和调试过程一、汇编过程1. 必备软件●MASM.EXE●LINK.EXE●TD.EXE●其他:文本编辑器、DOSBOX等2. 命令●MASM DEMO.ASM汇编DEMO.ASM,应该生成MASM.OBJ●LINK DEMO.OBJ连接DEMO.OBJ,应该生成MASM.EXE●TD DEMO.EXE调试DEMO.EXE二、调试程序Turbo Debugger的使用1. 如图,TD的界面可分为:●菜单●代码操作区●数据操作区●寄存器操作区●标记寄存器操作区●堆栈段操作区标记有:●当前指令标记●当前栈顶标记2. TD的主要操作●单步执行:F7,F8●设置(取消)断点:F2●直接执行:F93. 查看数据区4. 查看用户界面5. 修改数据、指令、寄存器内容1.4Intel 8086微处理器简介汇编语言是一种面向机器的低级语言,要学好它,必须对计算机硬件结构有一个初步了解。
一、微型计算机的组成微型计算机主要由微处理器(CPU)、主存贮器(MM)、外部设备及互连部件组成。
如下图所示:微处理器是计算机系统的核心。
存贮器:存放程序以及数据、信息、中间结果。
外设:I/O设备和大容量存贮器。
I/O设备包括显示器、打印机、键盘等。
二、Intel 80x86内部结构个人电脑的发展,经过了8086、80186、80286、80386等几代产品,Intel 80x86是1985年推出的32位处理器,按功能可分为执行部件(EU)和总线接口部件(BIU)。
其中运算器执行所有的算术和逻辑运算指令;控制器负责计算机的控制工作(如取出指令、发出各种控制命令)。
其内部结构如下所示:各部分的功能:1. 总线接口部件:是CPU与整个计算机系统之间的高速接口功能:接受所有的总线操作请求,并按优先权进行选择,最大限度地利用本身的资源为这些请求服务。
2. 执行部件:寄存器组、标志寄存器、算逻部件、控制部件等组成功能:从译码指令队列中取出指令并且执行(1) 数据寄存器组(EAX,EBX,ECX,EDX)●EAX (累加器)Accumulator●EBX (基址寄存器)Base●ECX (计数寄存器)Count●EDX (数据寄存器)Data作用:用来保存操作数、运算结果或作指示器、变址寄存器,减少存取操作数所需要的访问总线和主存储器的时间,加快运行速度。
注意:●它们既可作32位、16位寄存器,也可作8位寄存器使用。
●16位和8位的寄存器不能作指示器或变址寄存器。
(2) 指示器变址寄存器组(ESI、EDI、ESP、EBP)作用:一般用来存放操作数的偏移地址,用作指示器或变址寄存器。
●ESP(Stack Pointer),称为堆栈指示器,存放的是当前堆栈段中栈顶的偏移地址;●EBP(Base Pointer),为对堆栈操作的基址寄存器;●ESI(Source Index),称为源变址寄址器;字符串指令源操作数的指示器;●EDI(Destination Index),称为目的变址寄存器;字符串指令目的操作数的指示器3. 指令预取部件和指令译码部件指令预取部件:通过总线接口部件,把将要执行的指令从主存中取出,送入指令排队机构中排队。
指令译码部件:从指令预取部件中读出指令并译码,再送入译码指令队列排队供执行部件使用。
指令指示器:它总是保存着下一条将要被CPU执行的指令的偏移地址,其值为该指令到所在段首址的字节距离。
4. 分段部件和分页部件(1) 使用分段部件和分页部件实现虚拟存储空间映射到物理存储空间程序员使用二维地址,即“段地址:段内偏移地址”分段部件段地址:段内偏移地址一维的线性的地址分页部件虚拟的线性的地址主存储器的物理地址(2) 段寄存器用来保存段首地址●代码段寄存器CS●堆栈段寄存器SS●数据段寄存器DS●附加段寄存器ES●附加段寄存器FS●附加段寄存器GS5. 指令执行过程:(1) 指令预取部件和指令译码部件由EIP取得指令的偏移地址EIP增量,形成下一条指令的地址(2) 分段部件和分页部件由分段部件和分页部件,将“CS : EIP”转换为指令的物理地址(3) 总线接口部件从主存中取指令送到预取指令队列(4) CPU按序从预取指令队列中取出指令送到指令译码部件。
(5) 指令译码部件译码,执行部件执行指令;(6) 执行过程中若需要取主存操作数,从指令中取得操作数偏移地址(7) 分段部件和分页部件由分段部件和分页部件,将“段首址: 偏移地址”转换为操作数的物理地址(8) 总线接口部件从主存中取数据送到执行部件三、80x86的三种工作方式1. 实方式(实际地址)操作相当于一个可进行32位快速运算的8086(内部32位、外部总线16位数据、20位地址)2. 保护方式(虚地址)是80386设计目标全部达到的工作方式,通过对程序使用的存储区采用分段、分页的存储管理机制,达到分级使用互不干扰的保护目的。
能为每个任务提供一台虚拟处理器,使每个任务单独执行,快速切换。
3. 虚拟8086方式保护方式下所提供的同时模拟多个8086处理器。
本章作业一、1.2二、利用寄存器,编程实现:(12 + 34) * 56 – 78,结果放在寄存器AX中。