简介:
微机原理与接口技术课后习题答案。如
第3章 8086/8088指令系统与寻址方式习题
3. 3 8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,
BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。
(1)MOV BX,12 ;目标操作数为寄存器寻址
(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H
(3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H
(4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H
(5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H
(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H
(7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H
(8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H
(9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H
3.4 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。
(1)XCHG CS,AX ;错,CS不能参与交换
(2)MOV [BX],[1000] ;错,存储器之不能交换
(3)XCHG BX,IP ;错,IP不能参与交换
(4)PUSH CS
(5)POP CS ;错,不能将数据弹到CS中
(6)IN BX,DX ;输入/输出只能通过AL/AX
(7)MOV BYTE[BX],1000 ;1000大于255,不能装入字节单元
(8)MOV CS,[1000] ;CS不能作为目标寄存器
(9)MOV BX,OFFSET VAR[SI] ;OFFSET只能取变量的偏移地址
(10)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址
(11)MOV COUNT[BX][SI],ES:AX ;AX是寄存器,不能加段前缀
3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行 PUSH BX 指令后,栈顶地址和栈顶2个字节的内容分别是什么?
当前栈顶的地址=2FF00H
当执行PUSH BX 指令后,栈顶地址=2FEFEH
(2FEFEH)=57H
(2FEFFH)=34H
3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。
(1) SHR DX,1 ;DX=3C62H CF=1
(2) SAR DX,CL ;DX=03C6H CF=0
(3) SHL DX,CL ;DX=18A0H CF=1
(4) ROR DX,CL ;DX=2BC6H CF=0
(5) RCL DX,CL ;DX=18B7H CF=1
(6) RCR DH,1 ;DX=BCC5H CF=0;
3.9 设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。
AX CF ZF OF SF PF
(1)XOR AX,VALUE ; 134EH 0 0 0 0 1
(2)AND AX,VALUE ; 0821H 0 0 0 0 1
(3)SUB AX,VALUE ; F142H 1 0 0 1 1
(4)CMP AX,VALUE ; 0A69H 1 0 0 1 1
(5)NOT AX ; F596H X X X X X
(6)TEST AX,VALUE ; 0A69H 0 0 0 0 1