CODE ENDS END BEGIN
19.设在A、B和C单元中分别存放着三个数,若三个数都不是0,则求出三数之和并存放在D单元中;若三个数中有一个为0,则把其余两个单元也清0。试编写此程序。 解:参考程序如下:
DATA SEGMENT
A DB ? B DB ?
C DB ? ;程序运行前修改A、B和C单元的内容 D DB ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX MOV AL,A CMP AL,00H JZ NEXT MOV AL,B CMP AL,00H JZ NEXT MOV AL,C CMP AL,00H JZ NEXT MOV AL,A ADD AL,B ADD AL,C MOV D,AL JMP NEXT1
NEXT: MOV A,00H
MOV B,00H
MOV C,00H NEXT1: MOV AH,4CH INT 21H
CODE ENDS
END START
20.在以DA1为首地址的内存中有50个无符号字节数,编写程序统计其中素数的个数,结果以十进制形式在屏幕上显示。要求分别用子程序完成素数个数统计及十进制数显示。 解:分析: 素数,又称质数,是这样的整数:它除了能表示为它自己和1的乘积以外,不能表示为任何其他两个整数的乘积。判断一个整数是否为素数的方法:用这个数除以2到它本身,如果只能被它本身整除则为素数。参考程序如下: DATA SEGMENT
TTL DB 'TOTAL NUMBER OF PRIME NUMBER(S): $' TEN DW 10
PCOUNT DB 0
DA1 DB 1,2,3,4,5,6,7,8,9,10
DB 11,12,13,14,15,16,17,18,19,20 DB 21,22,23,24,25,26,27,28,29,30 DB 31,32,33,34,35,36,37,38,39,40 DB 41,42,43,44,45,46,47,48,49,50 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN: MOV AX,DATA
MOV DS,AX LEA SI,DA1
MOV DI,50 ;用 DI 做主循环计数器 CLD
M_1: LODSB ;从DS:SI取一个无符号整数到AX
CALL ISPRIME JNC M_2 INC PCOUNT
CALL PRINTAX ;是素数则输出AX里的十进制数 MOV DL,9 ;用制表符分隔 CALL PUTC M_2: DEC DI
JNZ M_1 ;50个数完成?
MOV DX,OFFSET TTL ;输出素数总数 CALL PUTS
MOV AL,PCOUNT ;输出素数总数 XOR AH,AH CALL PRINTAX MOV AH,4CH INT 21H ISPRIME PROC
CBW TEST AX,1 ;是否为偶数
JNZ IP_1 ;若是偶数直接返回 IP_0: CLC ;CF=0表示是合数
RET
IP_1: CMP AX,1 ;1或0?
JBE IP_0 ;不是素数 CMP AX,3
JE IP_4 ;3是素数直接返回 MOV CX,3 ;从3开始循环 IP_2: MOV BX,AX ;留个副本在BX里
XOR DX,DX ;为除法清除DX DIV CX
MOV AX,BX ;恢复AX里的数 OR DX,DX ;余数为0否 JZ IP_0 ;为0为合数
ADD CX,3 ;本来是除数加2,只尝试除数为奇数的情况即可,直接加3是为了比较CX是否以及到了AX-1
CMP CX,AX
JB IP_3 ;若CX高于或等于AX,说明除数已经尝试到了N-1,AX是素数,直接返回,否则继续到IP_3
IP_4: STC ;CF=1表示是素数
RET IP_3: DEC CX ;CX-1才是真正下个要尝试的除数
JMP IP_2 ;继续试 ISPRIME ENDP PUTS PROC MOV AH,9 INT 21H RET
PUTS ENDP PUTC PROC MOV AH,2 INT 21H RET
PUTC ENDP PRINTAX PROC
XOR DX,DX DIV TEN MOV CX,AX OR CX,DX ;若商与余数都为0则结束递归 JZ P_1
PUSH DX ;留存DX中的余数以在递归后输出 CALL PRINTAX ;递归
POP DX ;从最高位开始恢复余数
ADD DL,'0' ;原来的输出语句ADD一下就好了 CALL PUTC P_1: RET
PRINTAX ENDP CODE ENDS END MAIN
第五章
1.选择题
(1)关掉工作电源后,其中存储的数据立即丢失的存储器是 。 A.硬盘 B.ROM C.光盘 D.RAM (2)下面说法正确的是 。 A.EPROM是不能改写的存储器
B.EPROM是可以改写的,因此它也是一种随机存取存储器
C.EPROM只能改写一次 D.EPROM可以改写,但它不是随机存取存储器 (3)某DRAM芯片有8条地址线,因些可以推断其存储容量不超过 。 A.512个存储单元 B.65536个存储单元 C.8192个存储单元 D.256个存储单元
(4)对于地址总线为20位的微处理器来说,其直接寻址的范围可达 。 A.16MB B.1MB C.64MB D.1GB
(5)在研制某一计算机应用系统的过程中,存储其监控程序可选用 。 A.RAM B.EPROM C.PROM D.ROM (6)下列四条叙述中,正确的一条是 。
A.硬盘和光盘都属于外存储器 B.计算机的外存比内存存取速度快 C.虚拟存储器属外存储器
D.计算机系统中的任何存储器在断电情况下,所存信息都不会丢失 (7)常用的虚拟存储器寻址系统由 两级存储器组成。 A.Cache-外存 B.Cache-Cache C.Cache-主存 D.主存-外存
(8)下列关于外存、内存以及Cache的不正确的说法是 。 A.内存通常由RAM、ROM芯片组成 B.Cache可以在CPU内部或外部
C.Cache只占用部分内存空间 D.外存的信息必须调入内存才能被CPU执行 (9)虚拟存储器由 实现。
A.硬件和用户编程 B.硬件和操作系统 C.ROM-BIOS D.用户编程和操作系统
(10)不能与CPU总线直接相连的存储器是 。 A.内存储器 B.ROM C.硬盘 D.RAM 解:参考答案: 题号 (1) (2) (3) (4) (5) 答案 D D B B B 题号 (6) (7) (8) (9) (10) 答案 A D B B C 2.简答题
(1)简述SRAM芯片与DRAM芯片的共同点与不同点。
答:SRAM与DRAM的共同点:都属于随机存取存储器,具有易失性。 SRAM与DRAM的不同点:SRAM利用双稳态触发器电路保存信息,集成度比DRAM低,功耗比DRAM大;DRAM利用MOS管栅极和源极之间的极间电容C保存信息,需要刷新电路保证信息较长时间保存。
(2)叙述ROM芯片的常见分类,各种ROM芯片的特点及其适用场合。
答:ROM的常用分类、特点及应用场合:
①掩膜ROM:生产完成的芯片已保存了信息,保存的信息无法修改,适用于大批量的定型产品中。
②PROM:PROM可以一次写入信息,一旦写入无法更改,适用于小批量的定型产品中。 ③EPROM:紫外线擦除可多次编程的存储器,适用于新产品的开发。 ④EEPROM:电擦除可多次编程的存储器,适用于需要在线修改的场合。 (3)主存储器的地址译码方式有哪几种?各有什么特点? 答:主存储器的地址译码方式分为全部译码与部分译码。 全部译码:把剩余的高位地址线全部作为译码器的输入,用译码器输出来作为片选信号的方法就是全部译码。采用全译码时各芯片(组)的地址范围是唯一的,即每个存储单元的地址唯一,没有地址重叠,地址空间可以得到充分利用。
部分译码:用剩余高位地址线的一部分作为译码器的输入,用译码器的输出来作为片选信号的方法就是部分译码。采用部分译码时,存储器单元的地址不唯一,存在地址重叠。没有参加译码的地址线越多,地址重叠就越严重。
(4)利用4片6116(2K×8位)芯片设计存储器系统时,采用全译码法并且保证存储器地址的连续,若起始地址为60000H,则存储器系统的最后一个单元地址是什么?
答:存储器系统的最后一个单元地址是61FFFH。
(5)某微机系统中ROM区有首地址为90000H,末地址为FFFFFH,求其ROM区域的存储容量。
答:其ROM区域的存储容量为448K。
(6)对于下列芯片,它们的片内地址线各有多少根?若分别用以下芯片组成容量为64KB的模块,请指出分别需要多少片芯片? ① Intel 2114(1K×4位的SRAM) ② Intel 6116(2K×8位的SRAM) ③ Intel 2764(8K×8位的EPROM)
答:①Intel 2114的片内地址线为10根,组成容量为64KB的存储器模块需要128片。
② Intel 6116的片内地址线为11根,组成容量为64KB的存储器模块需要32片。 ③ Intel 2764的片内地址线为13根,组成容量为64KB的存储器模块需要8片。 (7)简述高速缓冲存储器Cache的基本工作原理以及它与主存的关系。
答:在某一时间间隔内,CPU对局部范围的存储器访问较频繁,而对其它地址的访问较少。使用高性能的SRAM芯片组成容量较小的Cache,存放当前常用的代码,保证CPU读取Cache中数据的命中率较高,缩短相应的存取时间。
(8)采用虚拟存储技术能解决什么问题?虚拟存储器的管理方式有哪几种?
答:使用虚拟存储器可以保证计算机在不提高成本的前提下,提高有效的存储空间。 虚拟存储器的管理方式有:段式、页式、段页式。