微机原理与及接口技术.docx
《微机原理与及接口技术.docx》由会员分享,可在线阅读,更多相关《微机原理与及接口技术.docx(44页珍藏版)》请在冰豆网上搜索。
![微机原理与及接口技术.docx](https://file1.bdocx.com/fileroot1/2022-12/13/33af3b6d-d4dd-42e6-b020-5dbe35bc6dc4/33af3b6d-d4dd-42e6-b020-5dbe35bc6dc41.gif)
微机原理与及接口技术
答案第一章
1.将下列十进制数转换成二进制数。
(1)49
(2)49.75(3)100(4)100.8125
解:
(1)(49)10=(110001)2
(2)(49.75)10=(110001.11)2
(3)(100)10=(1100100)2
(4)(100.8125)10=(1100100.1101)2
2.将下列十六进制数转换成二进制数和十进制数。
(1)FAH
(2)78A2H(3)FFFFH(4)3CH
解:
(1)(FA)16=(11111010)2=(250)10
(2)(78A2)16=(111100010100010)2=(30882)10
(3)(FFFF)16=(111111*********1)2=(65535)10
(4)(3C)16=(111100)2=(60)10
3.将下列二进制数转换成十六进制数和八进制数。
(1)101101.11
(2)1111111(3)1101001011.01(4)10111101
解:
(1)(101101.11)2=(2D.C)16=(55.6)8
(2)(1111111)2=(7F)16=(177)8
(3)(1101001011.01)2=(34B.4)16=(1513.2)8
(4)(10111101)2=(BD)16=(275)8
4.设机器字长为8位,写出下列各二进制数的原码、反码和补码。
(1)+1010101
(2)-1000000(3)+1111111(4)-1111111
解:
(1)原码:
01010101;反码:
01010101;补码:
01010101。
(2)原码:
11000000;反码:
10111111;补码:
11000000。
(3)原码:
01111111;反码:
01111111;补码:
01111111。
(4)原码:
11111111;反码:
10000000;补码:
10000001。
5.设下列四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出。
(1)a=0F6H,b=0D5H
(2)a=0B7H,b=0C7H
(3)a=37H,b=67H(4)a=73H,b=7BH
解:
(1)a+b=CBH,没有发生溢出;a-b=21H,没有发生溢出。
(2)a+b=7EH,发生溢出;a-b=F0H,没有发生溢出。
(3)a+b=9EH,发生溢出;a-b=D0H,没有发生溢出。
(4)a+b=EEH,发生溢出;a-b=F8H,没有发生溢出。
6.已知a=00111000B,b=11110011B,计算下列逻辑运算。
(1)aANDb
(2)aORb(3)aXORb(4)NOTa
解:
(1)aANDb=00110000B
(2)aORb=11111011B
(3)aXORb=11001011B
(4)NOTa=11000111B
7.将下列算式中的十进制数表示成组合BCD码进行运算,并根据需要进行调整。
(1)38+42
(2)56+77(3)99+77(4)34+7
解:
(1)00111000
+01000010
01111010
+0110
10000000(80)
(2)01010110
+01110111
11001101
+01100110
000100110011(133)
(3)10011001
+01110111
100010000
+01100110
000101110110(176)
(4)00110111
+00000111
00111011
+0110
01000001(41)
8.将下列字符串表示成相应的ASCII码(用十六进制数表示)。
(1)102
(2)ABC(3)ASCII(4)abc
解:
(1)313032H
(2)414243H
(3)4153434949H
(4)616263H
9.已知[X]原=10101100B,计算[(1/2)X]补及[(-1/2)X]补的值。
解:
∵[X]原=10101100B∴[(1/2)X]原=10010110B,[(-1/2)X]原=00010110B
∴[(1/2)X]补=11101010B,[(-1/2)X]补=00010110B
10.请将十进制数7.5表示成二进制浮点规格化数(阶符1位,阶码2位,数符1位,尾数4位)。
解:
十进制数7.5用二进制表示为:
111.1B
111.1B=0.1111×2+3
浮点规格化数表示成:
01101111。
第二章
1.8086/8088微处理器从逻辑结构上可以分成哪两部分?
试说明每一部分的组成与功能。
答:
8086/8088微处理器从逻辑结构上可以分成执行单元(EU)和总线接口单元(BIU)。
执行部件(EU)包含一个16位的算术逻辑单元(ALU)、一个16位反映CPU状态和控制标志的状态标志寄存器(FLAG)、一组8个16位通用寄存器组、数据暂存寄存器和EU的控制电路。
总线接口部件(BIU)包含一组段寄存器(CS,SS,DS和ES)、一个指令指针寄存器(IP)、4或6个字节的指令队列、地址形成器件和总线控制逻辑。
EU的功能是负责指令的执行;BIU的功能是根据EU的请求,完成CPU与存储器或I/O接口间的数据传送。
2.写出8086/8088CPU中14个16位寄存器的名称。
答:
8086/8088CPU中14个16位寄存器的名称如下:
AX:
累加器。
BX:
基址寄存器。
CX:
计数寄存器。
DX:
数据寄存器。
SP:
堆栈指针寄存器。
BP:
基地址指针寄存器。
SI:
源变址寄存器。
DI:
目的变址寄存器。
CS:
代码段寄存器。
DS:
数据段寄存器。
SS:
堆栈段寄存器。
ES:
附加段寄存器。
IP:
指令指针寄存器。
FLAG:
标志寄存器。
3.写出8086/8088CPU标志寄存器中的6个状态标志位和3个控制标志位的定义。
答:
6个状态标志位的定义如下:
CF:
进位标志;当最高位有进位或借位时,CF=1;否则CF=0;
PF:
奇偶标志;当运算结果中低8位中“1”的个数为偶数时,PF=1;否则PF=0;
AF:
辅助进行标志;当D3向D4有进位或借位时,AF=1;否则AF=0;
ZF:
零标志;运算结果每位都为0时,ZF=1;否则ZF=0;
SF:
符号标志;运算结果的最高位为1时,SF=1;否则SF=0;
OF:
溢出标志;两个符号数进行运算产生溢出时,OF=1;否则OF=0。
3个控制标志位的定义如下:
TF:
陷阱标志;当TF=1时,CPU将进入单步执行工作方式;
IF:
中断标志;当IF=1时允许CPU响应可屏蔽中断;当IF=0时禁止CPU响应可屏蔽中断;
DF:
方向标志;当DF=0时,串操作指令时地址朝增加方向;当DF=1时,串操作指令时地址朝减少方向。
4.在8086/8088CPU中,十六进制补码数8070H与9E85H进行加法运算,请写出运算结束后SF、OF、CF、AF、ZF及PF标志位的值?
解:
8070H1000000001110000
+9E85H1001111010000101
128F5H+10010100011110101
从运算结果可以看出:
SF=0;OF=1;AF=0;CF=1;ZF=0;PF=1。
5.写出8086/8088CPU引脚中ALE、NMI、INTR、
及
的含义及输入/输出方向。
答:
ALE:
地址锁存输出信号。
NMI:
非屏蔽中断请求输入信号。
INTR:
可屏蔽中断请求输入信号。
:
中断响应输出信号。
:
数据传送方向输出信号。
6.8088CPU中的RESET、READY信号的作用分别是什么?
答:
RESET:
CPU复位输入信号,高电平有效。
当此输入线有效并维持至少4个时钟周期时完成CPU内部复位操作。
复位后CPU内的寄存器及引脚处于初始状态。
READY:
准备就绪输入信号,高电平有效。
用于协调CPU与存储器或I/O端口之间的数据传送。
当CPU对存储器或I/O进行操作时,在T3周期开始采样READY信号。
若其为低电平,表明被访问的存储器或I/O还未准备就绪;若其为高电平,表明被访问的存储器或I/O已准备就绪。
7.写出段基址、偏移地址、逻辑地址和物理地址的含义,同时写出它们之间的联系。
答:
段基址:
段首地址的高16位地址码,常存于相应的段寄存器中;
偏移地址:
段内的相对地址,也称有效地址;
逻辑地址:
由段基址与段内偏移地址组合表示存储单元地址;
物理地址:
用20位二进制编号表示存储单元地址;
物理地址=段基址×16+段内偏移地址。
8.试填写物理地址。
(1)CS=1200H,IP=2500H,物理地址为14500H。
(2)DS=39A0H,BX=4700H,物理地址为3E100H。
(3)ES=6200H,DI=2000H,物理地址为64000H。
(4)SS=8200H,BP=1050H,物理地址为83050H。
9.请画出8088CPU一个基本的存储器写总线周期时序图。
答:
10.请写出时钟周期、总线周期与指令周期的含义。
答:
时钟周期是CPU的基本时间计量单位,即计算机主频的倒数。
总线周期是指CPU通过总线对存储器或I/O端口进行一次访问(读/写操作)所需的时间;一个总线周期至少包含4个时钟周期,即T1、T2、T3、T4。
指令周期是指计算机完成一条指令的执行所需要的时间。
11.在总线周期的T1、T2、T3和T4状态,CPU分别执行什么动作?
什么情况下需要插入等待状态TW?
TW插入的位置?
答:
在T1状态,BIU把要访问的存储器单元或I/O端口的地址输出到总线。
在T2状态,地址/数据复用总线停止输出地址信号。
若是读周期,T2中地址/数据复用总线处于高阻状态,CPU有足够的时间使其从输出方式变为输入方式;若为写周期,CPU不必转变输出方式。
在T3~T4状态,CPU与存储器或I/O接口进行数据传送。
CPU若与慢速的存储器或I/O端口之间的数据传送,READY信号在T3状态时仍为低电平,则在T3之后插入等待状态TW,加入TW的个数由外设的速度与CPU速度匹配决定。
12.8088CPU工作在最小模式下,请回答以下问题:
(1)CPU访问存储器时,需要哪些信号?
(2)CPU访问I/O接口时,需要哪些信号?
(3)当HOLD有效并得到响应时,CPU的哪些信号置高阻状态?
答:
(1)利用A15~A8,AD7~AD0,ALE,
,
,
,
,
。
(2)利用A15~A8,AD7~AD0,ALE,
,
,
,
,
。
(3)当HOLD有效并得到响应时,CPU中呈高阻状态的信号有:
A15~A8,AD7~AD0,ALE,
,
,
,
,
。
第三章
1.按照题目中提出的要求,写出能达到要求的一条(或几条)汇编形式的指令。
(1)将立即数1234H送入寄存器BX;
(2)将立即数1234H送入段寄存器DS;
(3)将变址寄存器DI的内容送入数据段中2000H的存储单元;
(4)把数据段中2000H存储单元的内容送段寄存器ES;
(5)将立即数0ABH与AL相加,结果送回AL;
(6)把BX与CX寄存器内容相加,结果送入BX;
(7)寄存器BX中的低4位内容保持不变,其它位按位取反,结果仍在BX中;
(8)实现AX与8位数-128的乘积运算;
(9)实现CX中高、低8位内容的交换;
(10)将DX中D0、D5、D8位置1,其余位保持不变。
解:
(1)MOVBX,1234H
(2)MOVAX,1234H
MOVDS,AX
(3)MOV[2000H],DI
(4)MOVES,[2000H]
(5)ADDAL,0ABH
(6)ADDBX,CX
(7)XORBX,0FFF0H
(8)MOVBL,80H
IMULBL
(9)XCHGCH,CL
(10)ORDX,0121H
2.顺序执行下列指令,填写指令后的空格。
MOVAX,2000H;AH=20H
MOVDS,AX;AL=00H;DS=2000H
MOVBX,2030H;BH=20H;BL=30H
MOVSI,BX;SI=2030H
PUSHBX
POPCX;BX=2030H;CX=2030H
XCHGAX,SI;AX=2030H;SI=2000H
ADDAX,0F43H;AX=2F73H;CF=0
CWD;AX=2F73H;DX=0000H
SHLAL,CL;AL=00H;CL=30H
ORAX,5555H;AX=7F55H
ANDAX,0AA55H;AX=2A55H
MOVBL,0FFH
MULBL;AX=54ABH
IMULBL;AX=0055H
3.指出下列各条指令中源操作数字段的寻址方式。
(1)MOVAX,0ABH;立即寻址方式
(2)MOVAX,BX;寄存器寻址方式
(3)MOVAX,[1234H];直接寻址方式
(4)MOVAX,[BX];寄存器间接寻址方式
(5)MOVAX,[BX+10];寄存器相对寻址方式
(6)MOVAX,[BX][SI];基址变址寻址方式
(7)MOVAX,03H[BX][SI];相对基址变址寻址方式
(8)ADDBX,[SI];寄存器间接寻址方式
(9)ANDAX,1234H;立即寻址方式
(10)XORCX,AX;寄存器寻址方式
4.如果TABEL为数据段中0032H单元的符号名,其中存放的内容为1234H,填写下列指令执行后空格中的内容。
MOVAX,TABEL;AX=1234H
LEAAX,TABEL;AX=0032H
5.画出执行下列指令过程中堆栈区和SP的内容变化过程示意图,并标出存储单元的物理地址。
MOVAX,1000H
MOVSS,AX
MOVSP,0100H;
MOVBX,SP
PUSHAX;
PUSHBX;
POPCX;
HLT
解:
6.标出下列指令的执行顺序。
(1)MOVAX,1234H
(2)CMPAX,8234H
(3)JCNEXT1
(4)CBW
(5)NEXT1:
MOVBX,9876H
(6)CMPBX,AX
(7)JBNEXT2
(8)SHRAX,1
(9)NEXT2:
ANDBX,1010H
(10)HLT
解:
指令的执行顺序:
(1)→
(2)→(3)→(5)→(6)→(7)→(8)→(9)→(10)。
7.指令REPMOVSB,REPLODSB,REPSTOSB及REPESCASB中,哪一条能替代以下程序段。
ABC:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPABC
解:
指令REPMOVSB能替代上述程序段。
8.顺序执行下列各条指令,填写空格。
MOVBX,6534H;BX=6534H
XORBX,0FFFFH;BX=9ACBH
ANDBX,15A0H;BX=1080H
ORBX,2379H;BX=33F9H
TESTBX,0002H;BX=33F9H
9.试写出执行下列3条指令后BX寄存器的内容。
MOVCL,21H
MOVBX,6D16H
SHRBX,CL
解:
BX=0000H
10.试分析以下程序段所完成的功能。
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
解:
程序段完成由DX和AX共同组成的32位数向左移动4位。
11.假定AX和BX中内容为有符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若DX的内容超过CX的内容,则转去执行EXCEED;
(2)若BX的内容大于AX的内容,则转去执行EXCEED;
(3)BX的内容大于等于AX的内容,则转去执行EXCEED;
(4)若CX的内容等于0,则转去执行ZERO;
(5)若BX与AX的内容相等,则转去执行EQ;
(6)若BX的内容小于等于AX的内容,则转去执行EQSMA;
(7)若CX的内容等于5678H,则转去执行EQ;
(8)若DX的内容低于CX的内容,则转去执行EQSM;
(9)若AX的内容为正,则转去执行ABC;
(10)若AX的内容为负,则转去执行ABC1。
解:
(1)CMPDX,CX
JAEXCEED
(2)CMPBX,AX
JGEXCEED
(3)CMPBX,AX
JGEEXCEED
(4)CMPCX,0
JZZERO
(5)CMPBX,AX
JZEQ
(6)CMPBX,AX
JLEEQSMA
(7)CMPCX,5678H
JZEQ
(8)CMPDX,CX
JBEQSM
(9)ADDAX,0
JNSABC
(10)ADDAX,0
JSABC1
12.编写程序段,实现十六进制数12345678H与76543210H相减运算,运算结果存入DX、AX中,其中DX存放高位。
解:
参考程序段如下:
MOVAX,5678H
SUBAX,3210H
MOVDX,1234H
SBBDX,7654H
HLT
13.编写程序段,实现十进制数12345678与76543210相加运算,运算结果用BCD码表示,并存入DX、AX中,其中DX存放高位。
解:
MOVAL,78H
ADDAL,10H
DAA
MOVBL,AL
MOVAL,56H
ADCAL,32H
DAA
MOVAH,AL
MOVAL,34H
ADCAL,54H
DAA
MOVDL,AL
MOVAL,12H
ADCAL,76H
DAA
MOVDH,AL
MOVAL,BL
HLT
14.编写程序段,将附加段中1000H单元开始的100字节单元清零。
解:
参考程序段如下:
MOVCX,0064H
MOVDI,1000H
CLD
MOVAL,00H
REPSTOSB
HLT
15.编写程序段,将数据段中1000H单元开始的100字节单元均存放23H。
解:
参考程序段如下:
MOVCX,0064H
MOVAX,DS
MOVES,AX
MOVDI,1000H
CLD
MOVAL,23H
REPSTOSB
HLT
第四章汇编语言源程序设计
1.画出数据段汇编后相应存储单元中的内容并标出存储单元的逻辑地址。
DATASEGMENT
ORG0100H
ABC0EQU78H
ABCDB09H,-2,45H,2DUP(01H,?
),‘AB’
ABC1DW-2,34H+ABC0,$
ABC2DD12H
ABC3DWABC
DATAENDS
解:
DS:
0100H
ABC→
09H
DS:
0101H
FEH
DS:
0102H
45H
DS:
0103H
01H
DS:
0104H
-
DS:
0105H
01H
DS:
0106H
-
DS:
0107H
41H
DS:
0108H
42H
DS:
0109H
ABC1→
FEH
DS:
010AH
FFH
DS:
010BH
ACH
DS:
010CH
00H
DS:
010DH
0DH
DS:
010EH
01H
DS:
010FH
ABC2→
12H
DS:
0110H
00H
DS:
0111H
00H
DS:
0112H
00H
DS:
0113H
ABC3→
00H
DS:
0114H
01H
2.设程序中的数据定义如下:
PARTNODW?
PNAMEDB16DUP(?
)
COUNTDD?
PLENTHEQU$-PARTNO
问PLENTH的值为多少?
它的含义是什么?
解:
PLENTH的值为22(16H)。
表示当前位置与PARTNO之间有22个字节空间。
3.假设程序中的数据定义如下:
LNAMEDB30DUP(?
)
ADDRESSDB30DUP(?
)
CITYDB15DUP(?
)
CODE_LISTDB1,7,8,3,2
(1)用一条MOV指令将LNAME的偏移地址放入AX;
(2)用一条指令将CODE_LIST的头两个字节的内容放入SI:
(3)写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。
解:
(1)MOVAX,OFFSETLNAME
(2)MOVSI,WORDCODE_LIST
(3)CODE_LENGTHEQU$-CODE_LIST
4.执行下列程序段后,AX、BX的内容各是什么?
MOVAX,0001H
MOVBX,8000H
NEGAX
MOVCX,4
AA:
SHLAX,1
RCLBX,1
LOOPAA
HLT
解:
AX=0FFF0H,BX=000FH
5.阅读以下程序,回答问题
DATASEGMENT
ABCDB90H,12H,43H,56H,04H,01H
COUNTEQU$-ABC
RESULTDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
MOVAX,DATA
MOVDS,AX
XORAX,AX
MOVCX,COUNT
LEASI,ABC
LEADI,RESULT
AA:
MOVBL,[SI]
INCSI
CMPBL,80H
JCNEXT1
NEGBL
NEXT1:
ADDAL,BL
ADCAH,00H
LOOPAA
MOV[DI],AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(1)程序完成什么功能?
(2)程序中NEGBL指令的作用是什么?
(3)程序执行结束后RESULT字单元的内容是什么?
(4)能否用MOVSI,OFFSETABC代替程序中LEASI,ABC指令?
(5)汇编结束后符号COUNT的值是什么?
解:
(1)程序完成求一组有符号字节数的绝对值之和。
(2)程序中NEGBL指令的作用是求负数的绝对值。
(3)程序执行结束后RESULT字单元的内容是0120H。
(4)能。