微机原理作业与答案第三章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8086第三章作业

3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址

(1)1000H 10000H-1FFFFH

(2)1234H 12340H-2233FH

(3)E000H E0000H-EFFFFH

(4)AB00H AB000H-BAFFFH

3-12对于下列CS:IP组合,计算出要执行的下条指令存储器地址。

(1)CS=1000H和IP=2000H 答:下条指令存储器地址:12000H

(2)CS=2400H和IP=1A00H 答:下条指令存储器地址:25A00H

(3)CS=1A00H和IP=B000H 答:下条指令存储器地址:25000H

(4)CS=3456H和IP=ABCDH 答:下条指令存储器地址:3F12DH

3-37 指出下列指令源操作数的寻址方式

(1)MOV AX,1200H;立即数寻址

(2)MOV BX,[1200H];直接寻址

(3)MOV BX,[SI];变址寻址

(4)MOV BX,[BX+SI+1200];相对基变址寻址

(5)MOV [BX+SI],AL;寄存器寻址

(6)ADD AX,[BX+DI+20H];相对基变址寻址

(7)MUL BL ;寄存器寻址

(8)JMP BX ;间接寻址

(9)IN AL,DX ;寄存器间接寻址

(10)INC WORD PTR[BP+50H] ;相对基址寻址

小结:虽然对存储器的访问指令、输入/输出指令(IN指令和OUT指令)、跳转指令(JMP指令)都有直接寻址和间接寻址,但是形式是有很大差别的:1.直接寻址:

(1)对于存储器的访问用方括号括起来的二进制数,

如:MOV BX,[1200H]

(2)对于输入/输出指令(IN指令和OUT指令)用二进制数

如:IN AX,8FH 又如: OUT 78H,AL

(3)对于跳转指令(JMP指令)是以目标标号为直接地址的

如: JMP ADDR1

2.间接寻址:

(1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址

如:MOV AX,[BP]

(2)对于输入/输出指令用DX做间接寻址寄存器

如:IN AX,DX 又如: OUT DX,AL

(3)跳转指令直接写明寄存器即可 (段内)

如: JMP BX

段间需组合:如: JMP DWORD PTR [BX+ADDR1]

3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。

(1)M OV AL,[DI] 答:存储器操作数地址的计数表达式为:(DS)×16+(DI)(2)M OV AX,[BX+SI] 答:地址的计数表达式为:(DS)×16+(BX)+(SI)(3)M OV 8[BX+SI],AL 答:地址的计数表达式为:(DS)×16+8+[(BX)+(SI)] (4)A DD AL,ES:[BX] 答:地址的计数表达式为:(ES)×16+(BX)

(5)S UB AX,[1000H] 答:地址的计数表达式为:(DS)×16+1000H

(6)A DC AX,[BX+DI+2000H] 答:地址表达式为:(DS)×16+(BX)+(DI)+2000H

(7)M OV CX,[BP+SI] 答:地址的计数表达式为:(SS)×16+(BP)+(SI)(8)I NC BYTE PTR(DI)答:地址表达式为:(DS)×16+(DI)

注:段寄存器的分工:

1.代码段(程序段):CS

2.数据段:①一般DS;②当用BP(及其组合)间接寻址偏移量时,用SS 段寄存器;③串操作时,源段(与SI组合)用DS;目标段(与DI组合)

用ES

3.堆栈段:①与堆栈相关的指令;②当用BP(及其组合)间接寻址偏移量时,用SS段寄存器;

4.附加段:①加段超越运算符(如38-(4);;②串操作时,目标段(与DI 组合)用ES

3-39 指出8086/8088下列指令的错误何在?

1.MOV [SI],IP 答:IP不可访问:

2.MOV CS,AX 答:CS不可访问:

3.MOV BL,SI+2答:类型不匹配,或者变址寻址寄存器未加方括号。应写成MOV BL,[SI+2]或MOV BX,SI+2

4.MOV 60H,BL 答:立即数不能做目标操作数。

5.PUSH 2400H 答:PUSH的源操作数不能是立即数。

6.INC [BX] 答:对于间接寻址的存储单元加1指令,数据的长度必须用BYTE PTR、WORD PTR或DWORD PTR类型伪指令加以说明,否则,汇编程序不能确定是对字节、字还是双字加1。(P92)

7.MUL –60H 答:无符号乘法指令,操作数不能用立即数。

8.ADD [2400H],2AH 答:[2400h]前要加类型说明

9.MOV [BX],[DI] 答:在MOV指令中,两个操作数不能都是存储器操作数。

10.MOV SI,AL 答:两个操作数的长度不一样,类型不匹配。

有的同学所答非所问,问错在哪里,却作成了改成正确的。

3.40 MOV CS,AX指令会带来什么错误?

答:这样做会影响后面指令,因为CS的改变不能按要求执行。提示遇到了无效指令。

3-41 阅读下列程序段,指出每条指令执行以后有关寄存器的内容是多少?

MOV AX,0ABCH ;AX寄存器的内容是:0ABCH

DEC AX ;AX寄存器的内容是:0ABBH

AND AX,00FFH ;AX寄存器的内容是:00BBH

MOV CL,4 ;CL寄存器的内容是:04H

SAL AL,1 ;AL寄存器的内容是:76H

MOV CL,AL ;CL寄存器的内容是:76H

ADD CL,78H ;CL寄存器的内容是:0EEH

PUSH AX ;(SS*16+SP)=0076H,AX寄存器的内容是:0076H POP BX ;BX寄存器的内容是:0076H

3.42 指出RET与IRET两条指令的区别,并说明各用在什么场合?

答:(1)RET与IRET是两条返回主程序的返回指令,但RET是与过程(子程序)调用指令CALL对应使用的过程返回指令,而IRET是与中断指令INT n对应使用的中断返回指令。

(2)RET指令应安排在过程的出口即过程的最后一条指令处,它的功能是从堆栈顶部弹出由CALL指令压入的断点地址值,迫使CPU返回到调用程序的断点去继续执行。

IRET指令总是安排在中断服务程序的出口处,由它控制从堆栈中弹出程序断点送回CS和IP中,弹出标志寄存器内容送回F中,迫使CPU返回到断点去继续执行后续程序。

3.43 说明MOV BX,DATA和MOV BX,OFFSET DATA指令之间的区别?

答:MOV BX,DATA直接将DATA的值赋给BX,MOV BX,OFFSET DATA是将DATA在段内的偏移地址赋给BX.

3.44 给定DS=1100H,BX=0200H,LIST=0250H,SI=0500H。试指出下面各条指令寻址存储器的地址。

(1)M OV LIST[SI],EDX ; PA=DS*16+LIST+SI=11750H

(2)M OV CL,LIST[BX+SI];PA=DS*16+LIST+BX+SI=11950H

(3)M OV CH,[BX+SI];PA=DS*16+BX+SI=11700H

(4)M OV DL,[BX+100H];PA=DS*16+BX+100H=11300H

3.45 假定PC机存储器地地址区有关单元的内容如下:

(20H)=3CH,(21H)=00H,(22H)=86H,(23H)=0EH,且CS=2000H,IP=0010H,SS=1000H,SP=0100H,FLAGS=0240H,这时若执行INT 8指令,

相关文档
最新文档