当前位置:文档之家› 习题及参考解答

习题及参考解答

第3章习题及参考解答1.指出下列各指令中源操作数和目的操作数的寻址方式。

(1)MOV DI,100(2)MOV CX.100[SI](3)MOV [SI],AX(4)ADD AX,[BX+DI](5)AND AX,BX(6)MOV DX,[1000](7)MOV BX,[BP+DI+100](8)PUSHF(9)SUB [1050],CX(10)AND DH,[BP+4]解源操作数目的操作数(1)立即寻址寄存器寻址(2)变址寻址寄存器寻址(3)寄存器寻址寄存器间接寻址(4)基址加变址寻址寄存器寻址(5)寄存器寻址寄存器寻址(6)直接寻址寄存器寻址(7)基址加变址寻址寄存器寻址(8)寄存器寻址寄存器间接寻址(9)寄存器寻址直接寻址(10)变址寻址寄存器寻址2.试述指令MOV AX,2000H和MOV AX,DS:[2000H]的区别解区别有三条:(1)MOV AX,2000H对源操作数是立即寻址,而MOV AX.[2000H]对源操作数是直接寻址;(2)前者功能是把立即数2000H送入AX中,而后者是把内存2000H单元与2001H单元的内容取出送入AX 中;(3)两者的机器代码不同,执行速度也不同,前者执行时间快,后者执行时间慢。

4.若DS=4000H,BX=0800H,[40800H]=05AOH,[40802H]=2000H,求执行指令LDS SI,[BX]后,DS与SI中的内容。

若上题中的DS换成ES,其他条件不变,求执行指令LES DI,[BX]后,ES与DI中的内容。

解SI=05AOH,DS=2000HDI=05AOH,ES=2000H5.若AX=98ABH,BX=A8BCH。

求执行指令ADD AX,BX后,AX与BX中的内容,并指出SF,ZF,AF,PF,CF和OF的状态。

解AX=4167H,BX=A8BCH,SFZFAFPFCFOF=001011B。

6.若CX=6700H,DX=78FFH,CF=1。

求分别执行指令(1)ADD CX,DX(2)ADC CX,DX(3)SUB CX,DX(5)AND CX,DX(6)OR CX,DX(7)XOR CX,DX后,CX与DX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。

解(1)CX=DFFFH,DX=78FFH,SFZFAFPFCFOF=100101B(2)CX=E000H,DX=78FFH,SFZFAFPFCFOF=101101B(3)CX=EE01H,DX=78FFH,SFZFAFPFCFOF=101010B(4)CX=EE00H,DX=78FFH,SFZFAFPFCFOF=101110B(5)CX=6000H,DX=78FFH,SFZFAFPFCFOF=00×100B(6)CX=7FFFH,DX=78FFH,SFZFAFPFCFOF=00×100B(7)CX=1FFFH,DX=78FFH,SFZFAFPFCFOF=00×100B7.若AX=FFFEH,BX=FFFDH,求执行指令IMUL BX后,DX与AX中的内容。

指出标志位OF与CF的状态。

解AX=0006H,DX=0000H,OFCF=00B8.若AL=75H,BL=48H,(1)求执行指令ADD AL,BLDAA之后AL=标志AF=CF=并说明BCD码调整情况。

(2)若执行指令SUB AL,BL与DAS后,情况又如何解(1)AL=23H,AFCF=11B(2)AL=27H,AFCF=10B9.设X、Y、R、S、Z均为16位无符号数的变量。

按已给定的表达式Z(X+Y)/(R-S)→Z,有程序如下,试在空格处填入适当的指令(注:在加减过程中均无进位和借位)。

MOV AX,X①MOV CX,RSUB CX,S②③MOV Z,AXMOV Z+1,DXHLT解①ADD AX,Y②MUL Z③DIV CX10.若有一个四字节数,放在寄存器DX与AX中(DX中放高16位),要求这个4字节数整个左移一位如何实现右移一位又如何实现解(1)DX与AX左移一位:SHL AX,01RCL DX,01(2)DX与AX右移一位:SHR DX,01RCR AX,0111.若把1K字节的数据块从偏移地址为1000H开始的单元传送到偏移地址为1400H开始的缓冲区。

试用串传送操作指令和一般传送指令两种方法各编一程序实现。

