汇编语言入门 课件

上传人:我*** 文档编号:143505847 上传时间:2020-08-31 格式:PPT 页数:46 大小:475.50KB
返回 下载 相关 举报
汇编语言入门 课件_第1页
第1页 / 共46页
汇编语言入门 课件_第2页
第2页 / 共46页
汇编语言入门 课件_第3页
第3页 / 共46页
汇编语言入门 课件_第4页
第4页 / 共46页
汇编语言入门 课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《汇编语言入门 课件》由会员分享,可在线阅读,更多相关《汇编语言入门 课件(46页珍藏版)》请在金锄头文库上搜索。

1、1,第二章 80 x86计算机组织,2.180X86微处理器,2,2.2计算机系统概述 2.2.1 硬件 计算机系统包括硬件和软件两大部分。 硬件:三个主要组成部分,用系统总线连接。,中央处理机 CPU,总线控制 逻辑,接 口,接 口,存储器,大容量 存储器,I/O设备,I/O子系统,系统总线,3,2.2.2软件: 系统软件(核心是操作系统OS) MASM.EXE TASM.EXE LINK.EXE TLINK.EXE DEBUG.EXE 用户软件,1981年推出, CPU采用芯片8088,机器字长16位, 数据线8根,地址线20根, 1M RAM, 40K ROM,IBM PC,4,中央处理

2、单元 CPU Intel 8086/8088 对汇编语言程序员来说,关心的是其中的寄存器 存储器 主存储器 呈现给汇编语言程序员的,是存储器地址 外部设备 通过接口电路与微机系统连接 汇编语言程序员看到的,是端口(I/O地址),5,2.3 中央处理机,2.3.1 IBM PC机的CPU组成:,算术逻辑部件ALU 控制逻辑 工作寄存器(14个),6,2.3.2 8086的寄存器组,8086的寄存器(如图2.1)都为16位,分为: 8个通用寄存器 1个指令指针寄存器 1个标志寄存器 4个段寄存器 掌握通用寄存器的作用 熟悉各个标志的含义 切实理解存储器组织和存储空间分段的概念,7,8,通用寄存器,

3、8086的16位通用寄存器是: AXBXCXDX SIDIBPSP 其中前4个数据寄存器都还可以分成高8位和低8位两个独立的寄存器。对其中某8位的操作,并不影响另外对应8位的数据。 8086的8位通用寄存器是: AHBHCHDH ALBLCLDL,9,数据寄存器,数据寄存器用来存放计算的结果和操作数 每个寄存器又有它们各自的专用目的: AX累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等; BX基址寄存器,常用做存放存储器地址; CX计数器,作为循环和串操作等指令中的隐含计数器; DX数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。,10,变址寄存器,变址寄存器常用

4、于 存储器寻址时提供地址 SI是源变址寄存器 DI是目的变址寄存器 串操作类指令中, SI和DI具有特别的功能,11,指针寄存器,指针寄存器用于寻址内存堆栈内的数据 SP为堆栈指针寄存器,指示栈顶的偏移地址 SP不能再用于其他目的,具有专用目的 BP为基址指针寄存器,表示数据在堆栈段中的基地址 SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址 详见堆栈操作指令,12,堆栈的概念,堆栈(Stack)是主存中一个特殊的区域 它采用先进后出FILO(First In Last Out)或后进先出LIFO(Last In First Out)的原则进行存取操作,而不是随机存取操作方式

5、。 堆栈通常由处理器自动维持 在8086中,由堆栈段寄存器SS和堆栈指针寄存器SP共同指示。 详见堆栈操作指令,13,指令指针寄存器IP,指令指针寄存器IP,指示代码段中指令的偏移地址 它与代码段寄存器CS联用,确定下一条指令的物理地址 计算机通过CS : IP寄存器来控制指令序列的执行流程 IP寄存器是一个专用寄存器,14,标志寄存器,1条件标志,(1)进位标志CF (2)零标志ZF (3)符号标志SF (4)溢出标志 OF (5)奇偶标志 PF (6)辅助进位标志AF,15,2状态控制标志,(1)方向标志DF (2)中断允许标志IF (3)追踪标志TF,16,进位标志CF(Carry Fl

6、ag),当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。 例如: 3AH + 7CHB6H,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:CF = 1,17,零标志ZF(Zero Flag),若运算结果为0,则ZF = 1,否则ZF = 0。 例如: 3AH + 7CHB6H,结果不是零:ZF = 0 86H + 7CH(1)00H,结果是零:ZF = 1 注意:ZF为1表示的结果是0,18,符号标志SF(Sign Flag),运算结果最高位为1,则SF = 1;否则SF = 0。 例如: 3AH + 7CHB6H,最高位

7、D71:SF = 1 86H + 7CH(1)00H,最高位D70:SF = 0 有符号数据利用最高有效位表示数据的符号。所以,最高有效位就是符号标志的状态。,19,奇偶标志PF(Parity Flag),当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0。 例如: 3AH + 7CHB6H10110110B, 结果中有5个1,是奇数:PF = 0 注意:PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作。,20,溢出标志OF(Overflow Flag),若算术运算的结果有溢出,则OF=1;否则 OF0。例如: 3AH + 7CHB6H,产生溢出:

