资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2.1 微型计算机系统 2.1.1 微型计算机系统概念 汇编语言与微型计算机系统密切相关。先 来明确汇编语言的学习内容。第1章中提到 的三条汇编指令: MOV AX,35 ADD AX,27 MOV Z,AX 这几条指令中涉及到寄存器(AX)、加 法运算、存储单元(Z)、数据的获取和传 送、指令的存放等内容。 2.1.2 微处理器 微处理器分为执行部件EU和总线接口部件 BIU两部分。 执行部件EU中包含运算器的算术逻辑运算 单元ALU、通用寄存器组、标志寄存器 FLAGS、EC单元控制系统等; 总线接口部件BIU包含段寄存器组(CS、 DS、ES、SS)、指令指针寄存器IP、指令队列单元、地址加法器、总线控制系统等。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、DI、SP、 BP四个16位寄存器。顾名思义,它们可用来存放存储器的偏移地址。另外 ,它们也可以作为通用寄存器用。严 格地说,用来存放存储器偏移地址的 寄存器都应该叫地址寄存器,如BX基 址寄存器、IP指令指针寄存器等。 SI 源变址寄存器,可用于存放源缓冲区的偏移地址。 DI 目的变址寄存器,可用于存放目的缓冲区的偏移地址。SP 堆栈指针寄存器,用于指出堆栈区的栈顶的偏移地址。BP 基址指针寄存器,用于指出堆栈区的某个单元的偏移地址。 CS 代码段寄存器,用于指出存放程 序的代码段的段地址。 DS 数据段寄存器,用于指出存放数 据的数据段的段地址。 ES 附加段寄存器,用于指出存放附 加数据的附加段的段地址。 SS 堆栈段寄存器,用于指出堆栈区 的堆栈段的段地址。段寄存器 控制寄存器 溢出标志 方 向 标 志 中断标志 陷阱标志 符号标志 零标志 辅助进位标志 奇偶标志 进位标志 IP 指令指针寄存器:用来存放代码段中的偏移地址 ,指出当前正在执行指令的下一条指令所在单元的 偏移地址。 FLAGS标志寄存器:其中的某位代表CPU的一个标 志,最低位为D0,最高位为D15。8086CPU的标志 寄存器共有9个标志,分别为6条件码标志和3控制 标志。其含义如下: 在DEBUG调试环境下以字母缩写的形式表示各个标志位的状态。 进入DEBUG后,用R命令查看寄存器状态时,可以看到除了陷阱标志以外 的标志位的状态。如表2-1所示。 标志名标志值为1值为0进位标志CFCYNC符号标志SFNGPL零标志ZFZRNZ溢出标志OFOVNV辅助进位 标志AFACNA奇偶标志PFPEPO方向标志DFDNUP中断标志IFEIDI 例1 两个二进制数相加运算,有关标 志位自动发生变化。10011010 + 0100101111100101 CPU会自动地把标志位设为:CF=0, SF=1,ZF=0,OF=0,即无进位,结 果为负数,结果不为0,没有溢出。 练习:写出下列二进制运算的 结果以及标志位的变化: (1) 10101110+00110011 (2) 11001101-101000112.2.2 80X86寄存器组 Intel 8086、80286都是16位的寄存器。 从80386开始,寄存器扩展为32位。2.3 内存储器 2.3.1 物理地址与逻辑地址 1 地址 CPU对内存的访问是通过地址总线进行的,地址总线的每一个二进制组态对应一个存储单元,可作为该存储单元的地址。在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物理地址 物理地址是内存单元的真实地址。存储单元 的物理地址是唯一的。 Intel8086CPU有20根地址线,因此其存储空间可达220=1M字节单元。在20位地址线的存储空间中采用十六进制表示的物理地址 范围是00000HFFFFFH。3逻辑地址 逻辑地址是用户编程时使用的地址,分为 段地址和偏移地址两部分。 在8086汇编语言中,把内存地址空间划分为若干逻辑段,每段由一些存储单元构成 。 用段地址指出是哪一段,偏移地址标明是该 段中的哪个单元。段地址和偏移地址都是16 位二进制数。 逻辑地址的形式:段地址:偏移地址 例1 用十六进制分别表示的三个逻辑地址如下: 3020:055AH3021:054AH2C43:432AH 4逻辑地址与物理地址的转换 用户编程时采用的逻辑地址在CPU执行程序时 都要转换成实际的物理地址,这个转换过程是 由CPU中的地址加法器自动完成的。 转换公式为:物理地址=段地址10H+偏移地址 例1 若逻辑地址为3020:055AH,其物理地 址=3020H10H+055AH=3075AH。练习: 根据给出的逻辑地址,计算物理地 址。 逻辑地址= 2C43:432AH ,物理地址= ?2E37:9822H ,886F:7911H ,1234:05ACH , 2.3.2 存储单元 在汇编语言中,把存储单元分为字节 单元、字单元、双字单元等,称为存 储单元的属性。 存储单元中的数据称为存储单元内容 ,存储单元的地址和内容的表示形式 为用括号将地址括起来以代表单元的 内容。 如(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和字单元 37692H都是偶地址单元,而字节单元 3075BH是奇地址单元。 练习:有若干个数据需要存放 在存储单元中,请画图表示, 并标出存储单元的属性。(23560H) =37H(23562H) =2D18H(23620H) =12345678H 2.3.3 存储器分段 1分段的概念 8086CPU的地址寄存器只有16位,如果直接从地址寄存器中发出地址信号,所能访问的存储空间就只有216=64KB,达不到20位地址线所提供的地址范围。 将存储器划分为若干逻辑段,每段最 大64K字节单元。 逻辑段的大小可变,每段最少16个字 节单元,也可以100个、1000个到最 大可达65536个字节单元。 段地址和偏移地址构成逻辑地址。例如:逻辑地址为1200:2650H。 在存储器中,规定每16个字节单元为一 小段,每小段的第一个单元的物理地址 称为小段的首地址,8086的1MB内存空 间的20位物理地址用十六进制表示如下 : 规定:存储器分段时,各段的起始地 址必须是小段的首地址,即逻辑段必 须从任一个小段的首单元开始,而不 能从其它的字节单元开始。小段首地址的共同的特点是十六进制表 示的物理地址的最低位都是0,如果把0 去掉(二进制的地址去掉4个0),就可 以用16位段寄存器保存小段的首地址。例1 定义2个段,第一个段的段地址为0002H ,共16个单元;第二个段的段地址为4123H ,共1024个单元。如图标出了各段首单元和 末单元的逻辑地址。每一个段内的偏移地址都 是从0000H开始的。第一段的首单元的物理地 址00020H,末单元的物理地 址0002FH第二段的首单元的物理地 址为41230H,末单元的物理 地址为4162FH。2段的类型8086汇编语言中把逻辑段分为四种类型 ,分别是代码段、数据段、附加段和堆栈 段。 各段的逻辑地址对应表: 段名段寄存器偏移地址代码码段CSIP数据段DSBX、SI、DI等地 址寄存器 附加段ESBX、SI、DI等地 址寄存器 堆栈栈段SSSP或BP例1段寄存器与其偏移地址如下,写出其相应 的物理地址及含义。 CS=1896H,IP=1655H 当前要执行的指令的物理地址 =18960H+1655H=19FB5H DS=2896H,EA=1655H 当前要访问的数据的物理地址 =28960H+1655H=29FB5HES=1896H,EA=2655H 当前要访问的数据的物理地址 =18960H+2655H=1AFB5HSS=1896H,SP=3655H 当前要访问的堆栈的物理地址 =18960H+3655H=1BFB5H例2 段寄存器与内存的分段情况如图。观察各 段的大小及分布,判断其地址范围,标出每个 段首地址和末地址。 代码段共64KB单元,它 的地址范围应该是 210E0H310DFH。 附加段只有2KB,地址范 围在34600H34CFFH 之间。 数据段为16KB,其地址 范围为34D00H 38CFFH。 堆栈段只有512个字节单 元,它的地址范围是 84180H8437FH。 你懂了吗 ?2.4 实例二 进入计算机1DEBUG的主要命令2进入DOS3. 进入DEBUG2.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 显示文件列表 cd hb 进入hb子目录 cd 退回到上一级目录 e:进入e盘 cls 清屏 DOS和DEBUG命令都支持大小写。 3. 进入DEBUG DEBUG的提示符是小短线 ,在其后输入命令。(1)R命令查看和修改寄存器 R命令有两种用法:直接键入R,将显示CPU所有的寄存器和标志位;修改寄存器:在R后跟写寄存器名,则先显 示寄存器的内容,在冒号后可键入新的值 逻辑地址机器指令汇编指令标志位状态 (2)D命令查看内存单元 用D命令可以查看存储单元的地址和内容。 例如: D DS:0
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号