解(1)利用串操作指令编程如下:MOV SI,1000HMOV DI,1400HMOV CX,400HCLDREP MOVSBMOV AM,4CHINT 21H(2)利用一般传送指令编程如下:MOV SI,1000HMOV DI,1400HMOV CX,400HNEXT:MOV AL,[SI]MOV[DI],ALINC SIINC DILOOP NEXTMOV AH,4CHINT 21H12.若在内存缓冲区中有一个长度为256个字节的数据块,起始地址偏移量为2000H。

数据块中的数据有正有负,要求把其中的正负数分开.分别送至同段的两个缓冲区,存放正数的缓冲区的起始地址偏移量为2100H,存放负数的缓冲区的起始地址偏移量为2200H。

试编一程序。

解MOV SI,2000HMOV CX,100HXOR DX,DXLOOP:MOV AL,[SI]ADD AL,0JNS PLUSINC DHNEXT:INC SIDEC CXJNZ LOOPJMP STOPPLUS:INC DLJMP NEXTSTOP:MOV[2100H],DLMOV[2200H],DHMOV AH,4CHINT21H13.若SS=1000H,SP=1000H,AX=1234H,BX=5678H,Flag=2103H,试说明执行指令PUSH BXPUSH AXPUSHFPOP CX之后,SP=SS=CX=并画图指出栈中各单元的内容。

解SS=1000H,SP=0FFCH,CX=2103H栈中各单元内容如下:地址RAM0FFAH 030FFBH 210FFCH 340FFDH 120FFEH 780FFFH 561000H XX14.若DS=1100H,SI=1000H,CS=1200H,IP=100H,[12000H]=2000H,[12002]=1500H,求执行指令(1)CALL FAR[SI]后CS与IP的内容;(2)CALL[SI]后CS与IP的内容。

解(1)CS=1500II,IP=2000H(2)CS=1200H,IP=2000H15.若执行指令INT 21H后,将转到何处执行程序,指出CS与IP的内容。

解将转到0:0086H和0:0084H处取出双字作为CS与IP的值,再执行程序。

CS的值为内存单元0:0086H和0:0087H的内容;IP为内存单元0:0084H与0:0085H的内容。

1 6.编一程序使(1)AX寄存器低4位清零;(2)BX寄存器低4位置1;(3)CX寄存器低4位变反;(4)DX寄存器高3位不变,其余位清零。

解(1)AND AX,FFF0H(2)OR BX,000FH(3)XOR CX,000FH(4)AND DX,E000H18.指出下列8086指令中哪些是错误的,错在何处(1)MOV DL,BX(2)MOV DS,2000H(3)MOV [DI],[SI](4)MOV AX,[BX][BP](5)XCHG CX,[2400H](6)PUSH D H(7)IN AH,DX(8)OUT 01F0H,AX解(1)错。

数据类型不匹配。

(2)错。

立即数不能直接送往段寄存器。

(3)错。

两个内存单元不能直接传送数据。

(4)错。

BX和BP部可作为基址寄存器,缺少变址寄存器。

没有基址加基址寻址方式。

(5)对。

(6)错。

堆栈操作必须是16位数据,DH是8位寄存器。

(7)错。

输入(IN)指令从端口读出的数据需送给累加器AL或AX,送给AH不行。

(8)错。

端口地址为16位时,必须用DX间接寻址。

19.连续执行以下指令,填写执行指令的结果(MEM为存储器物理地址)。

MOV AX,2280HMOV CX.0FFOOHMOV DS,AXMOV SI,CXADD CX,AX ;①CX=H,CF=BMOV[SI],CX ;②[SI]=H.[SI+1]=HADC[SI],AL ;③[SI]=H,MEM=HDEC BYTE [SI] ;④[SI]= H,ZFCFPF=BMOV AX,06ADC AX,08 ;⑤AX=H,CFAF=BAAA ;⑥AX=H,CFAF=BADD AL,59H ;⑦AL=H,CFAF=BDAA ;⑧AL=HAND AL,0FHMOV BX,-8NEG BX ;⑨BX=HMOV DL,06MUL DL ;⑩AX=HOR AX,0FF00HCWD ;⑾AX=HIDIV BX ;⑿AX=H,DX=HMOV AH,4CHINT 21H解①CX=2180H,CF=1B②[SI]=80H,[SI+1]=21H③[SI]=01H,MEM=32700H④[SI]=00H,ZFCFPF=111B⑤AX=000FH,CFAF=00B⑥AX=0105H,CFAF=11B⑦AL=5EH,CFAF=00B⑧AL=64H⑨BX=0008H⑩AX=0018H⑾AX=FF18H⑿AX=FFE3H,DX=0000H。

相关主题