第一章1.辨析三个概念:微处理器、微型计算机、微型计算机系统微处理器:简称μP或MP(Microprocessor)是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理器部件,又称为微处理机。微型计算机:简称μC或MC,是指以微处理器为核心,配上存储器、输入/输出接口电路及系统总线所组成的计算机(又称主机或微电脑)。微型计算机系统(主机+外设+软件配置)(Microcomputersystem)简称μCS或MCS,是指以微型计算机为中心,以相应的外围设备、电源和辅助电路(统称硬件)以及指挥微型计算机工作的系统软件所构成的系统。2.微机系统结构(三种总线结构):数据总线,地址总线,控制总线第三章3.8086cup内部结构由两部分组成:总线接口单元BIU(BusInterfaceUnit);执行单元EU(ExecutionUnit).(1).总线接口单元BIU组成:4个16位的段寄存器(CS、DS、ES、SS);1个16位的指令指针寄存器IP;1个20位的地址加法器;1个指令队列(长度为6个字节);I/O控制电路(总线控制逻辑);内部暂存器。BIU的功能:根据EU的请求负责CPU与内存或I/O端口传送指令或数据。①BIU从内存取指令送到指令队列②当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。(2)执行单元EU(ExecutionUnit)组成:①ALU(算术逻辑单元);②通用寄存器组AX,BX,CX,DX(4个数据寄存器)BP(基址指针寄存器)SP(堆栈指针寄存器)SI(源变址寄存器)DI(目的变址寄存器)③数据暂存寄存器④标志寄存器FR⑤EU控制电路作用:负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。4.物理地址与逻辑地址有什么区别?答:逻辑地址是指未定位之前在程序中存在的地址,由段地址和偏移地址组成。物理地址是实际访问存储器时的地址(通过20位地址总线传递)。5.在什么情况下8086的执行单元(EU)才需要等待总线接口单元(BIU)提取指令?答:EU在执行完转移、调用(包括子程序调用和中断调用)和返回指令时,因指令的执行顺序发生跳转,原来预取到指令队列中的指令将不再执行,需清空指令队列缓冲器。在此情况下,EU才需要等待BIU从新的地址重新开始提取指令。6.存储器为什么要分段(段加偏移)?答:1.8086有1M的存储空间,有20根地址线,而CPU的指令指针和堆栈指针都是16位的,只能直接寻址64KB的地址空间,为了能寻址1MB的空间,需要把存储器分为若干段。2.存储器的分段的机制允许重定位,由于段寄存器里的段地址可以由程序来重新设定,因而使得程序和数据不需要进行任何修改,就能使他们重定位。7.段地址和段基址概念辨析1)段地址:段寄存器的内容,出现在汇编后的机器指令中。2)段基址:段地址左移4位后形成的20位段起始地址。8.8086CPU系统中为什么要用地址锁存器?8086CPU由于引脚数量少,其地址总线采用了分时复用的双重总线,仅在总线周期的Tl时钟周期输出地址信号,而在整个总线周期中地址信号需保持不变,这就需用地址锁存器将T1周期发出的地址信号锁存起来以在整个总线周期中都能使用,为此8086CPU在T1周期提供地址锁存允许信号ALE(正脉冲),用ALE的下降沿将地址信息锁存在地址锁存器中(3分)共需3片73LS373芯片用作地址锁存器,锁存信息A19—A0和BHE9.8086的最大工作模式和最小工作模式的区别?答:最小工作方式即单处理器系统方式;在此方式下,全部控制信号由CPU本身提供,它适合于较小规模的应用。CPU工作于最大工作方式时,系统的控制信号由8288总线控制其提供,通常,在最大方式系统中一般包含两个或多个处理器。10.什么叫重定位?答:重定位是指一个完整的程序块或数据块可以在存储器所允许的空间内任意浮动并定位到一个新的可寻址的区域。11.8086指令系统的特点答:8086与8088的指令系统由8位的8080/8085指令系统扩展而来的,同时又能在其后续的80x86系列的CPU上正确运行。其主要特点是:(1)采用可变长指令,指令格式比较复杂。(2)寻址方式灵活多样,处理数据的能力比较强。(3)有重复指令和乘、除运算指令。扩充了条件转移、移位/循环指令。(4)为加强软件中断功能和支持多处理器系统的工作,增设了有关的指令。12.总线周期概念:总线周期通常是指微处理器完成一次访存或I/O端口操作所需的时间。(类似于机器周期)在8086/8088中,一个最基本的总线周期由4个时钟周期组成,分别称为4个状态,即T1、T2、T3与T4这4个状态。T1状态:CPU往多路复用总线上发送地址信息,以选中所要寻址的存储单元或外设端口的地址。T2状态:CPU从总线上撤消地址,并使总线的低16位浮置成高阻状态,为传送数据做准备。T3状态,多路总线的高4位继续提供状态信息,而其低16位(对8088CPU则为低8位)上将出现由CPU写出的数据或者CPU从存储器或端口读入的数据。说明:若访问设备未准备好,则CPU会在T3之后自动插入1个或多个附加的时钟周期Tw,这个Tw就叫等待状态(CPU在每个总线周期的T3状态开始对READY信号采样。)T4状态:CPU采样数据总线,完成本次读/写操作,总线周期结束。(要对INTR信号进行采样)说明:只有BIU与内存或I/O端口交换数据,以及填充指令队列时,BIU才执行总线周期。除此之外,既不需要填充指令队列,EU也没有向BIU发出总线周期请求时,系统总线就处于空闲状态,进入空闲周期,空闲周期由一个或几个Ti状态组成。13.RESET复位后,标志寄存器与指令队列缓冲器的原有信息被清除,IP与DS、SS和ES也被清零,而CS被置为FFFFH。当RESET信号变为低电平时,CPU就从FFFF0H开始执行程序。在程序执行时,RESET线保持低电平。14.指令数据在存储器中的存放若存放的信息为1个字时,则将字的低位字节放在低地址中,高位字节放在高地址中。(注:对存放的字,若低位字节从奇数地址开始存放,为非规则字;反之,为规则字。读一个规则字需要访问一次存储器,读一个非规则字需要访问两次存储器)当存放的是双字形式(这种数一般作为指针),其低位字是被寻址地址的偏移量;高位字则是被寻址地址所在的段地址。15.8086的存储器为什么要分段?答案见616.8086/8088指令的分类8086/8088的指令按功能可分为6大类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制数据传送指令(细分成4类)通用数据传送指令MOV、PUSH、POP、XCHG、XLAT目标地址传送指令LEA、LDS、LES标志位传送指令LAHF、SAHF、PUSHF、POPFI/O数据传送指令IN、OUT传送指令:MOVDST,SRC执行操作:(DST)(SRC)说明:可实现一个字节或字的传送(例子见教材P66)。注意:*DST、SRC不能同时为段寄存器MOVDS,ES*立即数不能直接送段寄存器MOVDS,2000H*DST不能是立即数和CS*DST、SRC不能同时为存储器寻址*不影响标志位进栈指令:PUSHSRC注意:*堆栈操作必须以字为单位。*不影响标志位*不能用立即寻址方式PUSH1234H*DST不能是CSPOPCS*并非局限在栈顶操作MOVAX,[BP][SI]交换指令:XCHGOPR1,OPR2执行操作:(OPR1)(OPR2)注意:*不影响标志位*不允许使用段寄存器*不能在存储器单元之间交换换码指令:XLAT或XLATOPR(通过查表实现)执行操作:(AL)((BX)+(AL))例:MOVBX,OFFSETTABLE;(BX)=0040H(表预先建立在内存)MOVAL,3;索引值XLATTABLE指令执行后(AL)=30H注意:*不影响标志位*字节表格(长度不超过256字节)首地址(BX)*需转换的代码位移量(AL)目标地址传送指令有效地址送寄存器指令:LEAREG,SRC执行操作:(REG)SRC(存储器)指针送寄存器和DS指令:LDSREG,SRC执行操作:(REG)(SRC)(DS)(SRC+2)相继二字寄存器、DS指针送寄存器和ES指令:LESREG,SRC执行操作:(REG)(SRC)(ES)(SRC+2)相继二字寄存器、ES注意:*不影响标志位*REG不能是段寄存器*SRC必须为存储器寻址方式标志位传送指令标志送AH指令:LAHF执行操作:(AH)(FLAGS的低字节)AH送标志寄存器指令:SAHF*(置位/复位)执行操作:(FLAGS的低字节)(AH)标志进栈指令:PUSHF(转子/中断调用)执行操作:(SP)(SP)-2((SP)+1,(SP))(FLAGS)标志出栈指令:POPF*(转子/中断调用)执行操作:(FLAGS)((SP)+1,(SP))(SP)(SP)+2*影响标志位二、算术运算类指令(共20条指令)加法指令ADD、ADC、INC减法指令SUB、SBB、DEC、NEG、CMP乘法指令MUL、IMUL除法指令DIV、IDIV、CBW、CWD执行REPMOVS之前,应先做好(初始化工作):(1)源串首地址(末地址)→SI(2)目的串首地址(末地址)→DI(3)串长度→CX(最大64KB)(4)建立方向标志(CLD使DF=0,STD使DF=1)一个串传送的例子:datasegmentmess1db‘personal_computer’;字符数组dataendsextrasegmentmess2db17dup(?)extraendscodesegmentmovax,data;不能:movds,data(×)movds,ax;立即数不能直接送段寄存器movax,extra;不能:leads,data(×)moves,ax;用于取变量的有效地址leasi,mess1;源串首地址leadi,mess2;目标串首地址movcx,17;串长度cld;建立方向标志(CLD使DF=0,STD使DF=1)repmovsb;串传送…codeends例(续):把附加段中的10个字节缓冲区置为20Hleadi,mess2moval,20Hmovcx,10cldrepstosb比较例3.66中两串是否完全相同,若两串相同,则BX寄存器内容为0;若两串不同,则BX指向源串中第1个不相同字节的地址,且该字节的内容保留在AL寄存器中。CLDMOVCX,100MOVSI,2500HMOVDI,1400HREPECPMSB;串比较,直到ZF=0或CX=0JZEQQ;两串相同,置BX为0DECSI;将指针修改回第1个不相同字节处MOVBX,SIMOVAL,[SI]JMPSTOP;必须跳转,否则仍继续执行EQQEQQ:MOVBX,0STOP:HLT例:试比较两个无符号数80H和79H,则用下面的指令,即MOVAL,80HCMPAL,79HJAABOVE例:试比较两个有符号数80H和79H,则用下面的指令,即MOVAL,80HCMPAL,79HJGGREATER第三章习题答案整理3.3答:由两部分组成:总线接口单元BIU(BusInterfaceUnit),执行单元EU(ExecutionUnit).BIU的功能是根据执行单元的请求负责CPU与I/O端口或则存储器之间的数据传输。EU单元的作用是:负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。3.4答:组成:4个16位的段寄存器(CS、DS、ES、SS);1个16位的指令指针寄存器IP;1个20位的地址加法器;1个指令队列(长度为6个字节);I/O控制电路(总线控制逻辑);内部暂存器。段寄存器和地址加法器:8086的内存空间为1M,地址线为20根,但是80