您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理与接口技术习题答案---副本
第3章8086/8088指令系统与寻址方式习题3.38086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。(1)MOVBX,12;目标操作数为寄存器寻址(2)MOV[BX],12;目标操作数为寄存器间址PA=10300H(3)MOVES:[SI],AX;目标操作数为寄存器间址PA=20200H(4)MOVVAR,8;目标操作数为存储器直接寻址PA=10600H(5)MOV[BX][SI],AX;目标操作数为基址加变址寻址PA=10500H(6)MOV6[BP][SI],AL;目标操作数为相对的基址加变址寻址PA=12306H(7)MOV[1000H],DX;目标操作数为存储器直接寻址PA=11000H(8)MOV6[BX],CX;目标操作数为寄存器相对寻址PA=10306H(9)MOVVAR+5,AX;目标操作数为存储器直接寻址PA=10605H3.4下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。(1)XCHGCS,AX;错,CS不能参与交换(2)MOV[BX],[1000];错,存储器之不能交换(3)XCHGBX,IP;错,IP不能参与交换(4)PUSHCS(5)POPCS;错,不能将数据弹到CS中(6)INBX,DX;输入/输出只能通过AL/AX(7)MOVBYTE[BX],1000;1000大于255,不能装入字节单元(8)MOVCS,[1000];CS不能作为目标寄存器(9)MOVAX,[SI][DI];SI、DI不能成为基址加变址3.7设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?当前栈顶的地址=2FF00H当执行PUSHBX指令后,栈顶地址=2FEFEH(2FEFEH)=57H(2FEFFH)=34H3.8设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。(1)SHRDX,1;DX=3C62HCF=1(2)SARDX,CL;DX=03C6HCF=0(3)SHLDX,CL;DX=18A0HCF=1(4)RORDX,CL;DX=2BC6HCF=0(5)RCLDX,CL;DX=18B7HCF=1(6)RCRDH,1;DX=BCC5HCF=0;3.9设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。AXCFZFOFSFPF(1)XORAX,VALUE;134EH00001(2)ANDAX,VALUE;0821H00001(3)SUBAX,VALUE;F142H10011(4)CMPAX,VALUE;0A69H10011(5)NOTAX;F596HXXXXX(6)TESTAX,VALUE;0A69H000013.10设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和条件转移指令。(1)CX值超过DX转移。(2)AX未超过BX转移。(3)DX为0转移。(4)CX值等于小于DX转移。(1)CMPCX,DXJANEXT(2)CMPAX,BXJLENEXT(3)CMPDX,0JZNEXT(4)CMPCX,DXJBENEXT3.11阅11阅读分析下列指令序列:ADDAX,BXJNOL1JNCL2SUBAX,BXJNCL3JNOL4JMPL5若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1~L5中的一个)。(1)AX=13C6H,BX=80DCH(2)AX=0B568H,BX=54B7H(3)AX=42C8H,BX=608DH(4)AX=0D023H,BX=9FD0H(5)AX=9FD0H,BX=0D023H(1)转L1(2)转L1(3)转L2(4)转L5(5)转L5第四章汇编语言程序设计习题4.5画出下列语句中的数据在存储器中的存储情况。VARBDB34,34H,‘GOOD’,2DUP(1,2DUP(0))VARWDW5678H,‘CD’VARCEQU1222H34H‘G’‘O’‘O’‘D’1VARBVARW4.6按下列要求,写出各数据定义语句。(1)DB1为10H个重复的字节数据序列:1,2,5个3,4。(2)DB2为字符串‘STUDENTS’(3)DB3为十六进制数序列:12H,ABCDH(4)用等值语句给符号COUNT赋以DB1数据区所占字节数,该语句写在最后。DB1DB16DUP(1,2,5DUP(3,4))DB2DB‘STUDENTS’DB3DW12H,0ABCDHCOUNTEQUDB2-DB14.10若自STRING单元开始存放有一个字符串(以字符‘$’结束);(1)编程统计该字符串长度(不包含$字符,并假设长度为两字节)。(2)把字符串长度放在STRING单元,把整个字符串往下移两个单元。程序段为:(1)MOVSI,OFFSETSTRINGXORBX,BXCONT:MOVAL,[SI]CMPAL,‘$’JZNEXTINCBXINCSIJMPCONTNEXT:MOVAH,4CHINT21H(2)STRINGDB‘………….$’0010078H56H‘D’‘C’COUNTEQU$-STRING:MOVSI,OFFSETSTRINGMOVCX,COUNTADDSI,CXCONT:DECSIMOVAL,[SI]MOV[SI+2],AL]LOOPCONTMOVCX,COUNTMOVSTRING,CXMOVAH,4CHINT21H4.11将字符串STRING中的‘&’字符用空格代替,字符串STRING“ThedataisFEB&03”。程序为:DATASEGMENTSTRINGDB‘ThedataisFEB&03’COUNTEQU$-STRINGDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETSTRINGMOVCX,COUNTMOVAL,‘$’CONT:CMPAL,[SI]JNZNEXTMOVBYTEPTR[SI],‘’NEXT:INCSILOOPCONTMOVAH,4CHINT21HCODEENDSENDSTART4.16键盘输入十个学生的成绩,试编制一个程序统计69~69分,70~79分,80~89分,90~99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。程序为:DATASEGMENTBUFDB10DUP(?)S6DB?S7DB?S8DB?S9DB?S10DB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETS6XORAL,ALMOVCX,0504HCONT:MOV[SI],ALINCSILOOPCONTMOVCX,10MOVSI,OFFSETBUFCONT1:MOVAH,1INT21HSHLAL,CLMOVBL,ALMOVAH,1INT21HSUBAL,30HORAL,BLMOV[SI],ALCMPAL,70HJAENEXT1INCBYTEPTRS6NEXT1:CMPAL,80HJAENEXT2INCBYTEPTRS7NEXT2:CMPAL,90HJAENEXT3INCBYTEPTRS8NEXT3:CMPAL,99HJANEXT4INCBYTEPTRS9JMPNEXT5NEXT4;INCBYTEPTRS10NEXT5:INCSILOOPCONT1MOVAH,4CHINT21HCODEENDSENDSTART第7章基本输入/输出接口习题7.4现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0为1时表明输入数据准备好。试采用查询方式,编程实现从该设备读取100个字节数据并保存到2000H:2000H开始的内存中。程序段为:MOVAX,2000HMOVDS,AXMOVSI,2000HMOVCX,100CONT:MOVDX,0FFE2HCONT1:INAL,DXTESTAL,01JZCONT1MOVDX,0FFE0HINAL,DXMOV[SI],ALINCSILOOPCONTMOVAH,4CHINT21H7.5硬件如图7.5所示,试编程实现:S0控制8个发光二极管1亮7暗,S1控制8个8个发光二极管7亮1暗,S2控制某一亮点(或暗点)以一定时间间隔循环向左移动,S3控制某一亮点(或暗点)以一定时间间隔循环向右移动,两个或两个以上开关闭合,则结束程序。程序段为:(省略伪指令)BUF1DB01HBUF2DB80H…MOVDX,200HAGAIN:INAL,DXXORBL,BLMOVCX,8CONT:RORAL,1JNCNEXTINCBLNEXT:LOOPCONTCMPBL,2JAEEXITCMPAL,0FEHJZ1L7ACMPAL,0FDJZ1A7LCMPAL,0FBHJZZSHLCMPAL,0F7HJZYSHR1L7A:MOVAL,80HOUTDX,ALJMPAGAIN7A7L:MOVAL,7FOUTDX,ALJMPAGAINZSHL:MOVAL,BUF1ROLAL,1MOVBUF1,ALOUTDX,ALCALLD500MSJMPAGAINYSHR:MOVAL,BUF2RORAL,1MOVBUF1,ALOUTDX,ALCALLD500MSJMPAGAINEXIT:MOVAH,4CHINT21H第8章中断习题8.2已知中断向量表表中地址0020H~0023H的单元中依次是40H,00H,00H,01H,并知INT08H指令本身所在的地址为9000H:00A0H。若SP=0100H,SS=0300H,标志寄存器内容为0240H,试指出在执行INT08H指令,刚进入它的中断服务程序时,SP,SS,IP,CS和堆栈顶上三个字的内容(用图表示)。执行后SS=0300HSP=00FAHCS=0100HIP=0040H,堆栈顶上三个字的内容如下所示:00FAH00FCH执行后:0300H:00FEH初始:0300H:01000H8.3某一用户中断源的中断类型号为40H,其中断服务程序名为INTR40,请用两种不同的方法设置它的中断向量。方法一:MOVAX,0MOVDS,AXMOVAX,OFFSETINTR40MOV[00C0H],AXMOVAX,SEGINTR40MOV[00C2H],AX方法二:MOVAX,0MOVES,AXMOVDI,40H*4CLDMOVAX,OFFSETINTR40STOSWMOVAX,SEGINTR40STOSW8.5某一8086CPU系统中,采用一片8259A进行中断管理。设8259A工作在全嵌套方式,发送EIO命令结束中断,边沿触发方式,IR0对应的中断向量号为90H,8259A在系统栈区A2H00H00H90H40H02HXX中的端口地址为FFDCH(A0=0)和FFDDH(A0=1),试编写8259A的初始化程序段。初试化程序段为:MOVDX,0FFDCHMOVAL,13HOUTDX,ALINCDXINCDXMOVAL,90HOUTDX,ALMOVAL,01OUTDX,AL第9章可编程接口芯片及应用习题9.1试按如下要求分别编写初始化程序,已知计数器0~2和控制字寄存器的端口地址依次为204H~207H。(1)使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。(2)使计数器0工作在方式1,按BCD码计数,计数值为3000。(3)使计数器2工作在方式2,按二进制计数,计数值为02F0H。初始化程序为:MOVDX,207HMOVAL,50HOUTDX,ALMOVDX,205HMOVAL,80HOUTDX,ALMOVDX,207HMOVAL,23HOUTDX,ALMO
本文标题:微机原理与接口技术习题答案---副本
链接地址:https://www.777doc.com/doc-5733692 .html