JAE LL
MOV AL,[SI] LL: INC SI LOOP NEXT1
;将最大的字符的ASCII 码由AL 送DL 显示 MOV DL,AL MOV AH,2H INT 21H ;返回DOS
MOV AX,4C00H INT 21H CODE ENDS END START
19.(29)编写汇编程序,接收从键盘输入的10 个数,输入回车符表示结束,然后将这些数 加密后存于BUFF 缓冲区中。加密表为:
输入数字:0,1,2,3,4,5,6,7,8,9;密码数字:7,5,9,1,3,6,8,0,2,4 解答:
DATA SEGMENT BUFF DB 10 DUP(?)
TABLE DB 7,5,9,1,3,6,8,0,2,4 DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX ;
LEA DI,BUFF
NEXT: MOV AH,01H
INT 21H;从键盘上接收单个字符
CMP AL,0AH;与0AH 比,判是否要结束 JZ EXIT
SUB AL,30H;否则,将0~9 的ASCII 码转换为十进制数 LEA BX,TABLE
XLAT;用查表指令进行加密 MOV [DI],AL INC DI JMP NEXT
;退出并返回DOS
EXIT: MOV AX,4C00H INT 21H CODE ENDS
END START 20.(23)有一个100 个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素, 试编程序在表内查找,若表内已有此元素,则结束;否则,按顺序将此元素插入表中适当 的位置,并修改表长。 解答:
;调试时用了十个数据,本程序已通过调试 DATA SEGMENT TABLE_LEN DB ? X DB 99H
TABLE DB 98H,90H,80H,70H,60H,50H,40H,30H,20H,10H;X1,X2,...,X100 COUNT EQU $-TABLE DATA ENDS ;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX
;将数组中的100H 个数求和后求平均值 MOV DX,0000 LEA SI,TABLE MOV CX,COUNT
MOV AL,X;假设X 为给定元素 ;在TABLE 中是否有元素X AGAIN: MOV BL,[SI] CMP BL,AL JZ EXIT INC SI
LOOP AGAIN
;X 元素不在表中,将X 插入表中适当位置 LEA SI,TABLE
MOV DI,SI;DI 为表的末地址 ADD DI,COUNT-1
MOV CX,COUNT AGAIN0:MOV BL,[SI] CMP BL,AL JA NEXT0 BB: CMP DI,SI JZ AA
MOV AH,[DI]
MOV [DI+1],AH;将比X 小的元素后移一位 DEC DI JMP BB
AA: MOV [DI+1],BL MOV [DI],AL
MOV TABLE_LEN,COUNT+1 JMP EXIT
NEXT0: INC SI LOOP AGAIN0
MOV [DI+1],AL;若比较后,X 元素为最小,则放在最末单元的后面,并将表长加1 MOV TABLE_LEN,COUNT+1 ;退出并返回DOS
EXIT: MOV AX,4C00H INT 21H CODE ENDS END START
21.(26)在当前数据段(DS),偏移地址为DATAB 开始的顺序80 个单元中,存放着某班80
个同学某门考试成绩。按要求编写程序:
①编写程序统计≥90 分;80 分~89 分;70 分~79 分;60 分~69 分,<60 分的人数各 为多少,并将结果放在同一数据段、偏移地址为BTRX 开始的顺序单元中。
②试编程序,求该班这门课的平均成绩为多少,并放在该数据段的AVER 单元中。 解答:
;统计学生成绩 DATA SEGMENT
DATAB DB X1,X2,...,X80 N EQU $-DATAB ORG 100H BTRX DW 0 S8 DW 0 S7 DW 0 S6 DW 0 S5 DW 0 ORG 110H AVER DW ? DATA ENDS ;
STACK SEGMENT STACK STA DB 20 DUP (0) TOP EQU $—STA STACK ENDS ;
CODE SEGMENT MAIN PROC FAR
ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS SUB AX,AX PUSH AX
MOV AX,DATA MOV DS,AX MOV CX,N MOV BX,0000H MOV DX,0000H
LEA SI,DATAB ;成绩表首地址 COMPARE:MOV AL,[SI] CMP AL,60 ;<60? JL FIVE
CMP AX,70 ;<70? JL SIX
CMP AX,80 ;<80? JL SEVEN
CMP AX,90 ;<90? JL EIGHT INC S9 JMP CHA
EIGHT: INC S8 JMP CHA
SEVEN: INC S7 JMP CHA
SIX: INC S6 JMP CHA
FIVE: INC S5 JMP CHA CHA:
ADD BX,AL JNC NEXT ADC DX,0
NEXT: INC SI ;循环学生人数 LOOP COMPARE MOV AX,BX MOV CX,N
DIV CX MOV AVER,AX MOV AH,4CH INT 21H RET
MAIN ENDP CODE ENDS END START CH04 存储系统 习题与思考题
1.存储器的哪一部分用来存储程序指令及像常数和查找表一类的固定不变的信息?哪一部 分用来存储经常改变的数据?
解答:只读存储器ROM;随机存储器RAM。
2.术语“非易失性存储器”是什么意思?PROM 和EPROM 分别代表什么意思? 解答:“非易失性存储器”是指当停电后信息会丢失;PROM--可编程序的只读存储器 PROM(Programmable ROM),EPROM--可擦除的可编程的只读存储器EPROM(Erasible Programmable ROM)。
3.微型计算机中常用的存储器有哪些?它们各有何特点?分别适用于哪些场合? 解答:
双极型半导体存储器 随机存储器(RAM)
MOS 存储器(静态、动态)
主存储器可编程只读存储器PROM
可擦除可编程只读存储器EPROM,EEPROM 只读存储器(ROM) 掩膜型只读存储器MROM 快擦型存储器
存储器磁盘(软盘、硬盘、盘组)存储器 辅助存储器磁带存储器 光盘存储器 缓冲存储器
4.现代计算机中的存储器系统采用了哪三级分级结构,主要用于解决存储器中存在的哪些 问题?
解答:目前在计算机系统中通常采用三级存储器结构,即使用高速缓冲存储器、主存储器 和辅助存储器,由这三者构成一个统一的存储系统。从整体看,其速度接近高速缓存的速 度,其容量接近辅存的容量,而位成本则接近廉价慢速的辅存平均价格。三级结构主要用 于解决速度、容量和成本的问题。 5.试比较静态RAM 和动态RAM 的优缺点,并说明有何种方法可解决掉电时动态RAM 中 信息的保护。
解答:静态RAM----存储一位信息的单元电路可以用双极型器件构成,也可用MOS 器件构 成。双极型器件构成的电路存取速度快,但工艺复杂,集成度低,功耗大,一般较少使 用这种电路,而采用MOS 器件构成的电路。静态RAM 的单元电路通常是由6 个MOS 管子组成的双稳态触发器电路,可以用来存储信息“0”或者“1”,只要不掉电,“0” 或“1”状态能一直保持,除非重新通过写操作写入新的数据。同样对存储器单元信息 的读出过程也是非破坏性的,读出操作后,所保存的信息不变。使用静态RAM 的优点 是访问速度快,访问周期达20~40ns。静态RAM 工作稳定,不需要进行刷新,外部电 路简单,但基本存储单元所包含的管子数目较多,且功耗也较大,它适合在小容量存储 器中使用。
动态RAM----与静态RAM 一样,由许多基本存储单元按行和列排列组成矩阵。最简单 的动态RAM 的基本存储单元是一个晶体管和一个电容,因而集成度高,成本低,耗电 少,但它是利用电容存储电荷来保存信息的,电容通过MOS 管的栅极和源极会缓慢放 电而丢失信息,必须定时对电容充电,也称刷新。另外,为了提高集成度,减少引脚的 封装数,DRAM 的地址线分成行地址和列地址两部分,因此,在对存储器进行访问时, 总是先由行地址选通信号RAS 把行地址送入内部设置的行地址锁存器,再由列地址选 通信号CAS 把列地址送入列地址锁存器,并由读/写信号控制数据的读出或写入。所以 刷新和地址两次打入是DRAM 芯片的主要特点。动态RAM 需要配置刷新逻辑电路, 在刷新周期中,存储器不能执行读/写操作,但由于它的单片上的高位密度(单管可组