41564736.doc集 - 4 - 编者:喻其山
(3) 代码段最大的程序可存放多少字节?首地址和末地址各为多少?
(4) 如果先后将FLAGS、AX、BX、CX、SI和DI压入堆栈,则(SP)=?如果此时(SP)=2300H,则原来的(SP)=?
答:(1)、64KB;首地址为1050:0000H,末地址为1050:FFFFH。
(2)、1000H 个16位的字;首地址为0400:0000H,末地址为0400:1FFEH。 (3)、64KB;首地址为2080:0000H,末地址为2080:FFFFH。 (4)、(SP)=1FF4H;原来的(SP)=230CH 2.12 (3)、如右图所示:对于8086,当(CS)=2020H时,物理地址为24200H,则
当(CS)=6520H时,物理地址应转移到什么地方? 2.13 什么是总线周期?什么是时钟周期?一个典型的总线周期最小包括几个时
钟周期?什么情况下需要插入等待周期TW?
答:(1)、总线周期:总线接口部件完成一个取指令或传送数据的完整操作
所需的最少时钟周期数。
(2)、时钟周期:CPU输入的CLK时钟信号。 (3)、4。
(4)、当被写入数据或者被读取数据的外设或存储器不能及时地配合
CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好的信号”,于是CPU会在T3之后插入一个或多个附加的时钟周期TW。 2.14 总线周期中每个T状态的具体任务是什么?
2.15 试画出8086最小模式下将内存单元50326H的内容55H读入AL的时序图。 2.16 80386CPU的主要特点是什么?
2.17 80386CPU包含哪些寄存器?各有什么主要用途?
2.18 什么是实地址方式?什么是保护虚拟地址方式?什么是虚拟8086方式?它
们各有什么特点? 2.19 80386CPU中,选择符中3个字段的名字分别叫什么?大小各是多少?各有
什么作用? 2.20 一个段描述符中有几个字节?试说明其中每个字段的含义与作用? 2.21 80386的地址空间可映射到多少页?页有多大? 2.22 页转换产生的线性地址的3部分各是什么? 2.23 简述Pentium的主要结构特点。
2.24 Pentium内部结构的主要特点有哪些?什么是超标量结构?什么是超级流
41564736.doc集 - 5 - 编者:喻其山
水线?
2.25 简述Pentium处理器中U和V两个指令流水线的特点及作用。 2.26 Pentium 4处理器有哪些高级特性?
第 3 章 寻址方式和指令系统
3.1 3.2
什么叫寻址方式?8086CPU有哪几种寻址方式?
指出下列指令中源操作数和目的操作数的寻址方式: (1)MOV AX, 0AH (2)ADD [BX], DX (3)PUSH CS (4)POP DS (5)MUL BL (6)MOV DX,[1200H] (7)MOVSB (8)SUB AX,5[BP+DI] 答:(1)、DEST为寄存器寻址,SRC为立即数寻址。
(2)、DEST为寄存器间接寻址,SRC为寄存器寻址。
(3)、DEST为隐含堆栈指针寄存器间接寻址,SRC为寄存器寻址。 (4)、DEST为寄存器寻址,SRC为隐含堆栈指针寄存器间接寻址。 (5)、DEST为隐含寻址,SRC为寄存器寻址。
(6)、DEST为寄存器寻址,SRC为存储器直接寻址。
(7)、DEST为附加段存储器DI隐含寻址,SRC为数据段存储器SI隐
含寻址。(串传送)
(8)、DEST为寄存器寻址,SRC为基址变址相对寻址。 在直接寻址方式中,一般只指出操作数的偏移地址。试问:段地址如何确定?如果要用某个段寄存器指出段地址,指令应如何表示? 答:(1)、段地址默认为是DS的内容。
(2)、用短跨越前缀指出段地址。指令中用“段寄存器:”表示。 当用寄存器间接寻址方式时,试问:BX、BP、SI、DI分别在什么情况下使用?它们的物理地址如何计算?
分别指出下列指令中源操作数和目的操作数的寻址方式。若是存储器寻址,试写出其有效地址和物理地址。设(DS)=6000H,(ES)=2000H,(SS)=1500H,(SI)=00A0H,(DI)=6010H,(BX)=0800H,(BP)=1200H,数据变量VAR为0050H。
(1) MOV AX, 3050H (2) MOV DL, 80H (3) MOV AX, VAR (4) MOV AX, VAR[BX][SI] (5) MOV AX, [BX+25H] (6) MOV DI, ES:[BX] (7) MOV DX, [BP] (8) MOV BX, 20H[BX] (9) AND AX, BX (10) MOV BX, ES:[SI]
3.3
3.4 3.5
41564736.doc集 - 6 - 编者:喻其山
(11) ADC AX, [BX+DI] (12) PUSH DS 答:(1)、DEST为寄存器寻址,SRC为立即数寻址。
(2)、DEST为寄存器寻址,SRC为立即数寻址。 (3)、DEST为寄存器寻址,SRC为直接寻址。
EA=0050H,PA=(DS)×10H+EA=60050H
(4)、DEST为寄存器寻址,SRC为基址变址相对寻址。
EA=0050H+0800H+00A0H=08F0H,PA=(DS)×10H+EA =608F0H (5)、DEST为寄存器寻址,SRC为寄存器相对寻址。
EA=0800H+25H=0825H,PA=(DS)×10H+EA =60825H (6)、DEST为寄存器寻址,SRC为寄存器间接寻址。
EA=0800H,PA=(ES)×10H+EA =20800H
(7)、DEST为寄存器寻址,SRC为寄存器间接寻址。
EA=1200H,PA=(SS)×10H+EA =16200H
(8)、DEST为寄存器寻址,SRC为寄存器相对寻址。
EA=20H+0800H=0820H,PA=(DS)×10H+EA =60820H (9)、DEST为寄存器寻址,SRC为寄存器寻址。
(10)、DEST为寄存器寻址,SRC为寄存器间接寻址。
EA=00A0H,PA=(ES)×10H+EA =200A0H
(11)、DEST为寄存器寻址,SRC为基址变址寻址。
EA=0800H+6010H=6810H,PA=(DS)×10H+EA =66810H
(12)、DEST为隐含堆栈指针寄存器间接寻址,SRC为寄存器寻址。
EA=(SP)-2,PA=(SS)×10H+EA 3.6
设堆栈指针SP的初值为2300H,(AX)=5000H,(BX)=4200H。执行指令
PUSH AX后,(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=?
答:(1)、(SP)=22FEH。
(2)、(SP)=22FEH,(AX)=4200H,(BX)=4200H。 试说明指令MOV BX,15[BX]与指令LEA BX,15[BX]的区别。
答:指令MOV BX,15[BX]是读取数据段偏移地址为((BX)+0FH)的内容
送到BX中。指令LEA BX,15[BX]是取该偏移地址值(BX)+0FH送到BX中。 已知(DS)=2000H,有关的内存单元值为(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,位移量COUNT=1200H。执行下列指令后,寄存器AX、BX、SI的值分别是多少? MOV BX,OFFSET COUNT MOV SI,[BX]
MOV AX,COUNT[SI][BX]
答:(AX)= 3040H,(BX)= 1200H,(SI)= 1000H。
3.7
3.8
41564736.doc集 - 7 - 编者:喻其山
3.9
设标志寄存器值原为0401H,AX=3272H,BX=42A2H。执行下列减法指令SBB AL,BH之后,AX和标志寄存器的值分别是多少? 答: (AX)= 322FH,(FR)= 0410H。
3.10 设若标志寄存器原值为0A11H,SP=0060H,AL=4。下列几条指令执行后,
标志寄存器、AX、SP的值分别是多少? PUSHF LAHF
XCHG AH,AL PUSH AX SAHF POPF
答:(FR)= 0411H,(AX)= 0411H, (SP)= 005EH。 3.11 指出下列指令的错误
(1) ADD SI,CL (2) MOV 50,AL (3) MOV CS, AX (4) MOV DS,1234H (5) SHL AX,05H (6) XCHG 200,AL (7) IN AX,378H (8) JNZ BX (9) MOV AH,CX (10) MOV 33H,AL (11) MOV AX,[SI][DI] (12) MOV [BX],[SI]
(13) ADD BYTE PTR [BP],256 (14) MOV DATA[SI],ES:AX (15) JMP BYTE PTR [BX] (16) OUT 230H,AX (17) MOV DS,BP (18) MUL 39H 答:(1)、SI,CL字长不同。
(2)、DEST不能为立即数50。 (3)、DEST为CS段寄存器寻址。 (4)、立即数不能直接送段寄存器。 (5)、多次移位必须要用CL指出来。
(6)、DEST不能为立即数200(交换指令不能有立即数寻址)。 (7)、端口地址超过0FFH必须要用DX寄存器间接寻址。
(8)、条件转移指令只能用短内直接短转移寻址,不能用寄存器寻址。 (9)、AH,CX字长不同。
(10)、DEST不能为立即数33H。
(11)、SRC可为基址变址寻址。但不能为变址变址寻址。 (12)、双操作数指令不能同时为存储器寻址方式。 (13)、字长不同:256不是字节长度了。
(14)、段跨越前缀应放在存储器操作数或整个指令的前面。 (15)、JMP指令的寻址方式不能为字节属性。
(16)、端口地址超过0FFH必须要用DX寄存器间接寻址。 (17)、指令正确。
(18)、8086的乘法指令不能为立即数。
41564736.doc集 - 8 - 编者:喻其山
3.12 若内存单元DATA在数据段中偏移量为24C0H处,24C0~24C3H单元中依
次存放着55H、66H、77H、88H。下列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少? MOV AX, DATA LEA SI, DATA MOV CL, [SI] LDS BX, DATA 3.13 条件转移指令均为相对转移指令,请解释“相对转移”含义,试问若须往较
远的地方进行条件转移,该怎么办? 3.14 假设(DS)=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H,(DI)=2600H,
位移量DATA=40H (217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H。 试确定下列转移指令的转移地址。 (1) JMP 2300H (2)JMP WORD PTR[BX] (3) JMP DWORD PTR [BX+DATA] (4)JMP BX (5) JMP DWORD PTR [BX][DI] 答:(1)、0200H: 2300H。CS不变
(2)、0200H: 2300H。CS不变 (3)、9000H: 0400H
(4)、0200H: 0500H CS不变 (5)、(23DA2H): (23DA0H) 3.15 若32位二进制数存放于DX和AX中,试利用移位与循环指令实现以下操
作:
(1) DX和AX中存放的无符号数,将其分别乘2除2。 (2) 若DX和AX中为有符号数,将其分别乘2和除2。 答:(1)、SHL AX, 1 ;AX乘2
RCL DX, 1 ;DX乘2 SHR DX, 1 ;DX除2 RCR AX, 1 ;AX除2 (2)、SAL AX, 1 ;AX乘2
RCL DX, 1 ;DX乘2 SAR DX, 1 ;DX除2 RCR AX, 1 ;AX除2 3.16 下段程序完成什么工作?
DATX1 DB 300DUP(?) DATX2 DB 100DUP(?)
MOV CX,100 MOV BX,200 MOV SI,0 MOV DI,0