微机原理与接口技术习题答案.docx
《微机原理与接口技术习题答案.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术习题答案.docx(23页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术习题答案
第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=10605H
3.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)MOVBX,OFFSETVAR[SI];OFFSET只能取变量的偏移地址
(10)MOVAX,[SI][DI];SI、DI不能成为基址加变址
(11)MOVCOUNT[BX][SI],ES:
AX;AX是寄存器,不能加段前缀
3.7设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少当执行
PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么
当前栈顶的地址=2FF00H
当执行PUSHBX指令后,栈顶地址=2FEFEH
(2FEFEH)=57H
(2FEFFH)=34H
3.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
100000A69H;VALUE,AXTEST)6(.
3.10设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和条件转移指令。
(1)CX值超过DX转移。
(2)AX未超过BX转移。
(3)DX为0转移。
(4)CX值等于小于DX转移。
(1)CMPCX,DX
JANEXT
(2)CMPAX,BX
JLENEXT
(3)CMPDX,0
JZNEXT
(4)CMPCX,DX
JBENEXT
3.11阅11阅读分析下列指令序列:
ADDAX,BX
JNOL1
JNCL2
SUBAX,BX
JNCL3
JNOL4
JMPL5
若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',$+2,2DUP(100)
VARCEQU12
22H
34H
‘G'
‘O'
‘O'
'D‘.
VARB1001
0
0
78H56H'‘12HVAR00H
64H
0064H
按下列要求,写出各数据定义语句。
.64。
,42,5个3
(1)DB1为10H个重复的字节数据序列:
1,'为字符串‘STUDENTS
(2)DB2ABCDH12H,3)DB3为十六进制数序列:
(数据区所占字节数,该语句写在最后。
赋以DB1)用等值语句给符号COUNT(4
)4)5DUP(3,16DUP(1,2,DBDB1
STUDENTS'DB2DB‘
,0ABCDH12HDB3DW
-DB1DB2COUNTEQU
指令单独执行后,有关寄存器的内容是什么8对于下面的数据定义,各条MOV4.DBPREP
()5DUPTABADW
'‘NEXTTABBDB
HTABCDD
AX=1;PREP
(1)MOVAX,TYPE
;AX=2TYPE)MOVAX,TABA(2;AX=5TABA,)MOVAXLENGTH(3AX=10;SIZETABA,(4)MOVAXAX=1;LENGTHTABB(5)MOVAX,;AX=4)MOVDX,SIZETABC(6
;$'结束)若自.10STRING单元开始存放有一个字符串(以字符‘4
字符,并假设长度为两字节)。
编程统计该字符串长度(不包含$1()单元,把整个字符串往下移两个单元。
把字符串长度放在STRING
(2)
程序段为:
(1)MOVSI,OFFSETSTRING
XORBX,BX
CONT:
MOVAL,[SI]
CMPAL,‘$'
JZNEXT
INCBX
INCSI
JMPCONT
NEXT:
MOVAH,4CH
INT21H
(2)STRINGDB‘………….$'
COUNTEQU$-STRING
:
MOVSI,OFFSETSTRING
MOVCX,COUNT
ADDSI,CX
CONT:
DECSI
MOVAL,[SI]
MOV[SI+2],AL]
LOOPCONT
MOVCX,COUNT
MOVSTRING,CX
MOVAH,4CH
INT21H
4.11将字符串STRING中的‘&'字符用空格代替,字符串STRING“Thedatais
FEB&03”。
程序为:
DATASEGMENT
STRINGDB‘ThedataisFEB&03'
COUNTEQU$-STRING
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETSTRING
MOVCX,COUNT
MOVAL,‘$'
CONT:
CMPAL,[SI]
JNZNEXT
MOVBYTEPTR[SI],‘'
NEXT:
INCSI
LOOPCONT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.16键盘输入十个学生的成绩,试编制一个程序统计69~69分,70~79分,80~89分,单元中。
S10及S9,S8,S7,S6分的人数,分别存放到100分及90~99.
程序为:
DATASEGMENT
BUFDB10DUP()
S6DB
S7DB
S8DB
S9DB
S10DB
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETS6
XORAL,AL
MOVCX,0504H
CONT:
MOV[SI],AL
INCSI
LOOPCONT
MOVCX,10
MOVSI,OFFSETBUF
CONT1:
MOVAH,1
INT21H
SHLAL,CL
MOVBL,AL
MOVAH,1
INT21H
SUBAL,30H
ORAL,BL
MOV[SI],AL
CMPAL,70H
JAENEXT1
INCBYTEPTRS6
NEXT1:
CMPAL,80H
JAENEXT2
INCBYTEPTRS7
NEXT2:
CMPAL,90H
JAENEXT3
INCBYTEPTRS8
NEXT3:
CMPAL,99H
JANEXT4
INCBYTEPTRS9
JMPNEXT5
NEXT4;INCBYTEPTRS10
NEXT5:
INCSI
LOOPCONT1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
第7章基本输入/输出接口习题
7.4现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0为1时表明输入数据准备好。
试采用查询方式,编程实现从该设备读取100个字节数据并保存到2000H:
2000H开始的内存中。
程序段为:
MOVAX,2000H
MOVDS,AX
MOVSI,2000H
MOVCX,100
CONT:
MOVDX,0FFE2H
CONT1:
INAL,DX
TESTAL,01
JZCONT1
MOVDX,0FFE0H
INAL,DX
MOV[SI],AL
INCSI
LOOPCONT
MOVAH,4CH
INT21H
7.5硬件如图7.5所示,试编程实现:
S0控制8个发光二极管1亮7暗,S1控制8个8个发光二极管7亮1暗,S2控制某一亮点(或暗点)以一定时间间隔循环向左移动,S3控制某一亮点(或暗点)以一定时间间隔循环向右移动,两个或两个以上开关闭合,则结束程序。
程序段为:
(省略伪指令)
BUF1DB01H
BUF2DB80H
…
MOVDX,200H
AGAIN:
INAL,DX
XORBL,BL
MOVCX,8
CONT:
RORAL,1
JNCNEXT
INCBL
NEXT:
LOOPCONT
CMPBL,2
JAEEXIT
CMPAL,0FEH
JZ1L7A
CMPAL,0FD
JZ1A7L
CMPAL,0FBH
JZZSHL
CMPAL,0F7H
JZYSHR
1L7A:
MOVAL,80H
OUTDX,AL
AGAINJMP
7A7L:
MOVAL,7F
OUTDX,AL
JMPAGAIN
ZSHL:
MOVAL,BUF1
ROLAL,1
MOVBUF1,AL
OUTDX,AL
CALLD500MS
JMPAGAIN
YSHR:
MOVAL,BUF2
RORAL,1
MOVBUF1,AL
OUTDX,AL
CALLD500MS
JMPAGAIN
EXIT:
MOVAH,4CH
INT21H
第8章中断习题
8.2已知中断向量表表中地址0020H~0023H的单元中依次是40H,00H,00H,01H,
并知INT08H指令本身所在的地址为9000H:
00A0H。
若SP=0100H,SS=0300H,标志寄存器内容为0240H,试指出在执行INT08H指令,刚进入它的中断服务程序时,SP,SS,IP,CS和堆栈顶上三个字的内容(用图表示)。
执行后SS=0300HSP=00FAH
CS=0100HIP=0040H,堆栈顶上三个字的内容如下所示:
栈区00FAHA2H
00H00FCH
00H00FEH0300H:
执行后:
90H40H:
01000H初始:
0300H02HXX,其中断服务程序名为某一用户中断源的中断类型号为40H.38INTR40,请用两种不同的方法设置它的中断向量。
0AX,MOV方法一:
AXDS,MOV
,OFFSETINTR40MOVAX
AXMOV[00C0H],
SEGINTR40AX,MOV
AX[00C2H],MOV
0AX方法二:
MOV,AX,ESMOV
MOVDI,40H*4
CLD
MOVAX,OFFSETINTR40
STOSW
MOVAX,SEGINTR40
STOSW
8.5某一8086CPU系统中,采用一片8259A进行中断管理。
设8259A工作在全嵌套方式,发送EIO命令结束中断,边沿触发方式,IR0对应的中断向量号为90H,8259A在系统中的端口地址为FFDCH(A0=0)和FFDDH(A0=1),试编写8259A的初始化程序段。
初试化程序段为:
MOVDX,0FFDCH
MOVAL,13H
OUTDX,AL
INCDX
INCDX
MOVAL,90H
OUTDX,AL
MOVAL,01
OUTDX,AL
第9章可编程接口芯片及应用习题
9.1试按如下要求分别编写初始化程序,已知计数器0~2和控制字寄存器的端口地址依次为204H~207H。
(1)使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。
(2)使计数器0工作在方式1,按BCD码计数,计数值为3000。
(3)使计数器2工作在方式2,按二进制计数,计数值为02F0H。
初始化程序为:
MOVDX,207H
MOVAL,50H
OUTDX,AL
MOVDX,205H
MOVAL,80H
OUTDX,AL
MOVDX,207H
MOVAL,23H
OUTDX,AL
MOVDX,204H
MOVAL,30H
OUTDX,AL
MOVDX,207H
MOVAL,0B4H
OUTDX,AL
MOVDX,206H
MOVAL,0F0H
OUTDX,AL
02,ALMOV
OUTDX,AL
9.2硬件如题9.2图,利用PC内部8253定时器0,并用中断方式实现每隔1s使发光二极管亮暗交替显示。
(PC内部8253输入时钟频率为1.1932MHz,8253定时器0端口地址为40H,控制寄存器端口地址为43H。
Y0为350H)。
定时器计数值=1.1932MHz÷5=32864=83D5H
软件计数值:
50
程序为:
(硬件图见教材P345题9.2图)
MOVAL,34H
OUT43H,AL
MOVAL,0D5H
OUT40H,AL
MOVAL,83H
OUT40H,AL
MOVBL,50
┇
T0中断服务程序为:
DECBL
JNZEXIT1
MOVBL,50
MOVAL,BUF
NOTAL
MOVBUF,AL
MOVDX,350H
OUTDX,AL
EXIT1:
MOVAL,20H
OUT20H,AL;(设8259A的端口地址为20H,21H)
IRET
9.3硬件如题9.3图,8253采用方式0,BCD码计数方式,初始值为1000,每按一次按钮S,计数器值减1。
试编程实现显示8253当前计数值,直至计数值为0。
8253端口地址范围为80H~83H。
(略。
在何处显示---屏幕/LED/液晶)
9.4图9.4为一简化的键盘/数码管显示接口电路,假设端口线a'~h'及1、2脚送“1”电平,可使显示点亮并能实现扫描,试问U1、U2及数码显示器的选用。
(1)U1为(同相驱动器/反相驱动器)。
(2)U2为(同相驱动器/反相驱动器)。
(3)数码显示器为(共阴/共阳)数码管。
(4)若A键闭合,则端口线3,4的电平为。
图9.4见教材P346
(1)选用同相驱动器
(2)选用反相驱动器
(3)选用共阴数码管
(4)若A键闭合,则端口线3,4的电平为0,1
,0按下,数码管显示S0,当S1、S0图,试编程实现循环检测5.9硬件如题5.9.
当S1按下,数码管显示1,S0、S1同时按下,则结束程序。
8255的端口地址范围为80H83H。
程序为:
MOVAL,82H
OUT83H,AL
AGAIN:
INAL,81H
TESTAL,03
JZEXIT
TESTAL,01
JZNEXT
MOVAL,3FH
OUT80H,AL
JMPAGAIN
NEXT:
TESTAL,02
JZNEXT1
MOVAL,06
OUT80H,AL
JMPAGAIN
NEXT1:
MOVAL,00
OUT80H,AL
JMPAGAIN
EXIT:
MOVAH,4CH
INT21H
第10章串行通信习题
10.6设异步传输时,每个字符对应一个起始位,7个信息位,1个奇偶校验位和一个停止位,如果波特率为9600,每秒能传输的最大字符数为多少个
字符数=9600位/秒÷10位/字符=960(字符/秒)
10.13要求8251A工作于异步方式,波特率系数为16,字符长度为7位,奇校验,2个停止位。
工作状态要求:
复位出错标志,使请求发送信号RTS有效,使数据终端准备好信号DTR有效,发送允许TxEN有效,接受允许RxE有效。
设8251A的两个端口地址分别为0C0H和0C2H,试完成初始化编程。
初始化程序为:
MOVAL,B(DAH)
OUT0C2H,AL
MOVAL,00110111B(37H)
OUT0C2H,AL
第11章模数、数模转换习题
11.3某8086系统中,A/D转换器ADC0809只使用一个模拟量输入通道,试设计其接口电路,并编写子程序。
子程序的功能是启动A/D转换,并以查询方式读入一个采样数中。
DL据放在寄存器.
设所设计的A/D转换器接口电路如下:
采样程序为:
CYSUBRPROC
OUT50H,AL
NOP
NOP
WAIT1:
INAL,51H
TESTAL,01
JZWAIT1
INAL,50H
MOVDL,AL
RET
CYSUBRENDP
11.4某8086系统中,由ADC0809构成A/D转换器,通过8255与CPU接口,如题11.4图所示。
试编写程序,以查询的方式巡回采样8个模拟量输入通道,每个通道16次。
采样数据存放在内存中。
题11.4图
程序段为:
MOVAL,B(81H)
MOVDX,0FFDBH
OUTDX,AL
LOP0:
MOVDI,OFFSETBUF
MOVBL,0
LOP1:
MOVCX,16
MOVAL,BL
MOVDX,0FFD8
AL,OUTDX
CONT:
MOVDX,0FFCAH
MOVAL,0C0H
OUTDX,AL
NOP
NOP
INAL,LPO2:
DX
TESTAL,01
JZLOP2
DECDX
INAL,DX
MOV[DI],AL
INCDI
LOOPCONT
INCBL
CMPBL,8
JNZLOP1
┇
LOP0JMP