《微机原理与接口技术》第四章习题集与解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题集解答
第五章汇编语言程序设计
1.从4000H单元开始定义数据段如下,请画出所定义存储器的分配图。
BUF SEGMENT
DAl DW 3456H
DA2 DB 2 DUP(7,8)
BUF ENDS
答:
存储器的分配图
2.对于习题1的定义,请说明下列每条指令执行后的结果。
1、MOV AX,SEG DAl
2、MOV AX,SEG DA2
3、MOV BX,OFFSET DAl
4、MOV BX,OFFSET DA2
5、MOV CX,TYPE DAl
6、MOV CX,TYPE DA2
7、MOV DX,LENGTH DAl
8、MOV DX,LENGTH DA2
9、MOV AX,SIZE DAl ‘
10、MOV AX,SIZE DA2
答:1、(AX)=(DS)
2、(AX)=(DS)+2
3、(BX)=4000H
4、(BX)=4002H
5、(CX)=2
6、(CX)=1
7、(DX)=2
8、(DX)=4
9、(AX)=2
10、(AX)=4
3.已知数据定义如下,请计算变量PL的值是多少?
DATA DB ‘AB’
DATAl DB 10 DUP(?)
PL EQU $-DATA
答:PL=DATA+12-DATA=12
4.已知A=25、B=15、C=4,请计算下列表达式的值。
(1) A × 50+B (2) A MOD C+B
(3)(A+4)×B-3 (4) B/3 MOD 4
(5)A LE B (6) A XOR 50
答:(1) A ×50+B= 25 ×50+15=1250+15=12515
(2) A MOD C+B=25 MOD 4+15=1+15=16
(3)(A+4)×B-3 =(25+4)×15-3 =1500-3=1497
(4) B/3 MOD 4 =15/3 MOD 4 =5 MOD 4 =1
(5)A LE B =25 LE 15 = 0
(6) A XOR 50 = 25 XOR 50 = 43
5.已知内存DATA单元存放一个字数据,请统计其中含有0的个数,并送人
RESULT单元的程序。
答:程序如下:
DATA1 SEGMENT
DATA DW 1234h
COUNT DB 0
DATA1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1
START: MOV AX,DATA1
MOV DS,AX
MOV AX,DATA
MOV CX,16
LOP: TEST AX,8000H
JNZ NEXT
INC RESULT
NEXT: ROL AX,1
LOOP LOP
INT 3
CODE ENDS
END START
6.已知从数据段TAB单元开始,顺序存放十六进制数0~F的ASCII码,寄存器AL中的高四位二进制数是0、低四位是1。
请设计程序:用查表指令(XLAT)将寄存器AL中低四位的十六进制数转换为ASCII码。
答:DATA SEGMENT
TAB DB '0123456789ABCDEF'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA BX,TAB
XLAT
INT 3
CODE ENDS
END START
7.已知从数据段BUF单元开始存放一个三字节的带符号数,请设计对其求补的程序。
答:DATA SEGMENT
BUF DB 97H,87H,9AH
RES DB 3 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA BX,BUF
LEA SI,RES
MOV CX,3
LOP: MOV AL,[BX]
XOR AL,0FFH
MOV [SI],AL
LOOP LOP
CLC
LEA SI,RES
MOV CX,3
LOP1: MOV AL,[SI]
ADC AL,0
MOV [SI],AL
LOOP LOP1
INT 3
CODE ENDS
END START
8.已知从数据段BUF单元开始存放字节型的带符号数X和Y,请设计计算Y=6X+8的程序。
答:DATA SEGMENT
BUF DB 97H,87H ;X=97H和Y=87H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,0
MOV AL,BUF
SHL AX,1
MOV BX,AX
SHL AX,1
ADD AX,BX
ADD AX,8
MOV BUF+1,AL
MOV BUF+2,AH
INT 3
CODE ENDS
END START
9.已知X、Y是字节型的无符号数,请设计程序计算:
X/4 (0≤x<10)
Y=
X-10 (10≤X<20)
答:程序如下:
DATA SEGMENT
X DB 84H
Y D B 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,X
CMP AL,10
JAE NEXT
SHR AL,1
SHR AL,1
JMP EN
NEXT: SUB AL,10
EN:MOV Y,AL
INT 3
CODE ENDS
10.已知从数据段BUF单元开始存放15个字节型数据,请设计程序将其中负数和零分别送往MINUS和ZERO开始的存储器单元。
答:程序如下:
DATA SEGMENT
BUF DB 15DUP(?)
MINUS DB 15 DUP(?) ;存放负数
ZERO DB 15 DUP(?) ;存放0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ORG 100H
START: MOV AX,DATA
MOV DS,AX
LEA BX,BUF
MOV CX,15
LEA SI,MINUS
LEA DI,ZERO
LOP: MOV AL,[BX]
CMP AL,0
JGE PZ
MOV [SI],AL
INC SI
JMP NEXT
PZ: JG NEXT
MOV [DI],AL
INC DI
JMP NEXT
NEXT: INC BX
LOOP LOP
INT 3
CODE ENDS
END START
12.编一程序将字符串STR(长度20字节)中所有"&"用"$"代替。
答:程序如下:
DATA SEGMENT
STR DB 'G674GH&6TR677&74Y&98'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA BX,STR
MOV CX,20
LOP: MOV AL,[BX]
CMP AL,'&'
JNZ NEXT
MOV AL,'$'
MOV [BX],AL
NEXT: INC BX
LOOP LOP
INT 3
CODE ENDS
END START
13.请设计程序,将存储器单元2200~2210H清0、2250H~2260H置1、22AOH~22BOH置55H。
要求写出主程序和子程序。
解:程序如下:
DATA SEGMENT
BUF1 EQU 2200H
BUF2 EQU 2200H
BUF3 EQU 2200H
DATA ENDS
STACK SEGMENT
DB 20 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEG PROC FAR
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA BX,BUF1
MOV AL,0
CALL FMOV
LEA BX,BUF2
MOV AL,1
CALL FMOV
LEA BX,BUF3
MOV AL,55H
CALL FMOV
RET
START ENDP
FMOV PROC NEAR
MOV CX,16
LOP: MOV [BX],AL
INC BX
LOOP LOP
RET
FMOV ENDP
CODE ENDS
END BEG
14.编写程序,要求:
(1)键盘键入两个字符串STRING1和STRING2
(2)比较两串所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NOMATCH’。
解:程序如下:
DATA SEGMENT
STRING1 DB 10
DB ?
DB 10 DUP(?)
STRING2 DB 10
DB ?
DB 10 DUP(?)
XT DB 'MATCH',13,10,'$'
BXT DB 'NO MATCH',13,10,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DX,STRING1
MOV AH,10
INT 21H
LEA DX,STRING2
MOV AH,10
INT 21H
MOV AL,STRING1+1
CMP AL,STRING2+1
JNZ BD
LEA SI,STRING1+2
LEA DI,STRING2+2
MOV CH,0
MOV CL,AL
LOP: MOV AL,[SI]
CMP AL,[DI]
JNZ BD
INC SI
INC DI
LOOP LOP
LEA DX,XT
JMP DO1
BD: LEA DX,BXT
DO1: MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
第六章存储器
1.计算机的内存和外存有什么区别?
答:内存储器(主存储器)用来存放当前机器运行的程序和数据,它是计算机主机的一部分,一般把具有一定容量且速度较高的存储器作为内存储器,CPU可直接用指令对内存储器进行读写。
在微机中通常用半导体存储器作为内存储器。
外存储器用来存放当前暂时不用的程序和数据。
外存储器是存储容量大、速度较低、位于主机之外的存储器。
CPU不能直接用指令对外存储器进行读写。
要使用外存储器中的信息,必
须先将它调入内存储器。
2.计算机的三级存储系统是什么?解决了什么实际问题?
答:在现代微机中同时采用这两种存储层次,构成cache—内存—外存三级存储系统。
这三级存储系统的形成,满足了现代微型计算机对存储系统的速度快、容量大且价格低廉的要求。
cache—内存存储系统解决了速度与成本的矛盾。
cache—内存—外存三级存储系统解决了存储器的大容量和低成本之间的矛盾。
3.半导体存储器有哪些优点?SRAM、DRAM各有何特点?SRAM的某一单元中
存放一个数据,如05H,CPU将其取走后,该单元的内容是什么?
答:半导体存储器有易读易写、体积小、集成度高、速度快的优点。
DRAM的特点是必须定时刷新、集成度高、功耗低、价格便宜。
该单元的内容是05H(不变)
4.ROM、PROM、EPROM、E2PROM各有何特点?各用于何种场合?
答:①掩膜式ROM
用定作掩膜对存储器进行编程,一旦制造完毕,内容固定不能改变。
适合批量生产,但不适用于科研工作。
②可编程式的ROM(PROM)
PROM允许用户一次性写入,再也不可更改。
因此,不适用于科研。
③可擦除式的ROM(EPROM)
EPROM允许用户多次写入信息,写入操作由专用的写入设备完成。
写入之前应先擦除原来写人的信息。
一种擦除方式为紫外光擦除,用紫外光照射15分钟左右,芯片中的信息被擦除,成为一块“干净”的EPROM,可再次写入信息。
④电擦除式的ROM(E2PROM),即用特定的电信号对其进行擦除,可在线操作,因此很方便。
它的特点是写入时电压要求较高(一般为20V~25V),写入速度较慢而不能像RAM那样作随机存取存储器使用。
5.EPROM存储器芯片还没有写入信息时,各单元的内容是什么?使用EPROM时
应注意什么?
答:FFH
对EPROM的擦除和写入都有专用设备,写入之前应确保芯片是“干净”的,即为全1状态。
EPROM写入器(或称编程器)一般可对多种型号的EPROM芯片进行写入。
通过读写芯片的识别码来确认该使用什么样的编程脉冲和编程电压。
写入器由软件和硬件两部分组成,常与计算机配套工作。
6.若用4K×l位的RAM芯片组成16K×8位的存储器,需要多少芯片?A19~A0地址线中哪些参与片内寻址?哪些作为芯片组的片选信号?
答:16K×8/4K×l=4×8=22×8=32片
需要32片
4K=22 ×210=212 12根地址线A11~A0
22 2根地址线A13A12
7.下列RAM各需要多少条地址线进行寻址?各需要多少条数据I/O线?
(1)512K×4 (2)1K×8
(3)16K×4 (4)64K×l
答:(1)512K×4 512K=29×210=219 19根地址线 4 4根数据线
(2)1K×8 1K=20×210=210 10根地址线8 8根数据线
(3)16K×4 16K=24×210=214 14根地址线 4 4根数据线
(4)64K×l 64K=26×210=216 16根地址线 1 1根数据线
8.已知某微机控制系统中的RAM容量为4K×8位,首地址为4800H,求其最后一个单元的地址。
答:最后一个单元的地址-首地址+1=4KB=212=1000H
∴最后一个单元的地址=4800H+1000H-1=57FFH
9.设有一个具有14位地址和8位数据的存储器,问
(1)该存储器能存储多少字节的信息?
(2)如果存储器由8K×4位RAM芯片组成,需要多少片?
(3)需要多少位地址用于芯片选择?
答:(1)存储器的容量=214×8=16K×8=16KB ∴214个字节(16384个)
(2) 16K×8/8K×4=2×2=21×2=4片
(3) 21 1根地址线A13
10.若用2114芯片组成2KBRAM,地址范围为3000H~37FFH,问地址线应如何
连接?(假设CPU只有16条地址线、8条数据线,可用线选法和全译码法。
)
答:2114芯片1K×4
2KB =2K×8/1K×4=2×8=21×8=16片
需要16片
1K=20 ×210=210 10根地址线A9~A0
线选法:
21 1根地址线A10
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000H
0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 33FFH
0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 3400H
0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 37FFH
全译码法:
16-10=6 A15~A10
G2B C B A
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000H
0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 33FFH
0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 3400H
0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 37FFH
11.选用6116存储芯片和74LS138译码芯片,构成其起始地址为C000H的一个2KB的RAM存储子系统(假设CPU只有16条地址线、8条数据线,用全译码法。
) 答:6116 2K×8
2KB =2K×8/2K×8=1×1=20×1=1片需要1片
2K=21 ×210=211 11根地址线A10~A0
全译码法:
16-11=5 A15~A11
G2A G2B C B A
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C000H
1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 C7FFH。