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芯片的特点及其适用场合。