1、微机原理与接口技术李珍香版课后习题3参考答案习题3参考答案1设BX=0123H,DI=1000H,DS=3200H,试指出下列各条指令中源操作数的寻址方式,对于是存储器操作数的,还需写出其操作数的有效地址和物理地址。(1)MOV AX,2A38H(2)MOV AX,BX(3)MOV AX,BX+38H(4)MOV AX,BX+DI(5)MOV AX,BX+DI+38H(6)MOV AX,2A38H(7)MOV AX,BX参考答案:(1)直接寻址 有效地址=2A38H,物理地址=32000H+2A38H=34A38H(2)寄存器间接寻址 有效地址=0123H,物理地址=32000H+0123H=
2、32123H (3) 寄存器相对寻址 有效地址=0123H+38H=015BH,物理地址=32000H+015B=3215BH (4) 基址变址寻址 有效地址=0123H+1000H=1123H,物理地址=32000H+1123H=33123H(5)相对基址变址寻址 有效地址=0123H+1000H+38H=115BH,物理地址=32000H+115BH=3315BH(6)立即寻址 (7)寄存器寻址2设AX=96BCH,BX=AC4DH,CF=0。求分别执行指令ADD AX,BX和SUB AX,BX后,AX与BX的值各为多少?并指出标志位SF、ZF、OF、CF、PF、AF的状态。参考答案:执行
3、ADD AX,BX后,AX=4309H,BX= AC4DH ,SF=0 ZF=0 OF=1 CF=1 PF=1 AF=1 执行SUB AX,BX后,AX=EA6FH,BX= AC4DH ,SF=1 ZF=0 OF=0 CF=1 PF=1 AF=13试比较CMP指令与SUB指令的异同。参考答案:CMP指令与SUB指令的不同点有两点:4采用三种不同的方法实现AX与DX的内容交换。参考答案:第一种:XCHG AX,DX第二种:PUSH AX PUSH DX POP AX POP DX第三种:MOV BX,AX MOV AX,DX MOV DX,BX5编写程序段实现:当DL中存放的数据是奇数时使AL=
4、0,否则使AL=-1。参考答案:TEST DL,01HJNZ NEXTMOV AL,0NEXT:MOV AL,-1 6用尽可能少的指令实现使DL中的高4位内容与低4位内容互换。参考答案: MOV CL,4 ROL DL,CL ;ROR DL,CL7编写程序段,判断AL中的带符号数是不是负数。若是负数,则将-1送给AH;否则,将0送给AH。参考答案: SUB AL,0 JS FS MOV AH,0 FS: MOV AH,-18假设DX=87B5H,CL=4,CF=0,确定下列各条指令单独执行后DX中的值。 (1)SHL DL,1 (2)SHR DX,CL(3)SAR DX, CL(4)ROL D
5、X,CL(5)ROR DX,CL(6)RCL DX,CL(7)RCR DX,1参考答案:(1)DX=876AH (2)DX=087BH (3)DX=F87BH (4)DX=7B58H (5)DX=587BH (6)DX=7B54H (7)DX=43DAH9按下列要求编写指令序列。 (1)将AX中的低4位置1,高4位取反,其它位清0。 (2)检查DX中的第1、6、11位是否同时为1。 (3)清除AH中最低3位而不改变其它位,将结果存入BH中。参考答案: (1)XOR AX,F000H AND AX,F00FH OR AX,000FH (2)MOV AX,DX AND DX,0842H XOR D
6、X,0842H JZ ZERO ZERO: DX中的第1、6、11位同时为1的情况 10分析下面的程序段完成什么功能?(提示:请将DX与AX中的内容作为一个整体来考虑) MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL参考答案:实现将DX与AX中的32位数据逻辑左移4位11设SS=1000H,SP=2000H,AX=345AH,BX=F971H,Flags=4509H,试分析执行以下指令 PUSH BX PUSH AX PUSHF POP CX之后,SP、SS、CX的值各为多少?参考答案:SP=1FFCH SS=1
7、000H CX=4509H12指出下列指令中哪些是错误的,并说明错误原因。 (1)MOV DL,CX (2)MOV DS,1000H (3)MOV DI,BX (4)MOV DL,BXBP (5)XCHG AX,5000H (6)PUSH 3541H (7)INC BX (8)POP CS (9)MOV ABX+SI,0 (10)MOV AL,300参考答案: (1)数据类型不匹配 (2)立即数不能送段寄存器 (3)两个存储器操作数之间不能直接传送数据 (4)源操作数寻址不能为基址加基址 (5)正确 (6)PUSH指令的操作数不能为立即数 (7)存储器操作数类型不明确 (8)CS不能作为目的操
8、作数使用 (9)目的操作数类型需明确 (10)操作数数据类型不匹配13已知各寄存器和存储单元的状态如图3.19所示,请阅读下列程序段,并将中间结果填入相应指令右边的空格。图3.19 各寄存器和存储单元的当前状态值MOV DX,BX+4 ; DX=( 1A87H )PUSH DS ; SP= ( FFFEH ) SP=( 2050H )TEST AX,DX ; AX= ( 8E9DH ) SF=( 0 )ADC AL, DI ; AL= ( DBH )XCHG AX,DX ; AX= ( 1A87H )DX=( 8eDBH ) XOR AH,BL ; AH=( 1EH ) SAR AH,1 ; AH=( 0FH ) CF=( 0 )15假设以1000H为起始偏移地址的内存单元内容显示如图3.20所示,请指出在DEBUG下如下每条指令的寻址方式及执行后的结果。MOV AX,1000H MOV BX,AX MOV AX,BX MOV AX,10BX 图3.20 偏移地址为1000H处的内存单元内容参考答案:MOV AX,1000H ;立即寻址,AX=1000HMOV BX,AX ;寄存器寻址,BX=1000HMOV AX,BX ;寄存器间接寻址, AX=3412HMOV AX,10BX ;寄存器相对寻址,AX=8877H