汇编语言基础及组成原理.ppt

上传人:牧羊曲112 文档编号:5993749 上传时间:2023-09-12 格式:PPT 页数:57 大小:585.50KB
返回 下载 相关 举报
汇编语言基础及组成原理.ppt_第1页
第1页 / 共57页
汇编语言基础及组成原理.ppt_第2页
第2页 / 共57页
汇编语言基础及组成原理.ppt_第3页
第3页 / 共57页
汇编语言基础及组成原理.ppt_第4页
第4页 / 共57页
汇编语言基础及组成原理.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《汇编语言基础及组成原理.ppt》由会员分享,可在线阅读,更多相关《汇编语言基础及组成原理.ppt(57页珍藏版)》请在三一办公上搜索。

1、2.1 微型计算机系统,2.1.1 微型计算机系统概念,汇编语言与微型计算机系统密切相关。先来明确汇编语言的学习内容。第1章中提到的三条汇编指令:MOV AX,35ADD AX,27MOV Z,AX 这几条指令中涉及到寄存器(AX)、加法运算、存储单元(Z)、数据的获取和传送、指令的存放等内容。,2.1.2 微处理器,微处理器分为执行部件EU和总线接口部件BIU两部分。执行部件EU中包含运算器的算术逻辑运算单元ALU、通用寄存器组、标志寄存器FLAGS、EC单元控制系统等;总线接口部件BIU包含段寄存器组(CS、DS、ES、SS)、指令指针寄存器IP、指令队列单元、地址加法器、总线控制系统等。

2、,2.2 80X86寄存器,2.2.1 8086寄存器组,分类,数据寄存器:包括AX、BX、CX、DX四个16位的通用寄存器。其中DX存放高字(高16位),AX存放低字(低16位)。数据寄存器中每个寄存器又可以分为2个8位的寄存器。分别为AH、AL,BH、BL,CH、CL,DH、DL。AH为高字节(高8位)寄存器、AL为低字节(低8位)寄存器。,数据寄存器,表示为(DX)=2345H,(AX)=6789H,存放形式为:,例1 用DX、AX寄存器保存双精度数23456789H。,例2 用AX寄存器存放一个字1234H,表示为(AX)=1234H,存放形式为:,地址寄存器,包括指针和变址寄存器SI

3、、DI、SP、BP四个16位寄存器。顾名思义,它们可用来存放存储器的偏移地址。另外,它们也可以作为通用寄存器用。严格地说,用来存放存储器偏移地址的寄存器都应该叫地址寄存器,如BX基址寄存器、IP指令指针寄存器等。,SI 源变址寄存器,可用于存放源缓冲区的偏移地址。DI 目的变址寄存器,可用于存放目的缓冲区的偏移地址。,SP 堆栈指针寄存器,用于指出堆栈区的栈顶的偏移地址。BP 基址指针寄存器,用于指出堆栈区的某个单元的偏移地址。,CS 代码段寄存器,用于指出存放程序的代码段的段地址。DS 数据段寄存器,用于指出存放数据的数据段的段地址。ES 附加段寄存器,用于指出存放附加数据的附加段的段地址。

4、SS 堆栈段寄存器,用于指出堆栈区的堆栈段的段地址。,段寄存器,控制寄存器,溢出标志,方向标志,中断标志,陷阱标志,符号标志,零标志,辅助进位标志,奇偶标志,进位标志,IP指令指针寄存器:用来存放代码段中的偏移地址,指出当前正在执行指令的下一条指令所在单元的偏移地址。,FLAGS标志寄存器:其中的某位代表CPU的一个标志,最低位为D0,最高位为D15。8086CPU的标志寄存器共有9个标志,分别为6条件码标志和3控制标志。其含义如下:,在DEBUG调试环境下以字母缩写的形式表示各个标志位的状态。进入DEBUG后,用R命令查看寄存器状态时,可以看到除了陷阱标志以外的标志位的状态。如表2-1所示。

5、,例1 两个二进制数相加运算,有关标志位自动发生变化。10011010+01001011 11100101CPU会自动地把标志位设为:CF=0,SF=1,ZF=0,OF=0,即无进位,结果为负数,结果不为0,没有溢出。,练习:写出下列二进制运算的结果以及标志位的变化:(1)10101110+00110011(2)11001101-10100011,2.2.2 80X86寄存器组,Intel 8086、80286都是16位的寄存器。从80386开始,寄存器扩展为32位。,2.3 内存储器,2.3.1 物理地址与逻辑地址1 地址 CPU对内存的访问是通过地址总线进行的,地址总线的每一个二进制组态对

