练习题1、8086CPU向0052H单元写入一个字,写入过程中BHE和A0的逻辑电平是()。
A、0和0B、0和1C、1和0D、1和12、8086CPU用()信号的下降沿在T1结束时将地址信息锁存在地址锁存器中。
A、M/IOB、BHEC、ALED、READY3、下列8086CPU标志寄存器FR的标志位中,不属于状态标志位的是( )A、OFB、IFC、AFD、PF4、8086CPU在进行读内存操作时,控制信号M/IO 和DT/R的状态是( )A、00B、01C、10D、115、当8086CPU采样到READY=0,则CPU将( )A、执行停机指令B、插入等待周期C、执行空操作指令 D、重新发送地址码6、在8086CPU的标志寄存器中,控制标志位占()A、3位B、9位C、4位D、16位7、8086 CPU内有指示下条指令有效地址的指示器是()A、IPB、SPC、BPD、SI8、现行数据段位于存储器B0000H到B0FFFH字节单元,则段寄存器DS的内容及该段长度(字节数)分别为()A、B000H,1000HB、0000H,0FFFHC、B000H,0FFFHD、B000H,00FFH9、指令MOV BX,[BP]中,约定的段寄存器是( )A、ESB、SSC、DSD、CS10、下列指令有语法错误的是()A、MOV [SI],[DI]B、IN AL,DXC、MOV AX,[0100H+BX+SI]D、PUSH BX11、堆栈操作时,段内偏移量由()寄存器指出。
A、SPB、BPC、SID、DI12、地址总线的“宽度”决定了计算机系统内存的最大容量,8086有20根地址线,可寻址()字节的存储单元。
A、512KB、1MC、2MD、4M13、条件转移指令JZ的测试条件()A、CF=0B、CF=1C、ZF=0D、ZF=114、INC指令不影响()标志A、OFB、CFC、ZFD、SF15、寄存器间接寻址方式中,操作数在()中。
A、通用寄存器B、堆栈C、存储单元D、段寄存器16、假设(SS)=2000H,(SP)=0012H,(AX)=1234H,执行PUSH AX后,()=12HA、20014HB、20011HC、20010HD、2000FH17、若要检查BX寄存器中的D12位是否为1,应该用()指令。
A、OR BX,1000HB、TEST BX,1000HC、XOR BX,1000HD、AND BX,1000H18、8086CPU的40根引脚中,有()个是分时复用的。
A、21B、1C、2D、2419、8086CPU复位后,CPU执行的第一条指令的起始地址应是()。
A、FFFF0HB、FFFF1HC、FFFF2HD、FFFFFH20、8086CPU对内存读/写操作,需两个总线周期的读/写操作是()21、用BP作基址变址寻址时,操作数所在的段是当前( )。
A、数据段B、代码段C、堆栈段D、附加段22、当RESET信号进入高电平状态后,将使8086/8088微处理器的()寄存器为0FFFFH。
A、CSB、ESC、IPD、BP23、8086CPU中的SI是一个多少位的寄存器( )A、8位B、16位C、24位D、32位24、若AL中的内容为04H,CL中的内容为04H,执行指令SHL AL,CL指令后,AL中的内容为()A、08HB、10HC、16HD、40H25、某寄存器与它自己相异或,结果为()A、0FFFFHB、0000HC、00FFHD、不能确定26、当两个无符号数作减法运算时,CF=0说明()A、被减数小B、被减数大C、被减数与减数相等D、不能确定27、在LOOP指令执行时,隐含着对某寄存器减1的操作,该寄存器是( )A、AXB、BXC、CXD、DX28、下列关于8086传送类指令说法错误的是()。
A、立即数只能做源操作数;B、不能在存储器之间直接传送C、不能给CS和IP置新值;D、堆栈操作指令必须以字节为操作数29、若寄存器AX,BX,CX,DX的内容分别为14,13,12,11时,依次执行PUSH AX,PUSH BX,POP CX,POP DX,PUSH CX,PUSH DX,POP AX,POP BX后,则寄存器AX和BX的内容分别为:()A、14,13B、13,12C、12,11D、14,1130、INC指令不影响()标志A、OFB、CFC、ZFD、SF31、若BL=20H,BH=32H,则BX=()。
A、20HB、32HC、2032HD、3220H32、8086CPU与慢速设备之间进行数据传输,为了使传送速度匹配,有时需要在()状态之间插入若干等待周期TW。
A、T1和T2B、T2和T3C、T3和T4D、随机33、()指向的内存单元的值被CPU做为指令执行。
A、DS:SIB、CS:IPC、SS:SPD、ES:DI34、堆栈段寄存器是()。
A、DSB、SSC、ESD、CS35、8086CPU地址线与数据线分别为多少条? ( )A. 8条,16条B. 8条,20条C.20条,16条D.16条,20条A、从偶地址读/写一个字节B、从奇地址读/写一个字节C、从偶地址读/写一个字D、从奇地址读/写一个字1、指出8086CPU和8088CPU的区别?2、8086CPU为什么要用地址锁存器?3、简述8086CPU最小模式下的总线组成?4、8086系统中的8286是什么器件?起什么作用?5、要想完成[2000H]送[1000H],用指令MOV [1000H], [2000H]是否正确,说明原因?6、8086CPU读/写总线周期各包含多少个时钟周期?什么情况下需要插入TW等待状态?应插入多少个TW,取决于什么因素?什么情况下会出现空闲状态TI?7、说明在debug中A、E、D、T、R、G命令的功能?第一讲第三章 指令系统--寻址方式回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过程。
重点和纲要:指令系统--寻址方式。
有关寻址的概念;6种基本的寻址方式及有效地址的计算。
讲授内容:3.1 8086/8088寻址方式首先,简单讲述一下指令的一般格式:计算机中的指令由操作码字段和操作数字段组成。
操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。
操作数:指在指令执行操作的过程中所需要的操作数。
该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。
寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。
8086/8088的基本寻址方式有六种。
1.立即寻址所提供的操作数直接包含在指令中。
它紧跟在操作码的后面,与操作码一起放在代码段区域中。
如图所示。
例如:MOV AX,3000H立即数可以是8位的,也可以是16位的。
若是16位的,则存储时低位在前,高位在后。
立即寻址主要用来给寄存器或存储器赋初值。
2.直接寻址操作数地址的16位偏移量直接包含在指令中。
它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。
如图2-2所示。
例如:MOV AX,DS:[2000H];图2-2(对DS来讲可以省略成MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。
8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。
此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。
MOV AX,[2000H] ;数据段MOV BX,ES:[3000H] ;段超越,操作数在附加段即绝对地址=(ES)*16+3000H3.寄存器寻址操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。
例如:MOV DS,AXMOV AL,BH4.寄存器间接寻址操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。
可以分成两种情况:(1)以SI、DI、BX间接寻址,则通常操作数在现行数据段区域中,即数据段寄存器(DS)*16加上SI、DI、BX中的16位偏移量,为操作数的地址,例如:MOV AX,[SI] 操作数地址是:(DS)*16+(SI)(2)以寄存器BP间接寻址,则操作数在堆栈段区域中。
即堆栈段寄存器(SS)*16与BP的内容相加作为操作数的地址,例如:MOV AX,[BP] 操作数地址是:(SS)*16+(BP)若在指令中规定是段超越的,则BP的内容也可以与其它的段寄存器相加,形成操作数地址。
例如:MOV AX,DS:[BP] 操作数地址是:(DS)*16+(BP)5.变址寻址由指定的寄存器内容,加上指令中给出的8位或16位偏移量(当然要由一个段寄存器作为地址基准)作为操作数的偏移地址。
(操作数在存贮器中)可以作为寄存器变址寻址的四个寄存器是SI、DI、BX、BP。
⑴若用SI、DI和BX作为变址,则与数据段寄存器相加,形成操作数的地址即默认在数据段;⑵若用BP变址,则与堆栈段寄存器相加,形成操作数的地址即默认在堆栈段例如:MOV AX,COUNT[SI];操作数地址是:(DS)*16+(SI)+COUNT但是,只要在指令中指定是段超越的,则可以用别的段寄存器作为地址基准。
6.基址加变址寻址把BX和BP看成是基址寄存器,把SI、DI看着是变址寄存器,把一个基址寄存器(BX或BP)的内容加上一个变址寄存器(SI或DI)的内容,再加上指令中指定的8位或16位偏移量(当然要以一个段寄存器作为地址基准)作为操作数的偏移地址,如图所示。
操作数在存贮器中,其偏移地址由(基址寄存器)+(变址寄存器)+相对偏移量形成基址寄存器――BX:数据段、BP:堆栈段;变址寄存器――SI、DI。
例如:MOV AX,[BX][SI] 或MOV AX,[BX+SI]也可放置一个相对偏移量,如COUNT 、MASK等等,用于表示相对寻址。
MOV AX,MASK[BX][SI]MOV BH,COUNT[DI][BP];MOV BH,COUNT[BP+DI]✧若用BX作为基地址,则操作数在数据段区域✧若用BP作为基地址,则操作数在堆栈段区域但若在指令中规定段是超越的,则可用其它段寄存器作为地址基准。
P.28 表2-1 段寄存器使用的基本约定习题与思考:1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量V AL的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?其物理地址是多少?(1)MOV AX,0ABH (2)MOV AX,[100H](3)MOV AX,V AL (4)MOV BX,[SI](5)MOV AL,V AL[BX] (6)MOV CL,[BX][SI](7)MOV V AL[SI],BX (8)MOV [BP][SI],1002.已知SS=0FFA0H,SP=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。