微机系统原理与接口技术课后习题答案Word文档下载推荐.docx
- 文档编号:16642102
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:56
- 大小:61.68KB
微机系统原理与接口技术课后习题答案Word文档下载推荐.docx
《微机系统原理与接口技术课后习题答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机系统原理与接口技术课后习题答案Word文档下载推荐.docx(56页珍藏版)》请在冰豆网上搜索。
(3)00100010B=3410=(00110100)组合BCD
8.下面各ASCII码分别代表什么字符?
(1)(41H)ASCII码=‘A’
(2)(72H)ASCII码=‘r’
(3)(65H)ASCII码=‘e’
(4)(20H)ASCII码=‘’(空格)
9.写出下列字符的ASCII码:
(1)‘9’=(39H)ASCII码
(2)‘C’=(43H)ASCII码
(3)‘$’=(24H)ASCII码
(4)‘(’=(28H)ASCII码
第二章
1.请将左边的术语和右边的含义联系起来,在括号中填入右边的代号字母。
(1)字长(i)a.指由8个二进制位组成的通用基本单元。
(2)字节(a)b.是CPU指令执行时间的刻度。
(3)指令(h)c.CPU所能访问的存储单元数,与CPU地址总线条数有关。
(4)基本指令执行时间(g)d.惟一能代表存储空间每个字节单元的地址,用5位十六进制数表示。
(5)指令执行时间(j)e.CPU执行访问存储器或I/O操作所花时间。
(6)时钟周期(b)f.由段基址和偏移地址组成,均用4位十六进制数表示。
(7)总线周期(e)g.指寄存器加法指令执行所花时间。
(8)Cache(k)h.完成操作的命令。
(9)虚拟存储器(l)i.指CPU在交换、加工、存放信息时信息位的最基本长度。
(10)访存空间(c)j.各条指令执行所花时间,不同指令值不一。
(11)实际地址(d)k.为缓解CPU与主存储器间交换数据的速度瓶颈而建立的高速缓冲存储器。
(12)逻辑地址(f)l.CPU执行程序时看到的一个速度接近内存却具有外存容量的假想存储器。
3.在下列各项中,选出8086的EU和BIU的组成部件,将所选部件的编号填写于横线上。
EU(3).(7).(9).(12)
BIU(4).(5).(6).(8).(10).(11)
(1)地址部件AU
(2)段界检查器
(3)ALU(4)20位地址产生器
(5)20位物理地址加法器(6)指令队列
(7)状态标志寄存器(8)总线控制逻辑
(9)控制单元(10)段寄存器组
(11)指令指针(12)通用寄存器组
4.试将左边的标志和右边的功能联系起来。
要求:
(1)在括号中填入右边的功能代号。
(2)填写其类型(属于状态标志填S,属于控制标志填C)。
(3)写出各标志为0时表示的状态。
标志
类型
为0时表示的状态
1.SF(b)a.陷阱标志
S
结果为正数
2.CF(d)b.符号标志
无进位/借位
3.AF(h)c.溢出标志
4.DF(i)d.进位标志
C
数据串操作的增量地址为自动递增
5.TF(a)e.零标志
正常执行方式
6.OF(c)f.奇偶标志
无溢出
7.PF(f)g.中断允许标志
奇数个1
8.IF(g)h.辅助进位标志
无可屏蔽中断产生
9.ZF(e)i.方向标志
结果不为0
7.有一个由20个字组成的数据区,其起始地址为610AH:
1CE7H。
试写出该数据区首末单元的实际地址PA。
首单元地址:
610A0H+1CE7H=62D87H
末单元地址:
62D87H+27H=62DAEH
20个字共占用了40个字节,末单元的偏移量为39(即十六进制的27H)
8.若一个程序段开始执行之前,(CS)=97F0H,(IP)=1B40H。
试问该程序段启动执行指令的实际地址是多少?
实际物理地址=97F00H+1B40H=99A40H
9.若堆栈段寄存器(SS)=3A50H,堆栈指针(SP)=1500H,试问这时堆栈栈顶的实际地址是多少?
堆栈栈顶的实际物理地址=3A500H+1500H=3BA00H
12.有两个16位的字31DAH、5E7FH,它们在8086系统存储器中的地址为00130H和00135H,试画出它们的存储器示意图。
地址
内容
00130H
0DAH
00131H
31H
00132H
00133H
00134H
00135H
7F
00136H
5E
13.有一个32位的地址指针67ABH:
2D34H存放在从00230H开始的存储器中,试画出它们的存放示意图。
00230H
34H
00231H
2DH
00232H
0ABH
00233H
67H
14.将下列字符串的ASCII码依次存入从00330H开始的字节单元中,试画出它们的存放示意图:
U︺E︺S︺T︺C(︺为空格符)
00330H
55
00331H
20
00332H
45
00333H
00334H
53
00335H
00336H
54
00337H
00338H
43
15.存储器中每一个段最多为64KB,当某程序routadf运行后,用DEBUG命令显示出当前各寄存器的内容如下,要求:
(1)画出此时存储器分段的示意图。
说明
…
代码段(附加段)首地址
11A70H
堆栈段首地址
21BE0H
堆栈段末地址
21CA7H
栈底
21CA8H
代码段首地址
31B80H
(2)写出各状态标志的值:
B>
C:
debugroutadf.exe
r
AX=0000BX=0000CX=006DDX=0000
SP=00C8BP=0000SI=0000DI=0000
DS=11A7ES=11A7SS=21BECS=31B8IP=0000
NVUPEIPLNZNAP0NC
OF=0,DF=0,IF=1,SF=0,ZF=0,AF=0,PF=0,CF=0
16.已知(SS)=20A0H,(SP)=0032H,欲将(CS)=0A5BH,(IP)=0012H,(AX)=0FF42H,(SI)=537AH,(BL)=5CH依次推入堆栈保存。
(1)画出堆栈存放示意图。
入栈完毕时的当前栈顶SP
20A28H
5CH
20A29H
20A2AH
7AH
20A2BH
53H
20A2CH
42H
20A2DH
0FFH
20A2EH
12H
20A2FH
00H
20A30H
5BH
20A31H
0AH
栈底(初始栈顶SP)
20A32H
(2)写出入栈完毕时SS和SP的值:
(SS)=20A0H(不变),(SP)=0028H
第三章
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)错误。
不允许直接向段寄存器送立即数,可改为:
MOVAX,1000H
MOVDS,AX
(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;
但是如果考虑实际编译,则第一操作数前应加上BYTEPTR或WORDPTR说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:
MOVBYTEPTR[100],23H
(3)错误。
不能同时使用两个基址寄存器BX、BP进行间接寻址,可改为:
ADDAX,[BX+DI+6]
(4)错误。
堆栈操作应以字为单位进行,而DL是一个字节。
PUSHDX
(5)错误。
在输入/输出指令中,8位端口地址应直接写在操作数处。
INAX,3FH
(6)错误。
端口地址3FFH已超出8位二进制表示范围,16位端口地址应用DX。
MOVDX,3FFH
OUTDX,AL
(7)错误。
LES指令的目操作数应该是通用寄存器,不能是段寄存器。
LESAX,[SI]
(8)错误。
AX不能用于间接寻址,间接寻址只能用BX、BP、SI、DI四个寄存器之一。
POP[BX]
(9)错误。
立即数不能做乘法指令的操作数,可改为:
MOVBL,4CH
IMULBL
(10)错误。
当逻辑移位的次数大于1时,应该用CL指示次数。
MOVCL,5
SHLBX,CL
(11)错误。
操作数300?
255,已超出有效的中断类型码范围。
(12)错误。
XCHG指令不允许立即数做它的操作数。
MOVCX,0FFFH
XCHGDX,CX
2.请指出以下各指令的源、目的操作数所使用的寻址方式。
(1)MOVSI,2100H
(2)SBBDISP[BX],7
(3)AND[DI],AX
(4)ORAX,[609EH]
(5)MOV[BX+DI+30H],CX
(6)PUSHES:
[BP]
(7)CALL[DI]DISP
(8)JNZShort_label
(1)源操作数:
立即数寻址;
目的操作数:
寄存器寻址
(2)源操作数:
(带位移量的)基址寻址
(3)源操作数:
寄存器寻址;
变址寻址
(4)源操作数:
直接寻址;
目的操作数:
(5)源操作数:
(带位移量的)基址变址寻址
(6)源操作数:
带段超越的基址寻址;
隐含寻址
(7)只有一个操作数,为(带位移量的)变址寻址
(8)只有一个操作数,为相对寻址
3.在已学的指令中,可实现累加器清0的单条指令有哪些?
比较它们的功能。
共有以下四种方法:
(1)MOVAX,0;
仅将累加器清0,不会影响任何标志位
(2)SUBAX,AX;
累加器清0的同时影响所有状态标志,具体地有:
;
ZF、PF置1,CF、AF、SF、OF均清0
(3)ANDAX,0;
将累加器清0,ZF、PF置1,CF、OF、SF清0
(4)XORAX,AX;
4.若要判断某带符号数的正、负而不影响其原值,可使用哪些方法?
设带符号数为oprd,判断方法可有如下几种:
(1)执行指令ADDoprd,0之后,判断SF:
SF=0,oprd为正数,否则为负。
(2)执行指令SUBoprd,0之后,判断SF:
(3)执行指令CMPoprd,0之后,可直接判断SF:
SF=0,oprd为正数,否则为负;
或者再接着执行指令JGENOMINUS(即同时判断SF、OF),若程序转移至NOMINUS处,则oprd为正数,否则为负;
同理,亦可在在执行完CMPoprd,0之后再接着执行指令JLNOMINUS,若程序转移至NOMINUS处,则oprd为负数,否则为正。
(4)执行指令CMPoprd,80H(或8000H)之后,判断CF:
CF=1,oprd为正数,否则为负。
(5)执行指令ANDoprd,oprd(或全“1”)之后,判断SF:
(6)执行指令TESToprd,oprd(或全“1”)之后,判断SF:
(7)执行指令TESToprd,80H(或8000H)之后,判断SF:
或判断ZF:
ZF=1,oprd为正数,否则为负。
(8)执行指令ORoprd,oprd(或全“0”)之后,判断SF:
(9)执行指令XORoprd,0之后,判断SF:
5.已知DS=2000H,有关的内存单元值为:
(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT的偏移地址为1200H。
执行下列指令后,寄存器AX、BX、SI的值分别是多少?
MOVBX,OFFSETCOUNT
MOVSI,[BX]
MOVAX,COUNT[SI][BX]
执行结果为BX=1200H,SI=1000H,AX=3040H。
6.设标志寄存器值原为0401H,AX=3272H,BX=42A2H。
执行指令SBBAL,BH之后,AX和标志寄存器的值分别是多少?
由标志寄存器的原值0401H可知,CF的原值为1,故指令执行之后AX=322FH,标志寄存器的值为0410H,即AF变为1,CF变为0,其余不变。
7.设若标志寄存器原值为0A11H,SP=0060H,AL=4。
下列几条指令执行后,标志寄存器、AX、SP的值分别是多少?
PUSHF
LAHF
XCHGAH,AL
PUSHAX
SAHF
POPF
指令执行后标志寄存器的值为0411H,AX=0411H,SP=005EH。
8.设若内存单元DATA在数据段中偏移量为24C0H处,24C0H~24C3H单元中依次存放着55H、66H、77H、88H。
下列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少?
MOVAX,DATA
LEASI,DATA
MOVCL,[SI]
LDSBX,DATA
执行结果为AX=6655H,BX=6655H,CL=55H,SI=24C0H,DS=8877H。
9.若AX=26D3H,CX=7908H,CF=1,执行下列指令后,寄存器AX、CX的值分别是多少?
CF=?
OF=?
SALCH,1
RCRAX,CL
ROLAL,1
执行结果为AX=0A64CH,CX=0F208H,CF=OF=0。
10.已知IP=1000H,CF=0,则执行指令JNCShortlabel后,下列各数中哪一个是可能的IP值?
(A)0FFFFH(B)0FFEH(C)10FEH(D)1100H
(B)
简析:
条件转移指令执行前IP=1000H,执行JNC指令后IP=1002H;
又因CF=0,所以应跳转至目标地址处,该处对应的新IP值=1002H+相对位移量。
由于条件转移指令的跳转范围在距本条指令-128~+127个字节内,即新IP值可能的取值范围为0F82H~1081H,因此只有答案B符合条件。
11.设DS=4500H,AX=0508H,BX=4000H,SI=0320H。
当8086CPU在最小组态下执行指令MOV[BX+SI+0100H],AX时,各控制信号M/、DT/、、在有效期间的状态分别是什么?
数据总线和地址总线上的数分别是多少?
各控制信号M/、DT/、、在有效期间的电平分别是:
高、高、高、低。
数据总线上的数是0508H,地址总线上的地址是49420H。
12.已知有某字串BUF1的首址为0000H,BUF2的首址为0010H,数据段与附加段重合。
欲从BUF1处开始将10个字数据顺序传送至BUF2处,试在下面程序段的空白处填上适当的指令或操作数以实现上述功能。
LEASI,BUF1
ADDSI,18
LEADI,BUF2
ADDDI,18
STD
MOVCX,10
REPMOVSW
13.附加段中有某字符串首址为BLOCK,长17个字节。
欲查找其中第一次出现字符“e”的位置,并将该位置所在的偏移量入栈保护。
试在下面程序段的空白处填上适当的指令或操作数以实现上述功能。
MOVDI,OFFSETBLOCK
MOVAL,‘e’
MOVCX,17
CLD
REPNESCASB
JNEOTHER
DECDI
PUSHDI
OTHER:
……(略)
14.已知附加段中有一块长50个字的数据区,首址为DEST。
欲编程将它们全部初始化为0FFFFH值,试在下面程序段的空白处填上适当的指令或操作数,以实现上述功能。
LEADI,DEST
MOVCX,100
MOVAL,0FFH
REPSTOSB
15.已知有程序段如下:
MOVAL,35H
MOVDL,AL
ANDDL,0FH
ANDAL,0F0H
MOVCL,4
SHRAL,CL
MOVBL,10
MULBL
ADDAL,DL
执行之后,AL等于多少?
该程序段完成了什么功能?
程序段执行后AL=23H。
该程序段实现了将AL中的1个组合BCD码转换为十六进制数并存回AL中的功能。
16.以HEX为首址的字节单元处存放着一串ASCII字符:
“0123456789ABCDEF”,并有程序段如下:
MOVBX,OFFSETHEX
LEADI,HCOD
INCDI
MOVAL,5CH
MOVAH,AL
ANDAL,0FH
XLATHEX
STOSB
MOVAL,AH
上述程序段执行后,字节单元HCOD及其相邻单元HCOD+1的内容是多少?
该程序段的功能是什么?
程序段执行后,HCOD单元的内容是‘5’,HCOD+1单元的内容是‘C’。
该程序段将AL中存放的1字节十六进制数转换为2个对应的ASCII字符存放在HCOD及其相邻单元HCOD+1中。
17.有程序段如下:
MOVAL,DB1
MOVAH,0
MOVDL,10
L1:
DIVDL
MOVBL,AH
MOVBH,0
PUSHBX
CMPAL,0
JNZL1
……
若内存单元DB1的值为7BH,则程序将依次向堆栈压入哪些数据?
该程序段实现了什么功能?
先后存入堆栈中的字数据依次是3、2、1。
该程序段实现了将一个字节的无符号十六进制数DB1转换为非组合BCD码存入堆栈的功能,堆栈中最先压入的是十进制数的个位(每个十进制位在堆栈中占1个字单元)。
18.下面的程序执行后,DX、AX的值分别是多少?
以X为首址的字单元中的数据依次为1234H、5678H
以Y为首址的字单元中的数据依次为8765H、4321H
LEASI,X
LEADI,Y
MOVDX,[SI+2]
MOVAX,X
ADDAX,X
ADCDX,[SI+2]
CMPDX,[DI+2]
JLL2
CMPAX,Y
JLL1
JMPEXIT
MOVAX,1
L2:
MOVAX,2
EXIT:
执行结果为AX=2,DX=0ACF0H。
19.已知组合BCD码的存放情况如图所示,按要求编写计算程序:
……
94H←DATA1
1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 系统 原理 接口 技术 课后 习题 答案