8、OF = 1 AAH + 7CH(1)26H,没有溢出:OF = 0 问题: 什么是溢出? 溢出和进位有什么区别? 处理器怎么处理,程序员如何运用? 如何判断是否溢出?,21,什么是溢出,处理器内部以补码表示有符号数 8个二进制位能够表达的整数范围是:+127 -128 16位表达的范围是:+32767 -32768 如果运算结果超出了这个范围,就是产生了溢出 有溢出,说明有符号数的运算结果不正确 例如: 3AH + 7CHB6H,就是58 + 124182,已经超出-128 127范围,产生溢出,所以OF = 1;另一方面,补码B6H表达真值是-74,显然运算结果也不正确。,22,溢出和进位

9、,溢出标志OF和进位标志CF是两个意义不同的标志 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确; 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。 请看例子,23,溢出和进位的对比,例1:3AH + 7CHB6H 无符号数运算:58124182,范围内,无进位 有符号数运算: 58124182 ,范围外,有溢出 例2:AAH + 7CH(1)26H 无符号数运算:170124294,范围外,有进位 有符号数运算:8612428 ,范围内,无溢出,24,如何运用溢出和进位,处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有

10、符号数的范围设置溢出标志OF。 应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。,25,溢出的判断,判断运算结果是否溢出有一个简单的规则: 只有当两个相同符号数相加,而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确。 其他情况下,则不会产生溢出。,26,辅助进位标志AF(Auxiliary Carry Flag),运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。 例如: 3AH + 7CHB6H,D3有进位:AF = 1 这个标志主要由处理器内部使用,用于十

11、进制算术运算指令中,用户一般不必关心。,27,方向标志DF(Direction Flag),用于串操作指令中,控制地址的变化方向: 设置DF0,串操作的存储器地址自动增加; 设置DF1,串操作的存储器地址自动减少。 CLD指令复位方向标志:DF0 STD指令置位方向标志:DF1,28,中断允许标志IF(Interrupt-enable Flag),用于控制外部可屏蔽中断是否可以被处理器响应: 设置IF1,则允许中断; 设置IF0,则禁止中断。 CLI指令复位中断标志:IF0 STI指令置位中断标志:IF1,29,陷阱标志TF(Trap Flag),用于控制处理器是否进入单步操作方式: 设置TF

12、0,处理器正常工作; 设置TF1,处理器单步执行指令。 单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断。这种内部中断称为单步中断,所以TF也称为单步标志。 利用单步中断可对程序进行逐条指令的调试。 这种逐条指令调试程序的方法就是单步调试。,30,3段寄存器,8086CPU的个16位的段寄存器分别称为代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS,附加数据段寄存器ES。段寄存器用来确定该段在内存中的起始地址。 代码段用来存放程序的指令序列。CS存放代码段的段首址,指令指针寄存器IP指示代码段中指令的偏移地址。,31,例: MOV AX, 1 MOV BX, 2 ADD

13、 AX, BX 指令执行后,(AX)=3, OF=0, CF=0, ZF=0, SF=0 例: MOV AX, FFFFH MOV BX, 1 ADD AX, BX 指令执行后,(AX)=0, OF=0, CF=1, ZF=1, SF=0,32,寄存器与存储器的比较: 寄 存 器 存 储 器 在CPU内部 在CPU外部 访问速度快 访问速度慢 容量小,成本高 容量大,成本低 用名字表示 用地址表示 没有地址 地址可用各种方式形成,33,2.4 存储器,存储器是用来存放程序、数据、中间结果和最终结果的记忆装置。 2.4.1 存储单元的地址和内容 存储单元地址 :8086系统中,为了标识和存取每一

14、个存储单元,给每个存储单元规定一个编号,这就是存储单元地址。 存储单元的内容 :一个存储单元中存放的信息称为该存储单元的内容。,34,35,36,二进制位:存储一位二进制数:0或1。 字节:8个二进制位,D7D0。 字:16位,2个字节,D15D0。 双字:32位,4个字节,D31D0。 最低有效位LSB(Least Significant Bit):指数据的最低位,即D0位; 最高有效位MSB(Most Significant Bit):指数据的最高位,对应字节、字、双字分别指D7、D15、D31位。,37,图1.4表明了存储器中部分存储单元存放信息情况。从图1.4可看到,地址为34560H

15、的字节的存储单元中的内容是34H,而地址为34561H的字节存储单元中的内容是12H。,38,存储器以字节(8bit)为单位存储信息 每个字节单元有一个地址,从0编号,顺序加1 地址也用二进制数表示(无符号整数,写成十六进制) 16位二进制数可表示216=65536=64K个地址 0000H FFFFH 字长16位,一个字要占用相继的两个字节 低位字节存入低地址,高位字节存入高地址 机器以偶地址访问(读/写)存储器 字单元地址用它的低地址来表示,39,7 6 5 4 3 2 1 0,1 0 0 1 1 1 1 1 0000H (0000H)=9FH,0 0 1 0 0 1 1 0 0001H

16、(0001H)=26H,0 0 0 1 1 1 1 0 0002H (0002H)=1EH,1 1 0 1 0 1 1 1 0003H (0003H)=D7H,存储器,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,字,高位字节 低位字节,1 0 0 1 1 1 1 1,0 0 1 0 0 1 1 0,(0000H)=269FH (0002H)=D71EH (0001H)=1E26H 访问两次存储器,字节,40, 存储器地址的分段 20根地址线 220=1024K=1M=1048576 地址范围 00000H FFFFFH 小段:每16个字节为一小段,共有64K个小段 小段的首地址 00000H 0000FH 00010H 0001FH 00020H 0002

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号