6、应一个存储单元,可作为该存储单元的地址。在80X86系统中一个实际的存储单元只存放8位二进制数,称为字节单元。地址位数与存储空间有如下的关系:,若系统只有1根地址线A0:则A0上有两个不同的信号0和1,可以表示0号和1号两个存储单元。若系统有2根地址线A1、A0:则有四个不同的信号组合00、01、10、11,可以表示0号3号四个存储单元。若系统有10根地址线A9A0:则有0号1023号不同组合,可以表示1024个存储单元,寻址空间达到1KB。B(Byte)表示字节单元。可以看出,若地址位数为n,则地址空间的大小为2n个存储单元。,2物理地址,物理地址是内存单元的真实地址。存储单元的物理地址是唯

7、一的。Intel8086CPU有20根地址线,因此其存储空间可达220=1M字节单元。在20位地址线的存储空间中采用十六进制表示的物理地址范围是00000HFFFFFH。,3逻辑地址,逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分。在8086汇编语言中,把内存地址空间划分为若干逻辑段,每段由一些存储单元构成。,用段地址指出是哪一段,偏移地址标明是该段中的哪个单元。段地址和偏移地址都是16位二进制数。逻辑地址的形式:段地址:偏移地址,例1 用十六进制分别表示的三个逻辑地址如下:3020:055AH3021:054AH2C43:432AH,4逻辑地址与物理地址的转换,用户编程时采用的逻

8、辑地址在CPU执行程序时都要转换成实际的物理地址,这个转换过程是由CPU中的地址加法器自动完成的。转换公式为:物理地址=段地址10H+偏移地址,例1 若逻辑地址为3020:055AH,其物理地址=3020H10H+055AH=3075AH。,练习:根据给出的逻辑地址,计算物理地址。逻辑地址=2C43:432AH,物理地址=?2E37:9822H,886F:7911H,1234:05ACH,,2.3.2 存储单元,在汇编语言中,把存储单元分为字节单元、字单元、双字单元等,称为存储单元的属性。存储单元中的数据称为存储单元内容,存储单元的地址和内容的表示形式为用括号将地址括起来以代表单元的内容。,如

9、(3075AH)=12H表示3075AH号单元中的内容是12H(3075BH)=34H表示3075BH号单元中的内容是34H 若(37692H)=5678H表示37692H单元和37693H单元一起存放5678H,在存储的时候,高字节放在高地址单元,低字节放在低地址单元。如图2-7所示。,图2-7 存储单元的地址和内容,由于字单元是由两个相邻的字节单元构成的,那么对于同一个地址而言,它既可以看成字节单元,又可以看成字单元。如把图2-7中的字节单元3075AH看成是字单元,则:(3075AH)=3412H,存储单元还分为偶地址单元和奇地址单元。例如图2-7中的字节单元3075AH和字单元3769

10、2H都是偶地址单元,而字节单元3075BH是奇地址单元。,练习:有若干个数据需要存放在存储单元中,请画图表示,并标出存储单元的属性。(23560H)=37H(23562H)=2D18H(23620H)=12345678H,2.3.3 存储器分段,1分段的概念 8086CPU的地址寄存器只有16位,如果直接从地址寄存器中发出地址信号,所能访问的存储空间就只有216=64KB,达不到20位地址线所提供的地址范围。,将存储器划分为若干逻辑段,每段最大64K字节单元。逻辑段的大小可变,每段最少16个字节单元,也可以100个、1000个到最大可达65536个字节单元。段地址和偏移地址构成逻辑地址。例如:

11、逻辑地址为1200:2650H。,在存储器中,规定每16个字节单元为一小段,每小段的第一个单元的物理地址称为小段的首地址,8086的1MB内存空间的20位物理地址用十六进制表示如下:,规定:存储器分段时,各段的起始地址必须是小段的首地址,即逻辑段必须从任一个小段的首单元开始,而不能从其它的字节单元开始。,小段首地址的共同的特点是十六进制表示的物理地址的最低位都是0,如果把0去掉(二进制的地址去掉4个0),就可以用16位段寄存器保存小段的首地址。,例1 定义2个段,第一个段的段地址为0002H,共16个单元;第二个段的段地址为4123H,共1024个单元。如图标出了各段首单元和末单元的逻辑地址。

12、,每一个段内的偏移地址都是从0000H开始的。第一段的首单元的物理地址00020H,末单元的物理地址0002FH第二段的首单元的物理地址为41230H,末单元的物理地址为4162FH。,2段的类型 8086汇编语言中把逻辑段分为四种类型,分别是代码段、数据段、附加段和堆栈段。各段的逻辑地址对应表:,例1段寄存器与其偏移地址如下,写出其相应的物理地址及含义。,CS=1896H,IP=1655H当前要执行的指令的物理地址=18960H+1655H=19FB5H,DS=2896H,EA=1655H当前要访问的数据的物理地址=28960H+1655H=29FB5H,ES=1896H,EA=2655H当

