(精简版)08级微机原理与应用第二章(1)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第2章80X86/Pentium系列微处理器仰恩大学计算机与信息学院张立民制作2第2章80x86/Pentium系列微处理器2·116位微处理器编程结构2·232位微处理器编程结构简介2·38086/8088CPU的引脚功能2·480x86/Pentium系列CPU技术的发展3§2.116位微处理器编程结构2.1.1微型计算机基本结构42.1.28086/8088CPU的编程结构1.Intel8086/8088CPU的功能结构计算机的特点就是运行程序、执行指令指令是在存储器中执行指令一般分为两个阶段:①取指令阶段②执行阶段8086/8088CPU的指令是重叠执行的。58086/8088CPU的内部结构分为两部分:①EU——执行单元②BIU——总线接口单元68088/8086CPU结构执行单元EU总线接口单元BIU7运算器控制器寄存器指令队列地址加法器8有16位ALU有6字节的指令队列有地址加法器(目的是要形成20位的物理地址)有14个寄存器8086是16位CPU(内部、外部数据总线宽度都是16位)8088是准16位CPU(内部数据总线宽度为16位,外部为8位)92.Intel8086/8088的寄存器结构及其用途寄存器组一共有14个寄存器,分3类:数据寄存器(4个)①通用寄存器指针寄存器(2个)变址寄存器(2个)②段寄存器(4个)③专用寄存器(2个)10数据寄存器:AX,BX,CX,DXAHALBLBHCHDHCLDLAXBXCXDX16位8位8位累加器基址寄存器计数寄存器数据寄存器11指针寄存器BP,SPBPSP基地址指针寄存器堆栈指针寄存器16位12变址寄存器SI,DISIDI源变址寄存器目的变址寄存器16位13段寄存器:CS,DS,SS,ESCSDSSSES16位代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器段寄存器中存放的是段地址14指令指针IP(相当程序计数器PC)IP的内容是偏移量——偏移地址IP的内容是当前即将要执行指令的偏移地址。IP是16位的当前的偏移地址是B79EH1011011110011110156个状态标志的意义:溢出标志符号标志零标志辅助进位标志奇偶标志进位标志标志寄存器FLAGS有9个标志16标志寄存器FLAGS的3个控制标志位意义方向标志中断允许标志跟踪标志(单步执行标志)(陷阱标志)17FLAGS的6个状态标志详解18CF——进位、借位标志。运算中数据最高位有进位或借位,为“1”,否则为“0”。“1”,表示无符号数运算溢出。D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0OFSFZFAFPFCF标志寄存器Flag各位的定义:OF——溢出标志(对于加、减法)。为“1”,表示有符号数运算溢出。为“0”,表示有符号数运算不溢出。19PF——奇偶校验位标志,奇校验。(使1的个数为奇数)D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0OFSFZFAFPFCFAF——辅助进位标志(半进位标志)。ZF——零标志,计算结果为“0”,ZF=1。计算结果不为“0”,ZF=0。SF——数据符号标志,与运算结果最高位一致。20“溢出”的概念:运算的结果超出了计算机所能表示数值的范围。计算机的“溢出”与运算时采用的位数有关计算机运算时采用的位数是8位,16位,32位……21无符号整数表示的范围:①8位无符号整数表示的范围:00000000~111111110~+255②16位无符号整数表示的范围:0000000000000000~11111111111111110~65535运算结果超出上面表示的范围就是溢出!22有符号整数(补码)表示的范围:①8位有符号整数(补码)表示的范围:10000000~01111111-128~+127②16位有符号整数(补码)表示的范围:1000000000000000~0111111111111111-32768~+32767运算结果超出上面表示的范围就是溢出!23运算对FLAGS标志位的影响24①无符号数溢出的问题例:10111011→187+01101101→+1091←00101000→296256+40=296对于无符号数最高位有进位(减法为借位)计算结果为溢出。25减法:1→00111011→59-01101101→-10911001110≠-50结果是206,应为-50,作为无符号数运最高位有借位,运算结果溢出了!(206-256=-50)010101D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0OFSFZFAFPFCF26关于无符号数运算溢出的结论:作加法运算时,最高位有进位→溢出作减法运算时,最高位有借位→溢出溢出就意味着运算结果出错!标志位CF=0,无符号数运算不溢出标志位CF=1,无符号数运算溢出,运算结果不可用27②有符号数(补码)的溢出问题10111011→-69+01101101→+1091←00101000→40结果正确!没有溢出!标志位OF=0次高位最高位28对带符号数溢出的判断(双高法)对有符号数的运算,最高位、次高位同时有进位(加法)或借位(减法),或无进位及借位,运算结果不溢出,OF=0。对有符号数的运算,最高位、次高位只有一个有进位(加法)或借位(减法),运算结果溢出,OF=1。29求标志寄存器Flag各位的状态:如果是有符号数:减法:1→00111011→59-01101101→-10911001110-50OFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D001010111001110→CEH→-32H=-50正确!不溢出303.Intel8086/8088CPU对存储器的访问1)存储器的组成存储器由若干个存储单元组成每个单元有8位(bit),也就是一个字节(Byte)每2个存储单元存放一个字(Word)每一个字节对应一个(物理)地址。31一个字占据两个相邻的内存单元低字节放在低地址的单元中,高字节放在高地址的单元中字的地址由低字节的地址来表示字的地址为偶地址的字是规则字,为奇地址的字为非规则字地址用无符号数表示(用16进制)选学32用物理地址表示3309235H字单元是3456H,是非规则字。094A8H单元是43H3409236H字单元是1234H,是规则字。094A7H字单元是4344H352)内存的分段管理、逻辑地址、物理地址8086/8088为什么对内存要进行分段管理?8086/8088有20根地址线,寻址空间为1MB。对应的地址范围是:00000~FFFFFH但是8086/8088CPU内部与地址有关的寄存器都是16位的,不能提供20位地址。为了解决这个矛盾,对存储器进行了分段管理。3620位物理地址的形成四个段寄存器CS,SS,DS,ES内存放的是16位段地址。指令指针IP的内容是偏移地址,它的内容可以看作16位计数器的值。将段地址左移4位与IP的内容通过地址加法器相加就形成了20的——物理地址。20位的地址由地址总线送出,就可以在存储器中找到唯一对应这个地址的存储单元。37段地址、偏移地址、物理地址段地址:(CS)=1100H偏移地址:(IP)=1246H物理地址:1100H×10H+1246=12246H1100+124612246H段地址偏移地址物理地址38逻辑地址:1100:1246逻辑地址段地址偏移地址段基址39“段地址”与书上“段基址”本质的意义是一样的。40A19A18A17A16A1A2A3CPU存储器译码电路0001110C5逻辑地址:1100:1246H物理地址:12246HCPU送出的是物理地址41由于8086/8088的存储器是分段管理,因此8086/8088的源程序编写具有分段结构CS定义了代码段(程序段)——该段存放了用户要运行的程序DS定义了数据段——该段存放用户要使用的数据,或存放运算结果的数据SS定义了堆栈段——用户使用的堆栈ES定义了附加段(扩展段)——该段可存放数据或字符串(串),往往在串操作中存放目的串。42一个程序可以有多个CS段、DS段、SS段、ES段438086/8088的存储器分段的特点:1.一个段的最大长度为64KB。2.段与段的最小距离为16B(字节)3.各段可以:是彼此间隔的各段是彼此邻接的段可以彼此部分重叠段可以彼此完全重叠4.8086/8088的存储器最多可分64K个段,也就是最多可分65536个段。44存储器段的概念堆栈段数据段代码段(程序段)各段是彼此间隔的存储器45存储器段的概念堆栈段数据段代码段(程序段)各段是彼此邻接的存储器46存储器段的概念段可以彼此部分重叠存储器数据段堆栈段47存储器段的概念段可以彼此完全重叠存储器数据段堆栈段48有关段的一些概念扩展:一个段的最大长度为64K,它的地址范围为0000~FFFFH1M存储空间最多可以有64K个(65536个)段49计算机复位时(CS)=FFFFH,(IP)=0000H,程序从FFFF0H单元开始运行5000000FFFFFFFFF0复位后从这里开始运行逻辑地址是FFFF:0000C68B××××××××××××复位后(CS)=FFFFH(IP)=0000H5152当前段一个段不够可用其它的段53段地址×10H+偏移地址=物理地址54一个物理地址可以对应不同的逻辑地址一个单元可以在不同的段中55一个单元可以有不同的逻辑地址但一个单元只有唯一的一个物理地址564.Intel8086/8088CPU对堆栈的设置与操作堆栈特点及功能:(1)后进先出(LIFO,FILO)(2)堆底、栈顶、堆栈指针(3)堆栈指针始终指向栈顶(4)主要作用之一:保护现场、恢复现场堆栈特点571)Intel8086/8088CPU对堆栈的设置栈底栈顶堆栈指针58堆栈段的段基地址59堆栈段的最大深度是64KB。堆栈的深度不够,可另外再设置堆栈。SP也要重新设置。堆栈是按字组织的。602)Intel8086/8088CPU对堆栈的操作61堆栈操作有三种:①设置堆栈②进栈③出栈①设置堆栈要设置堆栈段的段地址、堆栈指针MOVAX,2100HMOVSS,AXMOVSP,0100H62②进栈③出栈MOVAX,0D58CHPUSHAX③出栈POPBX结果:(BX)=0D58CH63堆栈的主要功能之一保护现场,恢复现场6412345678910651234567891066123456789106712345678910681111

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功