华电保定微原作业参考解答Word文档格式.docx
《华电保定微原作业参考解答Word文档格式.docx》由会员分享,可在线阅读,更多相关《华电保定微原作业参考解答Word文档格式.docx(27页珍藏版)》请在冰点文库上搜索。
8086指令系统有哪几种寻址方式?
3.3指出下列指令中源操作数的寻址方式
点评:
根据指令格式,仅给出源操作数的寻址方式
(1)MOVSI,200
(2)MOVAL,[2000H]
(3)MOVCX,DATA[SI]
(4)ADDAX,[BX+DI]
(5)ANDAX,BX
(6)MOV[SI],AX
(7)MOVAX,DATA[BP+SI]
(8)PUSHF
(9)MOVAX,ES:
[BX]
(10)JMPFARPTRPROCS_1(答:
直接寻址)
3.4设DS=1000H,ES=2000H,BX=2865H,SI=0120H,偏移量D=47A8H,试问下列各指令中源操作数所在位置,若有物理地址请计算出其物理地址值。
题目要求给出物理地址,仅(3)(4)(5)(7)(8)(10)计算物理地址
(1)MOVAL,D(代码段中)
(2)MOVAX,BX(cpu寄存器中)
(3)MOVAL,[BX+D]内存数据段
(4)MOVAL,[BX+SI+D]内存数据段
(5)MOVBX,[BX+SI+2]内存数据段
(6)MOV[BX+5],AX(cpu寄存器中)
(7)INCBYTEPTR[SI+3]内存数据段
(8)MOVDL,ES:
[BX+SI]内存附加数据段
(9)MOVAX,2010H(代码段中)
(10)MOVAX,DS:
[2010H]内存数据段
3.5现有DS=2000H,BX=0100H,SI=0002H,20100H=12H,20101H=34H,20102H=56H,20103H=78H,21200H=2AH,21201H=4CH,21202H=B7H,21203H=65H,试说明下列指令执行后,AX寄存器中的内容。
(1)MOVAX,1200H(AX=1200H)
(2)MOVAX,BX(AX=0100H)
(3)MOVAX,[1200H](AX=4C2AH)
(4)MOVAX,[BX](AX=3412H)
(5)MOVAX,1100H[BX](AX=4C2AH)
(6)MOVAX,[BX+SI](AX=7856H)
(7)MOVAX,[1100H+BX+SI](AX=65B7H)
3.9假设下列程序执行前SS=8000H,SP=2000H,AX=7A6CH,DX=3158H。
执行下列程序段,画出每条指令执行后,寄存器AX,BX,CX,DX的内容和堆栈存储的内容的变化情况,执行完毕后,SP=?
PUSHAX(答:
AX不变)
PUSHDX(答:
DX不变)
POPBX(答:
BX=DX)
POPCX(答:
CX=AX)
3.10编程序段分别完成如下功能:
(1)AX寄存器低4位清零。
(答:
ANDAX,FFF0H)
(2)BX寄存器低4位置“1”。
(答:
ORBX,000FH)
(3)CX寄存器低4位变反。
XORCX,000FH)
(4)测试DL寄存器位3,位6是否同时为0,若是,将0送DL;
否则1送DH。
TESTDL,48H
JZNEXT
MOVDH,01H
JMPDONE
NEXT:
MOVDL,00H)
3.11写出三种不同类型的指令将寄存器BX清零。
MOVBX,0
XORBX,BX
SUBBX,BX
3.12已知从DS:
2200H,ES:
3200H单元起分别存放20个ASCII的字符。
找出这两个字符串中第一个不同字符的位置(段内偏地址),并放入DS:
22A0H开始的连续两个单元中。
请设计完成此任务的程序段。
(1)使用通常用的比较指令(CMP)实现;
(2)使用数据串比较指令(CMPSB)实现。
答
(1)
MOVSI,2200H;
MOVDI,3200H;
MOVCX,20;
MOVAL,[SI]
CMPAL,ES:
[DI];
JNZSTOP
INCSI
INCDI;
DECCX;
JNZNEXT
JMPDONE;
STOP:
MOV[22A0H],SI;
DONE:
HLT
答
(2)
REPZCMPSB;
JCXZDONE;
如果CX=0,表示所有的字符都相同
DECSI
3.13读下面程序段,请问:
在什么情况下,本段程序的执行结果是AH=0?
BEGIN:
IN AL,5FH
TEST AL,80H
JZ BRCH1
MOV AH,0
JMP STOP
BRCH1:
MOV AH,0FFH
STOP:
HLT
答端口地址5FH的内容为负数时,AH=0
3.16阅读下列程序:
NEXT:
MOVAL,[SI]
MOVES:
[DI],AL
INCDI
LOOPNEXT
写出用串指令完成上述功能的程序段。
答:
REPMOVSB
3.18假设寄存器AX=1234H,DX=0A000H,阅读下列程序段:
MOVBX,0
MOVCX,BX
SUBCX,AX
SBBBX,DX
MOVAX,CX
MOVDX,BX
上述程序执行后AX=?
,DX=?
,程序功能是什么?
AX=EDCCH
DX=5FFFH
功能:
0-A0001234H
3.19比较AX,BX,CX中带符号数的大小,将最大的数放在AX中,请编程。
CMPAX,BX
JGNEXT
MOVAX,BX
CMPAX,CX
MOVAX,CX
3.21编写程序段,在数据区0000H:
2000H开始100字节范围内,查找字符'
A'
,若找到,则将偏移地址送入DX,没有找到,则结束。
DATASEGMENT
ORG2000H
STRINGDB‘1222677ASS…..’共100个字符
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,ES:
DATA
MOVAX,DATA
MOVES,AX
CLD;
置DF=0,地址增量方向
MOVDI,OFFSETSTRING;
MOVCX,100;
MOVAL,‘A’;
NEXT:
SCASB;
JZSTOP;
ZF=1,找到“A”相同的字符,转STOP
DEXCX;
没找到(ZF=0),长度减1
JNZNEXT;
JMPDONE;
STOP:
DECDI;
字符A所在偏移地址→BX
MOVDX,DI
DONE:
HLT
CODEENDS
ENDSTART
3.28已知数据段DATA从存储器实际地址02000H开始,作如下定义:
DATASEGMENT
VAR1DB2DUP(0,1,?
)
VAR2DW50DUP(?
VAR3DB10DUP(0,1,2DUP(4),5)
DATAENDS
求出3个变量的SEG、OFFSET、TYPE、LENGTH和SIZE。
SEGOFFSETTYPELENGTHSIZE。
VAR1DATA0000H122
VAR2DATA0006H250100
VAR3DATA0037H11010
3.29已知数据区定义了下列语句,采用图示说明变量在内存单元的分配情况以及数据的预置情况。
DATASEGMENT
A1DB20H,52H,2DUP(0,?
A2DB2DUP(2,3DUP(1,2),0,8)
A3DB’GOOD!
’
A4DW1020H,3050H
相当于:
A1DB20H,52H,0,?
,0,?
A2DB(2,1,2,1,2,1,2,0,8),(2,1,2,1,2,1,2,0,8)
’,字符在内存用ASCII码表示
A4DB20H,10H,50H,30H
3.30采用示意图来说明下列变量在内存单元的分配以及数据的预置。
ORG4
VAR1DW9
VAR2DW2DUP(0)
CONTEQU2
VAR3DBCONTDUP(?
,8)
VAR4DB2DUP(?
,CONTDUP(0),′AB′)
与题3.29类似
3.32执行下列指令后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
.
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
AX=1E00H
3.34在数据区中,以TABLE开始连续存放0~6的立方值(称为立方表),设任给一数x(0≤x≤6),x在TAB1单元,查表求x的立方值,并把结果存入TAB2单元。
DSEGSEGMENT
TABLEDB0,1,8,27,64,125,…..;
定义立方表
TAB1DB4;
定义要查表的数X
TAB2DB?
;
定义结果存放单元
DSEGENDS
COSEGSEGMENT
ASSUMECS:
COSEG,DS:
DSEG,SS:
SSEG
BEGIN:
MOVAX,DSEG
MOVDS,AX
MOVBX,OFFSETTAB1;
置数据指针
MOVAH,0
MOVAL,DATA;
取待查数
ADDBX,AX;
求得查表地址
MOVAL,[BX];
查表
MOVTAB2,AL;
平方数送RUSULT单元
MOVAH,4CH
INT21H
COSEGENDS
ENDBEGIN
3.36编写程序,计算下面函数的值。
XDB-10
SDW?
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA;
给相关段寄存器赋值
MOVDS,AX
MOVAL,X
CMPAL,0
JLA1
CMPX,10
JGA2
MOVBL,3
IMULBL
MOVS,AX
JMPEXIT
A1:
MOVBL,2
A2:
MOVBL,4
EXIT:
MOVAH,4CH;
返回DOS
INT21H
CODEENDS
ENDSTART
3.39现有两个多字节压缩BCD码数9876543219H和1234567891H,它们分别按低位字节在前高位字节在后存放在变量A1和A2中,求它们的和与差,并将结果放在变量SUM和DEF中。
A1DB19H,32H,54H,76H,98H
A2DB91H,78H,56H,34H,12H
SUMDB6DUP(?
)
DEFDB5DUP(?
DATAENDS
CODESEGMENT
CODE,DS:
DATA,ES:
DATA
MAINPROCFAR
START:
MOVAX,DATA
MOVSI,OFFSETA1
MOVDI,OFFSETA2
MOVBX,OFFSETSUM
MOVCX,05
CLC
ADDF:
MOVAL,[SI]
ADCAL,[DI]
MOV[BX],AL
INCBX
DECCX
JNZADDF
MOVAL,0
ADCAL,AL
MOV[BX],AL(该三条指令用来处理最高位的进位)
MOVSI,OFFSETA1
MOVBX,OFFSETDEF
CLC
SUBF:
SBBAL,[DI]
MOV[BX],AL
JNZSUBF
CODEENDS
ENDSTART
3.40设变量K中存放了由100个有符号整数组成的数组,编写程序段找出其中最大的一个,放到AX中.(注意:
编程时只用于10个数)
DSEGSEGMENT
KDW23,45,87,……,98
COUNTEQU$-BUFFER
MAXDW?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
START:
MOVAX,DSEG
MOVCX,COUNT/2;
除2是字节数
LEABX,BUFFER
MOVAX,[BX]
INCBX
DECCX
AGAIN:
CMPAX,[BX]
JGENEXT
NEXT:
INCBX
LOOPAGAIN
MOVMAX,AX
CSEGENDS
ENDSTART
3.43在数据段中有一个字节数组,编程统计其中正数的个数,放入A单元,负数的个数,放入B单元。
DATDB23,45,87,……,98
ADB?
BDB?
MOVDX,0
MOVCX,COUNT
LEABX,DAT
MOVAL,[BX]
CMPAL,0
JGEPLUS
INCDL;
统计负数个数
JMPXEXT
PLUS:
INCDH
MOVA,DH
MOVB,DL
1.分析半导体随机存储器和只读存储器的特点和分类。
静态存储器和动态存储器的最大区别是什么?
它们各有什么优缺点?
3.存储器的寻址范围是怎样确定的?
举例说明它的确定方法。
5用下列芯片构成存储系统,各需要多少个RAM芯片?
需要多少位地址作为片外地址译码?
设系统为20位地址线,采用全译码方式。
(1)512×
4位RAM构成16KB的存储系统;
64片,11根,芯片上有9根地址线,片外有11根,全部参加译码)
(2)1024×
1位RAM构成128KB的存储系统;
128*8片,10根)
(3)2K×
4位RAM构成64KB的存储系统;
64片,9根)
(4)64K×
1位RAM构成256KB的存储系统;
7.有一个6264SRAM芯片的译码电路,如下图所示,请计算该芯片的地址范围及存储容量。
习题7图
容量为8KB
本题图中A14和A17没有使用,为部分地址译码法,共有4组重叠地址;
假设A14=0和A17=0,地址范围为DA000H~DB000H
9.使用4K×
8位的EPROM2732和2K×
8位的静态RAM6116以及LS138译码器,构成一个8KB.的ROM、地址范围为:
FE000H~FFFFFH;
4KB的RAM存储器系统,地址范围为:
00000H~0FFFH。
系统CPU8088工作于最小模式。
画出系统连接图。
提示:
本题中两个存储空间相差较远,使用两个138译码器分别完成译码
EPROM2732两片
第1片,地址空间从FE000H~FEFFFH
第2片,地址空间从FF000H~FFFFFH
RAM61162片
第1片,地址空间从00000H~007FFH
第2片,地址空间从00800H~00FFFH
10.试为某8位微机系统设计一个具有16KBROM和40KBRAM的存储器。
(1)选用EPROM芯片2764组成只读存储器(ROM),从0000H地址开始;
(2)选用SRAM芯片6264组成随机存取存储器(RAM),从4000H地址开始;
(3)分析出每个存储芯片的地址范围。
提示题目中给出的8位CPU其地址总线总计为16条
EPROM芯片2764共两片;
第1片,地址空间从0000H~1FFFH
第2片,地址空间从2000H~3FFFH
SRAM芯片6264共5片;
第1片,地址空间从4000H~5FFFH
第2片,地址空间从6000H~7FFFH
第3片,地址空间从8000H~9FFFH
第4片,地址空间从A000H~BFFFH
第5片,地址空间从C000H~DFFFH
第5章习题
5.3计算机与外设之间的数据传送控制方式有哪些?
它们各有什么特点?
5.5CPU与外设采用查询方式传送数据的过程是怎样的?
现有一输入设备,其数据端口的地址为FFE0H,并于端口FFE2H提供状态,当其D0位为1时表明输入数据备好。
请编写采用查询方式进行数据传送的程序段,要求从该设备读取100个字节并输入到从2000H:
2000H开始的内存中。
ORG2000H
DATADB100DUP(?
DSEGENDS
MOVAX,2000H
MOVAX,2000H
MOVDS,AX
MOVBX,2000H
MOVCX,100;
MOVDX,FFE2H
INAL,DX
ANDAL,01H
JZNEXT
MOVDX,FFE0H
MOV[BX],AL;
DECCX;
JNZNEXT
HLT
第6章习题
6.1.什么是中断?
计算机采用中断有什么好处?
简述中断的响应和处理过程。
6.6.简述中断向量、中断向量表、中断类型码之间的关系。
在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?
若某中断类型码是12H,则其中断向量存于何处?
若软中断指令INT30H,其中的中断类型号为多少,该中断的服务程序的入口地址在内存单元什么位置?
答;
中断类型码是12H,12H*4=48H
则其中断向量存于内存0000:
0048H开始的4个单元中
若软中断指令INT30H,其中的中断类型号为30H,30H*4=C0H