微机基础原理第二版标准答案.doc

收藏

编号:2604925    类型:共享资源    大小:630.52KB    格式:DOC    上传时间:2020-04-23
8
金币
关 键 词:
微机 基础 原理 第二 标准答案
资源描述:
-/ 3.2设(DS)=6000H,(ES)=2000H,(SS)=1500H,(Si)=00A0H,(BX)=0800H,(BP)=1200H,数据变量VAR为0050H. 请分别指出下列各条指令源操作数的寻址方式?它的物理地址是多少? (1) MOV AX,BX (2) MOV DL,80H (3) MOV AX, VAR (4) MOV AX,VAR[BX][SI] (5) MOV AL,‘B (6) MOV DI, ES: [BX] (7) MOV DX,[BP] (8) MOV BX,20H[BX] 解: (1)寄存器寻址。因源操作数是寄存器,故寄存器BX就是操作数的地址. (2)立即寻址。操作数80H存放于代码段中指令码MOV之后。 (3)直接寻址。 (4)基址一变址一相对寻址. 操作数的物理地址=(DS) 16+(SI)+(BX)+VAR = 60000H+00A0H+0800H+0050H=608F0H (5)立即寻址 (6)寄存器间接寻址. 操作数的物理地址 = (ES) 16+(BX) = 20000H+0800H = 20800H (7)寄存器间接寻址。 操作数的物理地址= (SS) 16+(BP) = 15000H+1200H= 16200H (8)寄存器相对寻址. 操作数的物理地址=(DS) 16+(BX)+20H = 60000H+0800H+20H= 60820H 3.3 假设(DS)= 212AH,(CS)= 0200H,(IP)= 1200H,(BX)= 0500H,位移量DATA=40H,(217A0H) =2300H,(217E0H)=0400H,(217E2H) =9000H 试确定下列转移指令的转移地址. (1) JMP BX (2) JMP WORD PTR[BX] (3) JMP DWORD PTR[BX+DATA] 解:转移指令分为段内转移和段间转移,根据其寻址方式的不同,又有段内的直接转移和间接转移,以及段间的直接转移和间接转移地址。对直接转移,其转移地址为当前指令的偏移地址(即IP的内容)加上位移量或由指令中直接得出;对间接转移,转移地址等于指令中寄存器的内容或由寄存器内容所指向的存储单元的内容。 (1) 段内间接转移。转移的物理地址=(CS) l6 +0500H =02000H+0500H=02500H (2)段内间接转移。转移的物理地址= (CS) 16+ [BX] = (CS) l6+(217A0H) =02000H+2300H=04300H (3)段间间接转移。转移的物理地址=[BX+DATA] [IP]=[DSl6+BX+DATA[=[217E0] =(217E2H) l6+(217E0H) [CS]=[217E2H]=9000H =90000H+0400H=90400H 3.4试说明指令MOV BX,5[BX]与指令LEA BX,5[BX]的区别。 解:前者是数据传送类指令,表示将数据段中以(BX+5)为偏移地址的16位数据送寄存器BX.;后者是取偏移地址指令,执行的结果是(BX)= (BX)+5,即操作数的偏移地址为(BX)+5。 3.5设堆栈指针SP的初值为2300H,(AX)=50ABH,(BX)=1234H。执行指令PUSH AX后,(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)= ?(AX)= ?(BX)=? 解:堆栈指针SP总是指向栈顶,每执行一次PUSH指令SP-2,执行一次POP指令SP+2.所以,执行PUSH AX指令后,(SP)=22FEH;再执行PUSH BX及POP AX后,(SP)=22FEH,(AX)=(BX)=1234H 3.6 指出下列指令的错误: (1) MOV AH,CX (2) MOV 33H,AL (3) MOV AX, [SI][DI] (4) MOV [BX],[SI] (5) ADD BYTE PTR[BP],256 (6) MOV DATA[SI],ES:AX (7) JMP BYTE PTR[BX] (8) OUT 230H,AX (9) MOV DS,BP (10) MUL 39H 解: (1)指令错。两操作数字长不相等 (2)指令错。MOV指令不允许目标操作数为立即数. (3)指令错。在间接寻址中不允许两个间址寄存器同时为变址寄存器。 (4)指令错。MOV指令不允许两个操作数同时为存储器操作数。 (5)指令错。ADD指令要求两操作数等字长。 (6)指令错。源操作数形式错,寄存器操作数不加段重设符。 (7)指令错。转移地址的字长至少应是16位的。 (8)指令错。对输人输出指令,当端口地址超出8位二进制数的表达范围(即寻址的端口超出256个)时,必须采用间接寻址。 (9)指令正确。 (10)指令错。MUL指令不允许操作数为立即数。 3.9 试判断下列程序执行后,BX中的内容. MOV CL, 3 MOV BX,0B7H ROL BX,1 ROR BX,CL 解:该程序段是首先将BX内容不带进位循环左移1位,再循环右移3位。即相当于将原BX内容不带进位循环右移2位,故结果为:(BX)=0C02DH 3.11 分别指出以下两个程序段的功能: (1) (2) MOV CX,l0 CLD LEA SI,FIRST LEA DI, [1200H] LEA DI, SECOND MOV CX,0FOOH STD XOR AX,AX REP MOVSB REP STOSW 解: (1)该段程序的功能是:将数据段中FIRST为最高地址的10个字节数据按减地址方向传送到附加段SECOND为最高地址的向前10个单元中。 (2)将附加段中偏移地址为1200H单元开始的0FOOH个字单元清0。 3.16 写出完成下述功能的程序段: (1)从地址DS:0012H中传送一个数据56H到AL寄存器; (2)将AL中的内容左移两位 (3)AL的内容与字节单元DS:0013H中的内容相乘 (4)乘积存入字单元DS:0014H中 解: MOV SI,OFFSET[0012H] MOV DI,OFFSET[0014H] MOV AL,[SI] MOV CL,2 SAL AL,CL MOV BL,[0013H] MUL BL MOV [DI],AX 选看: 3.7 已知(AL) =7BH, (BL) =38H,试问执行指令ADD AL, BL后,AF、CF、OF、PF、SF和ZF的值各为多少? 解:AF=1,CF=0,OF=1,PF=0,SF=l,ZF=0 3.10按下列要求写出相应的指令或程序段。 (1)写出两条使AX内容为0的指令。 (2)使BL寄存器中的高4位和低4位互换。 (3)屏蔽CX寄存器的bll,b7和b3位。 (4)测试DX中的b0和b8位是否为1 (1) MOV AX,0 XOR AX,AX ;AX寄存器自身相异或,可使其内容清0 (2) MOV CL, 4 ROL BL,CL ;将BL内容循环左移4位,可实现其高4位和低4位 的互换 (3) AND CX,0F777H ;将CX寄存器中需屏蔽的位“与”0。也可用“或”指令实现 (4) AND DX,0101H ;将需侧试的位“与”1,其余“与”0屏蔽掉 CMP DX,0101 H ;与0101H比较 JZ ONE ;若相等则表示b0和b8位同时为 3.12 执行以下两条指令后,标志寄存器FLAGS的六个状态位各为什么状态? MOV AX,84A0H ADD AX,9460H 解:执行ADD指令后,6个状态标志位的状态分别为: 在两个16位数进行加法运算时,对CF、ZF、SF和OF会产生影响,但对PF和AF标志位,只有其低8位的运算影响它们的状态。各标志位的状态分别为:AF=0,PF=1,CF=1,ZF=0,SF=0,OF=1。 3.14已知AX=8060H,DX=03F8H,端口PORT1的地址是48H,内容为40H;PORT2的地址是84H,内容为85H。请指出下列指令执行后的结果。 (1)OUT DX, AL (2) IN AL,PORT1 (3) OUT DX,AX (4) IN AX,48H (5) OUT PORT2,AX 解: (1)将60H输出到地址为03F8H的端口中。 (2) 从PORT1读入一个字节数据,执行结果:(AL)=40H。 (3) 将 AX=8060H输出到地址为03F8H的端口中。 (4)由48H端口读人16位二进制数。 (5)将8060H输出到地址为84H的端口中。 4.1请分别用DB 、DW 、DD伪指令写出在DATA开始的连续8个单元中依次存放数据11H 、22H 、33H 、44H 、55H 、66H 、77H 、88H的数据定义语句. 解:DB,DW,DD伪指令分别表示定义的数据为字节类型、字类型及双字型.其定义形式为: DATA DB 11H,22H,33H,44H,55H,66H,77H,88H DATA DW 2211H,4433H,6655H,8877H DATA DD 44332211H,88776655H 4.2若程序的数据段定义如下,写出各指令语句独立执行后的结果: DSEG SEGMENT DATA1 DB 10H,20H,30H DATA2 DW 10 DUP(?) STRING DB ‘123’ DSEG ENDS (1) MOV AL,DATA1 (2) MOV BX,OFFSET DATA2 (3) LEA SI,STRING ADD DI,SI 解:1.取变量DATA1的值. 指令执行后,(AL)=10H. 2.变量DATA2的偏移地址. 指令执行后,(BX)=0003H. 3.先取变量STRING的偏移地址送寄存器SI,之后送SI的内容与DI的内容相加并将结果送DI.指令执行后,(SI)=0017H;(DI)=(DI)+0017H. 4.6 假设数据项定义如下: DATA1 DB ‘HELLO!GOOD MORNING!’ DATA2 DB 20 DUP(?) 用串操作指令编写程序段,使其分别完成以下功能: (1)从左到右将DATA1中的字符串传送到DATA2中。 (2)传送完后,比较DATA1和DATA2中的内容是否相同。 (3)把DATA1中的第3和第4个字节装入AX。 (4)将AX的内容存入DATA2+5开始的字节单元中。 解: (1)MOV AX,SEG DATA1 MOV DS,AX MOV AX,SEG DATA2 MOV ES,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD REP MOVSB (2) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD REPE CMPSB 。。。 (3) LEA SI,DATA1 ADD SI,2 LODSW (4)LEA DI,DATA2 ADD DI,5 STOSW 4.8 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。 解:首先确定STRING1中字符串的长度,因为字符串的定义要求以‘$’符号结尾, 可通过检测‘$’符确定出字符串的长度,设串长度为COUNT,则程序如下: LEA SI,STRING1 LEA DI,STRING2 ADD SI,COUNT-20 MOV CX,20 CLD REP MOVSB 4.10 试编写程序,比较AX,BX,CX中带符号数的大小,并将最大的数放在AX中。 解:比较带符号数的大小可使用符号数比较指令JG等。 CMP AX,BX JG NEXT1 XCHG AX,BX NEXT1:CMP AX,CX JG STO MOV AX,CX STO:HLT 4.14给出下列等值语句 ALPHA EQU 100 BETA EQU 25 GRAMM EQU 4 试求下列表达式的值 (1)ALPHA*100+BETA 10025 (2)(ALPHA+4)*BETA-2 2598 (3))(BETA/3)MOD5 3.333333……… A MOD B=A-(ADivB)*B 4.15图示一下数据段在存储器中的存放形式 DATA SEGMENT DATA1 DB10H, 34H, 07H, 09H DATA2 DW 2 DUP(42H) DATA3 DB ‘HELLO!’ DATA4 EQU 12 DATA5 DD 0ABCDH DATA ENDS 答: … 10H 34H 07H 09H 42H 00H 42H 00H ‘H’ ‘E’ ‘L’ ‘L’ ‘O’ ‘!’ 12 CD AB 00H 00H DATA1 低 地 址 DATA2 DATA3 DATA4 DATA5 高 地 址 … 4.16阅读下面的程序段,试说明它实现的功能 DATA SEGMENT DATA1 DB ‘ABCDEFG’ DATA ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA AAA: MOV AX, DATA MOV DS, AX MOV BX, OFFSET DATA1 MOV CX,7 NTXT: MOV AH,2 MOV AL,[BX] XCHG AL, DL INC BX INT 21H LOOP NEXT MOV AH, 4CH INT 21H CODE ENDS END AAAA 5.6试利用全地址译码将6264芯片接到8088系统总线上,使其所占地址范围为32000H~33FFFH。 解:将地址范围展开成二进制形式如下图所示。 0011 0010 0000 0000 0000 0011 0011 1111 1111 1111 6264芯片的容量为88KB,需要13根地址线A0~A12。而剩下的高7位地址应参加该芯片的地址译码。 电路如图所示: 5.11甚什么是字扩展?什么是位扩展?用户自己购买内存条进行内存扩充,是在进行何种存储器扩展? 解:(1)当存储芯片的容量小于所需内存容量时,需要用多个芯片构成满足容量要求的存储器,这就是字扩展。 (2)当存储芯片每个单元的字长小于所需内存单元字长时,需要用多个芯片构成满足字长要求的存储模块,这就是位扩展。 (3)用户在市场上购买内存条进行内存扩充,所做的是字扩展的工作。 5.13某8088系统用2764 ROM芯片和6264 SRAM芯片构成16KB的内存。其中,ROM的地址范围为0FE000H~0FFFFFH,RAM的地址范围为0F0000H~0F1FFFH。试利用74LS138译码,画出存储器与CPU的连接图,并标出总线信号名称。 解:连接如下图所示。 6-9中断向量表的作用是什么?如何设置中断向量表? 解:中断向量表用于存放中断服务子程序的入口地址,位于内存的最低1K字节(即内存中0000H~003FFH区域),共有256个表项。 设置中断向量表就是将中断服务程序首地址的偏移量和段基址放入中断向量表中。 如:将中断服务子程序CLOCK的入口地址置入中断向量表的程序如下: MOV AX,0000H MOV DS,AX ;置中断向量表的段基地址 MOV SI,<中断类型码4> ;置存放子程序入口地址的偏移地址 MOV AX,OFFSET CLOCK MOV [SI],AX ;将子程序入口地址的偏移地址送入中断向量表 MOV AX, SEG CLOCK MOV [SI+2],AX ;将子程序入口地址的段基址送入中断向量表 6.10 INTR中断和NMI中断有什么区别? 解:INTR中断为可屏蔽中断,中断请求信号高电平有效。CPU能否响应该请求要看中断允许标志位IF的状态,只有当IF=1时,CPU才可能响应中断。 NMI中断为非屏蔽中断,请求信号为上升沿有效,对它的响应不受IF标志位的约束,CPU只要当前指令执行结束就可以响应NMI请求。 6.11 试说明8088CPU可屏蔽中断的响应过程。 解:可屏蔽中断的响应过程主要分为5个步骤,即: (1)中断请求。外设在需要时向CPU的INTR端发出一个高电平有效的中断请求信号。 (2)中断判优。若IF=1,则识别中断源并找出优先级最高的中断源先予以响应,在其处理完后,再响应级别较低的中断源的请求。 (3)中断响应。中断优先级确定后,发出中断的中断源中优先级别最高的中断请求就被送到CPU。 (4)中断处理。 (5)中断返回。中断返回需执行中断返回指令IRET,其操作正好是CPU硬件在中断响应时自动保护断点的逆过程。即CPU会自动地将堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处继续往下执行。
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:微机基础原理第二版标准答案.doc
链接地址:https://www.taowenge.com/p-2604925.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开