13、前要访问的数据的物理地址=18960H+2655H=1AFB5H,SS=1896H,SP=3655H当前要访问的堆栈的物理地址=18960H+3655H=1BFB5H,例2 段寄存器与内存的分段情况如图。观察各段的大小及分布,判断其地址范围,标出每个段首地址和末地址。,代码段共64KB单元,它的地址范围应该是210E0H310DFH。附加段只有2KB,地址范围在34600H34CFFH之间。数据段为16KB,其地址范围为34D00H38CFFH。堆栈段只有512个字节单元,它的地址范围是84180H8437FH。,2.4 实例二 进入计算机,1DEBUG的主要命令 2进入DOS 3.进入DEB

14、UG,2.4.1 调试工具DEBUG,1DEBUG的主要命令DEBUG命令有20多个,先学习最常用的命令。R 查看和修改寄存器D 查看内存单元E 修改内存单元U 反汇编,将机器指令变为汇编指令T/P单步执行G 连续执行程序A 输入汇编指令Q 退出,2进入DOSDEBUG要先进入DOS环境中再使用,在Windows下进入DOS的方法可选择两种。(1)在Windows桌面下单击开始菜单,选择运行命令;在弹出的文本框中输入cmd;按确定后进入DOS环境。(2)选择“开始程序附件命令提示符”进入DOS。,(3)DOS命令本书用到的简单的DOS命令:cd 首先要用cd 退回到根目录C下dir 显示文件列

15、表cd hb 进入hb子目录cd.退回到上一级目录e:进入e盘cls 清屏DOS和DEBUG命令都支持大小写。,3.进入DEBUG,DEBUG的提示符是小短线,在其后输入命令。(1)R命令查看和修改寄存器R命令有两种用法:直接键入R,将显示CPU所有的寄存器和标志位;修改寄存器:在R后跟写寄存器名,则先显示寄存器的内容,在冒号后可键入新的值,(2)D命令查看内存单元 用D命令可以查看存储单元的地址和内容。例如:D DS:0 查看数据段,从0号单元开始D ES:0 查看附加段,从0号单元开始D DS:100 查看数据段,从100H号单元开始 D 0200:5 15 查看0200H段的5号单元到1

16、5H号单元,D命令的执行情况如图所示。,(3)E命令修改内存单元用E命令可以改写多个存储单元的内容。格式为:E 起始地址 修改值 修改值 例如:将数据段中的0B05:3 0B05:5 三个单元的内容修改为14、15、16。命令为 E DS:3 14 15 16 再如:E 10 修改当前数据段10H号单元内容 E ES:100 修改附加段100H号单元内容,(4)U命令 反汇编程序员编写的汇编语言源程序经过汇编(编译)后生成了二进制的机器指令代码,而U命令可将二进制的机器指令变为助记符形式的汇编指令,因此称之为“反汇编”。多次键入U,可连续显示后面的程序部分。U后跟偏移地址,则从该地址开始反汇编

17、。如:U 0 从代码段0号单元开始反汇编 U100 从代码段100H号单元开始反汇编,(5)A 命令输入汇编指令在DEBUG中,使用A命令可以输入汇编指令,系统自动地将键入的汇编指令翻译成机器代码,并相继地存放在从指定地址开始的存储区中。由于DEBUG下的数值默认为十六进制数,因此先要将十进制数转换成十六进制数。例如,第1章提到的计算Z=35+27的汇编指令为:MOV AX,23HADD AX,1BHMOV 0000,AX,操作过程如下:,(6)T/P命令单步执行,先查看指令指针寄存器IP的值是否为0100,如果不是,用R IP命令修改为0100。表示现在要从CS:0100单元开始执行指令。-

18、TT命令还可以连续执行多条指令。如上例中连续执行3条指令,可用如下T命令:-T 3T命令也可以设置开始地址和执行条数。如上例中从0100H开始连续执行3条指令,可用如下T命令:-T=0100 3,(7)G命令连续执行程序有关连续执行命令G的用法我们放到后面章节中学习。(8)Q命令 退出DEBUG键入Q,回车后退出DEBUG,返回到DOS下。,实验任务,实验目的:练习常用的DOS命令,熟练掌握DEBUG的主要命令的用法,为下一步编程打下基础。实验内容:1DOS命令用法(1)用两种方法在Windows中进入DOS环境(2)用DIR命令查看根目录下的文件(3)用CD命令进入Program Files子目录,并查看子目录中的文件,2DEBUG命令用法(1)进入DEBUG,用D命令查看数据段中0100H0200H单元的内容(2)用U命令查看代码段中0100H开始的程序(3)用R命令查看并修改IP寄存器的值为0(4)用E命令修改数据段5号、6号单元的内容为12、34,实验要求:(1)写出相关命令或操作步骤(2)实验内容用截图形式记录实验结果(3)写出实验结果分析实验拓展:(1)根据自己的理解和喜好,提出并完成若干种相关实验内容(2)这些实验对你有何启发?,习题二,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号