微机原理第三章作业答案
第三章微机原理习题答案
![第三章微机原理习题答案](https://img.taocdn.com/s3/m/6082070ba200a6c30c22590102020740bf1ecd50.png)
第三章习题答案一、 单选题1. 8086是高性能的第三代微处理器,是Intel 系列的系列的 B 位微处理器。
位微处理器。
A .8 B .16 C .32D .64 2. 8086有20根地址线,可以寻址到的内存空间能达到根地址线,可以寻址到的内存空间能达到 B 字节。
字节。
A .1KB .1MC .1GD .1T 3. 80486的内部所有部件都连接在的内部所有部件都连接在 A 上,并通过上,并通过 B 交换数据交换数据A .内部总线.内部总线B .数据总线.数据总线C .地址总线.地址总线D .外部总线.外部总线4. C 的任务就是在内部控制总线信号的控制下,把内部数据总线上的数据送上外部地址总线,或与外部数据总线的某些位交换数据,并产生相应的外部控制信号。
址总线,或与外部数据总线的某些位交换数据,并产生相应的外部控制信号。
A .高速缓存部件.高速缓存部件B .代码预取部件.代码预取部件C .总线接口部件.总线接口部件D .指令译码部件.指令译码部件5. 在指令流水线技术中,预取指令部件一次可以从内部Cache 取 C 字节的指令代码,送预取指令队列等候执行。
送预取指令队列等候执行。
A .4B .8C .16D .32 6. 当存储器的读出时间大于CPU 要求的时间时,为了保证CPU 与存储器的周期配合,就要利用一个READY 信号,使CPU 插入一个插入一个 D 状态。
状态。
A .T 1 B .T 2 C .T 3D .T w 7. 指令队列的作用是指令队列的作用是D 。
A .暂存操作数地址.暂存操作数地址 B .暂存操作数.暂存操作数C .暂存指令地址.暂存指令地址D .暂存预取指令.暂存预取指令8. 在80486微处理器中设置有4个系统地址寄存器,用来在保护方式下管理4个系统表。
其中用来存放全局描述符表的是中用来存放全局描述符表的是A 。
A .全局描述符表寄存器.全局描述符表寄存器B .中断描述符表寄存器.中断描述符表寄存器C .局部描述符表寄存器.局部描述符表寄存器D .任务状态寄存器.任务状态寄存器9. 段寄存器和段寄存器和 D 一起为操作系统完成内存管理、一起为操作系统完成内存管理、多任务环境、多任务环境、多任务环境、任务保护提供硬件支持。
经典微机原理作业与答案第三章
![经典微机原理作业与答案第三章](https://img.taocdn.com/s3/m/f8f542203169a4517723a3b3.png)
8086第三章作业3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址(1)1000H 10000H-1FFFFH(2)1234H 12340H-2233FH(3)E000H E0000H-EFFFFH(4)AB00H AB000H-BAFFFH3-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 答:下条指令存储器地址:3F12DH3-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 ADDR12.间接寻址:(1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址如:MOV AX,[BP](2)对于输入/输出指令用DX做间接寻址寄存器如:IN AX,DX 又如: OUT DX,AL(3)跳转指令直接写明寄存器即可 (段内)如: JMP BX段间需组合:如: JMP DWORD PTR [BX+ADDR1]3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。
微机原理第3章作业及答案
![微机原理第3章作业及答案](https://img.taocdn.com/s3/m/75f4c8d0b14e852458fb572e.png)
第3章指令系统习题解答1. 若DS=3000H,BP=2000H,SI=1000H,[32000H]=00H,[32001H]=40H,SS=3000H,[31000H]=20H,[31001H]=60H,[33000H]=50H,[33001H]=60H,说明下列各条指令执行后,AX中的内容是什么?并说明各条指令中源操作数的寻址方式。
(1) MOV AX,DS (2) MOV AX,[2000H](3) MOV AX,[SI] (4) MOV AX,[BP](5) MOV AX,[BP+SI]【解】(1)AX=3000H 寄存器寻址(2)AX=4000H 直接寻址(3)AX=6020H 寄存器间接寻址(4)AX=4000H 寄存器间接寻址(5)AX=6020H 基址加变址寻址2. 指出下列指令中的非法指令。
(1) MOV BX,AL (2) MOV CS,2000H(3) PUSH 4567H (4) XCHG VAR1,VAR2(5) ADD AL,148H (6) MOV DS,2000H(7) MOV BH,SI (8) SUB 38H,AL【解】非法指令:(1) MOV BX,AL BX和AL的长度不一致(2) MOV CS,2000H CS段寄存器不能作目的操作数(3) PUSH 4567H 只能将寄存器或存储单元的内容压入堆栈,不能是立即数(4) XCHG VAR1,V AR2 两个存储单元之间不能直接交换数据(5) ADD AL,148H 运算溢出(6) MOV DS,2000H 立即数不能直接传送给DS段寄存器(7) MOV BH,SI BH和SI的长度不一致(8) SUB 38H,AL 目的操作数不能是立即数3. 若SP=2000H,AX=3355H,BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。
(1) PUSH AX执行后AX=?,SP=?(2) PUSH AXPUSH BXPOP DXPOP CX执行后AX=?,CX=?,DX=?,SP=?【解】(1) 执行后AX=3355H,SP=1FFEH(2) 执行后AX=3355H,CX=3355H,DX=4466H,SP=2000H4. 请按下面的要求写出相应的汇编指令或指令序列。
微机原理作业答案(第三章)
![微机原理作业答案(第三章)](https://img.taocdn.com/s3/m/cff8ab270722192e4536f6f5.png)
3-5(1)源操作数为立即寻址方式;目标操作数为寄存器寻址方式(2)源操作数为基址寻址方式;目标操作数为寄存器寻址方式EA=BX+DISP PA=DS×16+BX+DISP(3)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方式EA=SI PA=DS×16+SI(4)源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式EA=BX+SI PA=DS×16+BX+SI(5)源操作数、目标操作数都为寄存器寻址方式(6)源操作数为基址寻址方式;目标操作数为寄存器寻址方式EA=BX+10H PA=DS×16+BX+10H(7)源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式EA=BX PA=ES×16+BX(8)源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式EA=BX+SI+20H PA=DS×16+BX+SI+20H(9)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方法EA=BP PA=SS×16+BP(10)源操作数为寄存器寻址方式3-6(1)源操作数为寄存器寻址方式(2)源操作数为基址加变址寻址方式(3)源操作数为基址加比例变址寻址方式(4)源操作数为比例变址寻址方式3-7(1)有错。
没有两个基址寄存器相加的寻址方式(2)有错。
两个操作数不能同时为存储器(3)有错。
立即数不能直接送到段寄存器(4)有错。
段寄存器CS不能作为目标操作数(5)有错。
目标操作数不能为立即数(6)正确。
(7)有错。
两段寄存器间不能传送数据(8)有错。
不能直接用“3”表示移3位(9)有错。
NOT指令中只有一个目标操作数(10)正确。
(11)有错。
源操作数不能为立即数(12)有错。
格式为IN AL, I/O端口地址,且100H>255,应放在DX中,DX在指令中出现(13)有错。
源操作数应为存储器操作数(14)有错。
微机原理第三章习题答案
![微机原理第三章习题答案](https://img.taocdn.com/s3/m/da839331fad6195f312ba6a6.png)
习题3答案1. 指出下列指令的错误原因。
(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数(5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。
(请给出3种方法)方法1:MOV BX, 0方法2:SUB BX, BX方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。
(1) 判断AX的值,若AX等于0,则转到标号LABEL处。
(请写出3种方法)方法1:CMP AX, 0JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果; 因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。
; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。
MOV AH, ALAND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。
微机原理 第三章答案
![微机原理 第三章答案](https://img.taocdn.com/s3/m/77a615fbf705cc175527097e.png)
第三章作业1答案思考题:1、简述80C51的指令寻址方式。
答:80C51的指令寻址方式有:寄存器寻址、立即寻址、寄存器间址、直接寻址、变址寻址、相对寻址、位寻址2、访问特殊功能寄存器SFR,可使用哪些寻址方式?答SFR只能直接寻址3、若访问外部RAM单元,可使用哪些寻址方式?答:外间RAM单元,只能通过MOVX指令进行寄存器间接寻址。
4、若访问内部RAM单元,可使用哪些寻址方式?答:片内RAM低128字节,可直接寻址、寄存器间接寻址。
(只能使用R0, R1作为间址寄存器。
片内RAM20~2FH单元,可以位寻址。
5、MOV、MOVC、MOVX指令有什么区别?分别用于哪些场合?答:MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。
执行MOVX 指令时,在P3.7引脚上输出RD有效信号,或在P3.6 引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
作业:1.给下段汇编语句加注释,汇编成机器语言,并说明该段程序的作用ORG 0000H 机器码MOV SP,#5FH ;栈顶指针指向内部RAM5FH单元C:0X0000 75815FMOV R7,#08H ;R7<- 08H,R7为计数器0X0003 7F08MOV R0,#3FH ;R0指向内部RAM3FH单元0X0005 783FCLOOP: POP ACC ; ACC<- (SP), SP<- SP-1 0X0007 D0E0 MOV @R0,A;把A中内容送入R0指向的单元(3FH)0X0009 F6DEC R0 ;R0<- R0-1 0X000A 18DJNZ R7,CLOOP ;R7<-R7-1 ,R7不为0跳转0X000B DFFASJMP $ ;原地踏步0X000D 80FE程序段作用:把内部RAM中58H-5FH单元的内容依次存入从38H-3FH的八个单元2.阅读下列程序,分析其功能。
微机原理第三章练习题及解答
![微机原理第三章练习题及解答](https://img.taocdn.com/s3/m/ec83784f767f5acfa1c7cd92.png)
微机原理第三章练习题及解一:单项选择题●指令MOV AX,[BX] 中,源操作数的缺省段是( A )。
A:DS B:ES C:SS D:CS●指令PUSH [BX] 中,目的操作数的段寄存器是( C )。
A:DS B:ES C:SS D:CS●指令MOVSB 中,目的块的段寄存器是( B )。
A:DS B:ES C:SS D:CS●下列指令中,不正确的指令是( D )。
A:MOV AX,BX B:MOV AX,[BX]C:MOV AX,CX D:MOV AX,[CX]●下列指令中, 不正确的指令是( D )。
A:MOV AL,BL B:MOV AL,[BX]C:MOV AL,CL D:MOV AL,[BL]●下列指令中,不正确的指令是( D )。
A:MOV [BX+SI],AX B:MOV AX,[BX + SI]C:MOV AX,SI D:MOV AX,[BX + CX]●若要使寄存器AL中的高4 位不变,低4 位0,使用指令( B )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位不变,低4 位1,使用指令( C )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位为0,低4 位不变,使用指令( A )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位为1,低4 位不变,使用指令( D )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●条件转移指令JNZ的转移条件是( B )。
A:CF = 0 B:ZF = 0 C:CF = 1 D:ZF = 1●条件转移指令JZ的转移条件是( D )。
A:CF = 0 B:ZF = 0 C:CF = 1 D:ZF = 1●8086CPU响应可屏蔽中断的条件是( B )。
微机原理第3章习题(答案)
![微机原理第3章习题(答案)](https://img.taocdn.com/s3/m/7d3817c30b4e767f5bcfce4e.png)
微机原理第3章习题(答案)1.下列各条指令是否有错?如果有,请指出错误之处并改正(1)MOVDS 1000H(2)MOV[100],23H(3)ADDAX [BX + BP+ 6](4)PUSHDL(5)INAX, [3FH](6)0UT3FFH AL(7)LESSS [SI](8)POP[AX](9)IMUL4CH(10)SHLBX 5(11)INT300(12)XCHGD, 0FFFH答:(1)错误。
不允许直接向段寄存器送立即数,可改为:MOVAX 1000HMOVD, AX(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上BYTEPT或WORDPT说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:MOVBYTEPTR[1O0] 23H(3)错误。
不能同时使用两个基址寄存器BX、BP进行间接寻址,可改为:ADDAX [BX + DI + 6](4)错误。
堆栈操作应以字为单位进行,而DL是一个字节。
可改为:PUSHDX(5)错误。
在输入/输出指令中,8位端口地址应直接写在操作数处。
可改为:INAX, 3FH(6)错误。
端口地址3FFH已超出8位二进制表示范围,16位端口地址应用DX可改为:MOVD, 3FFHOUTDXAL(7)错误。
LES指令的目操作数应该是通用寄存器,不能是段寄存器。
可改为:LESBX [SI](8)错误。
AX不能用于间接寻址,间接寻址只能用BXBP、SI、DI四个寄存器之一。
可改为:POP[BX](9)错误。
立即数不能做乘法指令的操作数,可改为:MOVBJL 4CHIMULBL(10)错误。
当逻辑移位的次数大于1时,应该用CL指示次数。
可改为MOVCL 5SHLBX CL(11)错误。
操作数300>255,已超出有效的中断类型码范围。
(12)错误。
XCHG指令不允许立即数做它的操作数。
可改为:MOVC, 0FFFHXCHGDXCX2•请指出以下各指令的源、目的操作数所使用的寻址方式(1)MOVSI 2100H(2)SBBDISP[BX], 7(3)AND[DI] , AX(4)ORAX [609EH](5)MOV[BXb DI + 30H], CX(6)PUSHES [BP](7)CALL[DI]DISP(8)JNZShort_label答:(1)源操作数:立即数寻址;目的操作数:寄存器寻址(2)源操作数:立即数寻址;目的操作数:基址寻址(3)源操作数:寄存器寻址;目的操作数:寄存器间接寻址(4)源操作数:直接寻址;目的操作数:寄存器寻址5)源操作数:寄存器寻址;目的操作数:(带位移量的)基址变址寻址(6)源操作数:带段超越的寄存器间接寻址;目的操作数:隐含寻址(7)只有一个操作数,为变址寻址(8)只有一个操作数,为相对寻址3. 已知DS=2000H 有关的内存单元值为:(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT 勺偏移地址为1200H。
微机原理第3章习题答案
![微机原理第3章习题答案](https://img.taocdn.com/s3/m/228ee8cc0875f46527d3240c844769eae009a36d.png)
微机原理第3章习题答案第3章习题参考答案1 分别指出下列指令中的源操作数和目的操作数的寻址方式。
答:源操作数目的操作数(1)MOV AX,[SI] 寄存器寻址寄存器间接寻址(2)MOV DI,100 寄存器寻址立即寻址(3)MOV [BX],AL 寄存器间接寄存器(4)MOV [BX][SI],CX 基址+变址寄存器(5)ADD DX,106H[SI] 寄存器变址(6)PUSH AX 寄存器(7)ADD DS:[BP],AX 带段超越寄存器间接寻址寄存器(8)OR AX,DX 寄存器寄存器2.设寄存器(DS)=2000H,(SS)=1500H,(ES)=3200H,(SI)=0A0H,(BX)=100H,(BP)=10H,数据段中变量VAL的偏移地址为50H。
试指出下列各条指令中源操作数的寻址方式是什么?对于存储器操作数,其物理地址是多少?答:操作数的寻址方式存储器操作数PA (1)MOV AX,[100H] 直接寻址20100H(2)MOV CX,ES:[BX] 带段超越的寄存器间接寻址32100H(3)MOV DX,[BX][SI] 基址+变址寻址200F0H(4)MOV AX,V AL[SI] 变址寻址200F0H(5)MOV BX,1234[BX] 基址寻址205D2H(6)MOV AX,[BP] 寄存器间接寻址15010H3. 判断下列指令有误错误,若有,则改之。
答:(1)PUSH CL 有错,对堆栈操作数总是16位的。
改为:PHSH CX (2)ADCAX,0ABH 无,只是CF的值是不确定的(0或1)(3)OUT 3EBH, AX 有,输出设备的端口地址若超过8位,应使用DX 间接寻址。
改为:MOV DX, 3EBHOUT DX,AX(4)MUL AL, CL 有错。
乘法指令中有AX或AL寄存器是隐含的。
改为:MUL CL(5)MUL AX, 25 有错。
乘法指令中不能用立即数。
改为:MOV BX,25MUL BX(6)ROL DX,5 有错。
(完整版)微型计算机原理(第三章课后答案)
![(完整版)微型计算机原理(第三章课后答案)](https://img.taocdn.com/s3/m/b6dda725d1f34693daef3ec7.png)
微型计算机原理第三章80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2)EU的作用:执行指令,并为BIU提供所需的有效地址。
(3)并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。
这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。
其主要作用是:(1)数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。
AX(Accumulator)称为累加器。
用该寄存器存放运算结果可使指令简化,提高指令的执行速度。
此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器。
用来存放操作数在内存中数据段内的偏移地址,CX(Counter)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。
DX(Data)称为数据寄存器。
在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)地址寄存器:一般用来存放段内的偏移地址。
SP(Stack Pointer)称为堆栈指针寄存器。
在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
BP(Base Pointer)称为基址寄存器。
作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
SI(Source Index)称为源变址寄存器。
SI存放源串在数据段内的偏移地址。
微机原理第三章及答案
![微机原理第三章及答案](https://img.taocdn.com/s3/m/58eca62cce2f0066f43322e7.png)
第三章习题集二.选择题(每小题1分,共15分)1. 逻辑地址1000:2000对应的物理地址为( B )。
A、1200HB、12000HC、2100HD、21000H2. 下面哪个寄存器使用时的默认段寄存器为SS( C )。
A、AXB、BXC、SPD、SI3. 当使用BP寄存器作基址寻址时,若无指定段替换,则内定在( B )段内寻址。
4.在下面四组寄存器中,第 D 组都可用于对存储器间接寻址方式的寄存器。
A. AX,BX,CX,IP;B. BX,SP,DX,SIC. IP,SP,BP,AXD. BP,BX,SI,DI5. 含有立即数的指令中,该立即数被存放在 A 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中6. 用段基值及偏移量来指明内存单元地址的方式称为( C )。
A、有效地址B、物理地址C、逻辑地址D、相对地址7. 已知物理地址为0FFFF0H,且段内偏移量为0B800H,若对应的段基地址放在DS中,则DS=( B )。
A、0FFFFHB、0F47FHC、2032HD、0F000H8. 含有立即数的指令中,该立即数被存放在 B 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中9.寄存器间接寻址方式中,操作数在 C 中。
A. 通用寄存器B. 堆栈C. 存储单元D. 段寄存器10.下列指令中,有语法错误的指令是(B D)。
A. MOV AX,[1000H]B. LEA AL,1000HC. MOV [1000H],ALD. MOV 1000H,AX11. 下列指令语法有错的是:CA. MOV AX,1000HB. MOV AX,BXC. MOV [AX],[1000H]D. MOV AX,[1000H]12. 8086/8088中除___C___两种寻址方式外,其它各种寻址方式的操作数均在存储器中。
微机原理第三章习题与参考答案
![微机原理第三章习题与参考答案](https://img.taocdn.com/s3/m/4ef1fcfa941ea76e58fa040f.png)
第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。
指出下列指令的寻址方式和物理地址。
(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。
(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。
微机原理作业与答案第三章
![微机原理作业与答案第三章](https://img.taocdn.com/s3/m/ff047026ccbff121dd3683a0.png)
8086第三章作业3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址(1)1000H 10000H-1FFFFH(2)1234H 12340H-2233FH(3)E000H E0000H-EFFFFH(4)AB00H AB000H-BAFFFH3-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 答:下条指令存储器地址:3F12DH3-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 ADDR12.间接寻址:(1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址如:MOV AX,[BP](2)对于输入/输出指令用DX做间接寻址寄存器如:IN AX,DX 又如: OUT DX,AL(3)跳转指令直接写明寄存器即可 (段内)如: JMP BX段间需组合:如: JMP DWORD PTR [BX+ADDR1]3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。
《微机原理与接口技术》第三章作业答案
![《微机原理与接口技术》第三章作业答案](https://img.taocdn.com/s3/m/c14c34d177a20029bd64783e0912a21614797f81.png)
《微机原理与接口技术》第三章作业一、书上P95作业题.4、5、6、710、11、12、13、14、1516、17、18、22、274、指出下列指令中的源操作数和目标操作数的寻址方式.〔1〕MOV BX,1000H源操作数:立即寻址;目标操作数:寄存器寻址〔2〕MOV AL,[BX] 源操作数:寄存器间接寻址;目标操作数:寄存器寻址〔3〕MOV CX,[BP+10H] 源操作数:寄存器相对寻址;目标操作数:寄存器寻址〔4〕MOV AL,ES:[BX+SI] 源操作数:基址加变址寻址;目标操作数:寄存器寻址〔5〕MOV [DI+1000H],BX 源操作数:寄存器寻址;目标操作数:寄存器相对寻址〔6〕MOV [1000H],CX 源操作数:寄存器寻址;目标操作数:直接寻址〔7〕MOV AL,[BX+DI+1234H] 源操作数:寄存器相对寻址;目标操作数:寄存器寻址〔8〕MOV AL,1000H[BX+SI] 源操作数:寄存器相对寻址;目标操作数:寄存器寻址〔9〕MOV [EBX+ESI+2010H],DX 源操作数:寄存器寻址;目标操作数:带位移的基址加变址寻址〔10〕MOV AX,0100H[EBX+ESI*4] 源操作数:基址加比例变址寻址;目标操作数:寄存器寻址5、设〔DS〕=2000H、〔ES〕=2100H、〔SS〕=1500H、〔BX〕=0100H、〔BP〕=0040H、〔SI〕=00A0H、〔DI〕=0120H,在指令MOV AX,src中,求用下列表示源操作数src的有效地址EA和物理地址PA各是多少?〔1〕100H[BX] EA=<100H+0100H>=0200H ; PA=2000*10H+0200H=20200H〔2〕ES:[BX+DI] EA=0100H+0120H=0220H ;PA=2100*10H+0220H=21220H〔3〕[BP] EA=0040H ; PA=1500*10H+0040H=15040H〔4〕ES:[BX+10H] EA=0100H+0010H=0110H ;PA=21000H+0110H=21110H<5> [BP+SI] EA=0040H+00A0H=00E0H ; PA=1500*10H+OOEOH=150E0H<6> [1000H] EA=1000H ; PA=2000*10H+1000H=21000H<7> ES:[DI] EA=0120H ; PA=2100*10H+0120H=21120H<8> 1050H[BX+SI] EA=1050H+0100H+00A0H=11F0H ; PA=2000*10H+11F0H=211F0H<9> DS:10C0H[BP+SI] EA=10C0H+0040H+00A0H=11A0H ; PA=2000*10H+11A0H=211A0H<10> [BX+DI] EA=0100H+0120H=0220H ; PA=2000*10H+0220H=20220H6、指出下列指令中的错误,并改正.〔1〕MOV BL,30A0H操作数不匹配改:MOV BX,30A0H〔2〕MOV 0010H,AL立即数不可以作为目标操作数改:MOV AX,0010H〔3〕XCHG AL,BX操作数类型不匹配改:XCHG AX,BX〔4〕MOV [AX],3456H立即数送入存储器需要说明改:MOV WORDPTR [AX],3456H〔5〕PUSH AL堆栈以字为操作单元改:PUSH AX〔6〕POP CS POP不可以用CS为目标操作数改:POP AX〔7〕MOV DS,1000H立即数不能直接送入段寄存器改:MOV AX,1000H MOV DS,AX〔8〕MOV [BX],[1000H]存储器不可以相互传送改:MOV AX,[1000H]MOV [BX],AX〔9〕LDS 〔BX〕,[1000H]LDS使用时期目标为16位通用寄存器改:LDS BX,[1000H] 〔10〕LEA BX,CX LEA源操作数为存储器改:LEA BX,[CX]7、已知〔AX〕=4A0BH,[1020H]单元中的内容为260FH,写出下列每条指令单独执行后的结果.〔1〕MOV AX,1020H ;〔AX〕=1020H〔2〕XCHG AX, [1020H] ;〔AX〕=260FH〔3〕MOV AX,[1020H] ;〔AX〕=260FH〔4〕LEA AX,[1020H] ;〔AX〕=1020H10、设一个堆栈段共有100H个字节单元,堆栈的起始地址为1250H:0000H,若在堆栈中存有5个字数据,问:〔1〕栈顶的物理地址多少?栈底:12600H〔2〕栈底的物理地址是多少?栈顶:12600-A=125F6H〔3〕当前SS和SP的内容是多少?SS:[1250H:0000H ]SP: [1250H:00F6H ]〔4〕若弹出两个数据,SP的内容是多少?SP:[1250H:00FAH ]11、编程完成下列程序段,根据运算结果置标志位OF、SF、ZF、AF、PF、CF,并分析程序执行结果是否正确?为什么?〔设字长n=8〕〔1〕30+64〔2〕122-64〔3〕96+52〔4〕-68+〔-72〕答:〔1〕MOV AL,30MOV BL,64ADD AL,BL结果:0101111O F=0 SF=0 ZF=0 AF=0 PF=1 CF=0〔2〕MOV AL,122MOV BL,64SUB AL,BL结果:00111010 OF=0 SF=0 ZF=0 AF=0 PF=1 CF=0〔3〕MOV AL,96MOV BL,52ADD AL,BL结果:10010100 F=0 SF=0 ZF=0 AF=0 PF=1 CF=0〔4〕MOV AL,-68MOV BL,-72ADD AL,BL结果:01110100 OF=1 SF=0 ZF=0 AF=1 PF=1 CF=117、判断下列指令格式的对与错,并解释错在哪里.〔1〕ADD 25H,AX 〔×〕目标操作数不可以为立即数〔2〕INC BX,1 〔×〕INC只有目标操作数〔3〕MUL AL,BL 〔×〕乘法指令目标操作数是隐含的〔4〕SUBB AL,3 〔×〕减法指令是SUB〔5〕DAA AL 〔×〕DAA后无操作数〔6〕NEG CX,0 〔×〕NEG后只有目标操作数〔7〕CMP [BX],1000H[BX+SI]〔√〕18、设〔AL〕=10010010B,将AL的内容算术右移2位,AL的内容和CF是多少?再将AL的内容逻辑右移2位,AL的内容和CF是多少?算术右移2位 AL:11100100 CF:1逻辑右移2位 AL:00100100 CF:122、写出下列程序段执行后的结果.MOV CL,4MOV AL,87MOV DL,ALAND AL,0FHOR AL,30HSHR DL,CLOR DL,30H〔AL〕=37H,〔DL〕=35H27、试用CMP指令和条件转移指令实现下列判断〔1〕AX和CX中的内容为无符号数:若〔AX〕>〔CX〕则转至BIGGER符号执行;若〔AX〕<〔CX〕则转至LESS符号执行.CMP AX,CXJA BIGGERLESS〔2〕BX和DX中的内容为无符号数:若〔BX〕>〔DX〕则转至BIGGER符号执行;若〔BX〕<〔DX〕则转至LESS符号执行.CMP BX,DXJG BIGGERJL LESS。
微机原理第三章习题及答案
![微机原理第三章习题及答案](https://img.taocdn.com/s3/m/476b78676bec0975f565e219.png)
第 三 章 存 储 器习题答案一、填空题1、某存储器模块的容量为64K 字节,若采用2164(64K ×1位)组成,则需要2164 8 片,若改用2764(8K ×8位),则需 8 片。
解答:容量单个存储器芯片的存储存储器系统的存储容量=片个数构成存储器系统所需芯所以:64*82164=864*1K bitK bit=所需芯片个数片64*82764=88*8K bitK bit=所需芯片个数片2、1K ⅹ8位的RAM 芯片有 10 条地址线, 8 条数据线,若用其组成16K ⅹ8位存储器需要 16 片。
解答:存储单元的个数(字长)通常与地址线的位数相关,每个存储单元存储的二进制位数(位数)与数据线的位数相关。
存储容量为1K*8bit (8K*8位),表示每片RAM 有1K 个存储单元(K 1210=),每个存储单元存储8位二进制数,也可以写为1KB (B 表示8位二进制数,即1个字节Byte ),因此该RAM 芯片有10根地址线(A 0-A 9),8根数据线(D 0-D 7)。
3、现要用6116SRAM 芯片构成8K ×32位的存储器,共需此种芯片 16 片。
解答:8*326116=162*8K bitK bit=所需芯片个数片二、选择题1、SRAM 芯片6116的3个信号CE 、OE 、WE 电平分别为 时,6116的工作方式为读出。
( D )A.1,0,0 B.0,0,0 C.0,1,1 D.0,0,1解答:3个信号CE 、OE 、WE 为6116的控制信号,CE (书中用CS 表示):片选信号,低电平有效,CE 为低电平时,芯片被选中,此时可以进行读写操作,WE :写允许信号,低电平有效时允许将数据写入芯片,OE :输出允许信号,低电平有效时为读操作。
因此当6116处于读工作方式时CE 为0,OE 为0,WE 为1;处于写工作方式时CE 为0,OE 为1,WE 为0。
微机原理及接口第三章作业答案
![微机原理及接口第三章作业答案](https://img.taocdn.com/s3/m/ca64cbf1afaad1f34693daef5ef7ba0d4a736d87.png)
微机原理及接口第三章作业答案“微机系统原理与接口技术”第三章习题解答1.下列各条指令是否有错?如果有,请指出错误之处并改正。
(1)movds,1000h(2)mov[100],23h(3)addax,[bx+bp+6](4)pushdl(5)inax,[3fh](6)out3ffh,al(7)lesss,[si](8)pop[ax](9)imul4ch(10)shlbx,5(11)int300(12)xchgdx,0fffh请问:(1)错误。
不容许轻易向段寄存器送来立即数,可以改成:movmovax,1000hds,ax(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上byteptr或wordptr说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:movaddpushinbyteptr[100],23hax,[bx+di+6]dxax,3fh(3)错误。
无法同时采用两个基址寄存器bx、bp展开间接串行,可以改成:(4)错误。
堆栈操作方式需以字为单位展开,而dl就是一个字节。
可以改成:(5)错误。
在输出/输入指令中,8十一位端口地址应当轻易写下在操作数处。
可以改成:(6)错误。
端口地址3ffh已远远超过8十一位二进制则表示范围,16十一位端口地址应用领域dx。
可以改成:movoutlesdx,3ffhdx,alax,[si](7)错误。
les指令的目操作数应该是通用寄存器,不能是段寄存器。
可改为:(8)错误。
ax不能用于间接寻址,间接寻址只能用bx、bp、si、di四个寄存器之一。
可改为:popmovimulmovshl[bx]bl,4chblcl,5bx,cl(9)错误。
立即数无法搞乘法指令的操作数,可以改成:(10)错误。
当逻辑移位的次数大于1时,应该用cl指示次数。
可改为:(11)错误。
操作数300?255,已远远超过有效率的中断类型码范围。
微机原理第三章部分习题解答(修改)
![微机原理第三章部分习题解答(修改)](https://img.taocdn.com/s3/m/375f060c6c85ec3a87c2c575.png)
1.(1) 立即数寻址无物理地址(2)寄存器寻址无物理地址(3)存储器直接寻址2000H:0050H=20050H(4)存储器间接寻址2000H:00A0H=200A0H(5)存储器间接寻址2200H:00A0H=220A0H(6)存储器间接寻址1500H:0010H=15010H(7)存储器相对寻址2000H:(00A0H+0050H)=200F0H(8)存储器间接寻址2000H:0020H=20020H(9)存储器相对寻址2000H:(00A0H+0032H)=200D2H(10)基址变址寻址2000H:(00A0H+0020H)=200C0H(11)相对基址变址寻址1500H:(0010H+0020H+000AH)=1503AH(12)相对基址变址寻址2000H:(00A0H+0020H+0050H)=20110H3.(1) 1200H (2)0100H (3)2211H (4)4B2AH (5)4B2AH题目有误(6)4433H (7)6DC7H 题目有误(8)2000H4.(1)×目的操作数和源操作数类型不匹配 BX 16位 AH 8位(2) ×在汇编语言中是不允许两个内存单元间传递数据(3) ×不能连用两个变址,其中一个应为基址(4) ×在汇编语言中是不允许两个内存单元间传递数据(5) √(6) × CS不作为目的操作数,故不能对CS赋值(7) ×不能将立即数直接送入段寄存器(8)× 1000超出AL的0~255(9)×不允许在段寄存器间用mov传送(10) √(11) ×不能弹出一个数据到CS中(12) × 269H超出AL的256H(13) ×立即数不能作为目的操作数(14)× PUSH是字操作(15) ×字操作,与BYTE不符(16) √(17) √(18)×SRC不能为立即数(19)×未说明是字还是字节加;未指出操作类型(20)×移位位数大于1时由CL寄存器的值表示6. CF ZF SF OF PFAL=79H 不变AL=0F2H 0 0 1 1 0AL=8FH 1 0 1 0 0AL=8FH 1 0 1 0 1AL=0 0 1 0 0 1AL=0FFH 0 0 1 0 1AL=0 0 1 0 0 19.CLCNOT AXADD AX,0001HNOT DXADC DX,0000H11.AX=5000H BX=5000H SP=1FFEHPUSH AX 将AX里的值压入堆栈,PUSH BX 将BX里的值再压入堆栈,POP AX将堆栈顶的值弹出到AX里,即将BX的值赋给AX。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?【解答】8086的指令格式由操作码和操作数字段组成。
操作码:要完成的操作。
操作数:参与操作的对象。
寻址:寻找操作数或操作数地址的过程。
寻址方式:指令中给出的找到操作数或操作数地址采用的方式。
8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址。
其中,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。
3.2 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H](4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX](7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10](10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI]【解答】(1)MOV AX,21H立即寻址,源操作数直接放在指令中(2)MOV AX,BX寄存器寻址,源操作数放在寄存器BX中(3)MOV AX,[1000H]直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H(4)MOV AX,VAL直接寻址,EA = [V AL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H(5)MOV AX,[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H(6)MOV AX,ES:[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H(7)MOV AX,[BP]寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H(8)MOV AX,[SI]寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H(9)MOV AX,[BX+10]相对寄存器寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH(10)MOV AX,VAL[BX]相对寄存器寻址,EA =(BX)+[V AL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H(11)MOV AX,[BX][SI]基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H +EA = 2000H×10H+01A0H = 201A0H(12)MOV AX,VAL[BX][SI]相对基址变址寻址,EA = (BX)+(SI)+[V AL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H3.3 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。
试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。
(1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H](4) MOV AX,[BX] (5) MOV AX,1100H[BX] (6) MOV AX,[BX][SI]【解答】(1)MOV AX,1200H ;执行后,(AX)= 1200H(2)MOV AX,BX ;执行后,(AX)= (BX)= 0100H(3)MOV AX,[1200H]直接寻址,EA = [V AL] = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH(4)MOV AX,[BX]EA = (BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H,执行后,(AX)= 5132H(5)MOV AX,1100H[BX]EA =(BX)+1100H = 0100H+1100H = 1200H,PA =(DS)×10H+EA = 2000H×10H +1200H = 21200H,执行后,(AX)= B61AH(6)MOV AX,[BX][SI]EA =(BX)+(SI)= 0100H+0002H = 0102H,PA =(DS)×10H+EA = 2000H×10H +0102H = 20102H,执行后,(AX)= 29D1H3.4 分析下列指令的正误,对于错误的指令要说明原因并加以改正。
(1) MOV AH,BX (2) MOV [BX],[SI](3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX(5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MAYDAT[SI](7) MOV CS,AX (8) MOV DS,BP【解答】(1) MOV AH,BX错误,寄存器类型不匹配,可改为MOV AX,BX(2) MOV [BX],[SI]错误,两个操作数不能都为存储单元,可改为MOV BX,[SI]或MOV [BX],SI(3) MOV AX,[SI][DI]错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,[BX][DI]。
(4) MOV MYDAT[BX][SI],ES:AX错误,AX签不能有段跨越前缀,去掉ES:,改为MOV MYDAT[BX][SI],AX(5) MOV BYTE PTR[BX],1000错误,1000超出字节空间存储范围(6) MOV BX,OFFSET MAYDAT[SI] ;正确(7) MOV CS,AX错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX(8) MOV DS,BP ;正确注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。
3.5 设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。
(1) ADD VAR1,VAR2 (2) MOV AL,VAR2(3) SUB AL,VAR1 (4) JMP LAB[SI](5) JNZ VAR1 (6) JMP NEAR LAB【解答】(1) ADD VAR1,VAR2错误,两个操作数不能都为存储单元,可改为MOV BX,VAR2ADD VAR1,BX(2) MOV AL,VAR2错误,数据类型不匹配,可改为MOV AX,VAR2(3) SUB AL,VAR1错误,数据类型不匹配,可改为SUB AX,VAR1(4) JMP LAB[SI]错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1[SI](5) JNZ VAR1错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。
可改为JNZ LAB(6) JMP NEAR LAB错误,缺少运算符PTR,可改为JMP NEAR PTR LAB注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。
3.6 写出能够完成下列操作的8086CPU指令。
(1)把4629H传送给AX寄存器;(2)从AX寄存器中减去3218H;(3) 把BUF的偏移地址送入BX中。
【解答】(1) MOV AX,4629H(2) SUB AX,3218H(3) LEA BX,BUF3.7 根据以下要求写出相应的汇编语言指令。
(1)把BX和DX寄存器的内容相加,结果存入DX寄存器中;(2) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;(3)用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;(4)用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;(5)把数25H与(AL)相加,结果送回寄存器AL中。
【解答】(1) ADD DX,BX(2) ADD AL,[BX][SI](3) ADD 21B5H[BX],CX(4) ADD WORD PTR [2158H],3160H(5) ADD AL,25H3.8执行下列指令后,AX寄存器中的内容是什么?TABLE DB 10,20,30,40,50ENTRY DW 3……MOV BX,OFFSET TABLEADD BX,ENTRYMOV AX,[BX]AX=【解答】AX= 3228H3.9.DATA SEGMENTTABLE_ADDR DW 1234HDATA ENDSMOV BX, TABLE_ADDRLEA BX, TABLE_ADDR请写出上述两条指令执行后, BX寄存器中的内容。
答案:MOV BX,TABLE_ADDR ; 执行后(BX)=1234HLEA BX,TABLE_ADDR ; 执行后(BX)=OFFSET TABLE_ADDR3.10. 设(DS)=1B00H, (ES)=2B00H, 有关存储器地址及其内容如下图所示,请用两条指令把X装入AX寄存器。