关于微机原理,汇编语言的问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 01:02:54
1.编写1+2+3...+100的程序,如果和不超过16位字的范围(65535),则保存其和到wordsum中,如超过则显示“Overflow!”。
2.什么是存储器连接中的位扩充和地址扩充?组成32KB的RAM存储区,在采用静态RAM芯片6264(容量为8K*8位)或动态RAM芯片4116(容量为16K*1)的情况下,各需多少芯片?在位方向和地址方向上各要进行怎样的扩充?

第一题:已编译通过
data SEGMENT
wordsum dw ?
Over db 'Overflow!$'
data ENDS

stack SEGMENT stack
DB 100 DUP(0)
stack ENDS

code SEGMENT
ASSUME CS:code,DS:data,SS:stack
start:
MOV AX,data
MOV DS,AX
XOR AX,AX ;将几个寄存器清0
XOR BX,BX
XOR DX,DX
MOV CX,100 ;可通过增大循环次数,检验溢出情况

BEGIN:
INC AX ;从1开始加
ADD BX,AX
ADC DX,0 ;用带进位加方法.
CMP DX,1 ;检测是否有进位,有则是溢出!
JNB _END ;有则跳出,不再循环.
LOOP BEGIN
MOV wordsum,BX ;没有溢出则执行此句.
JMP _END1
_END:
lea dx, Over ;提示溢出
MOV AH,09h
INT 21h
_END1:
mov ah,4ch
int 21h
code ENDS
END start

第二题。你应该知道存储器是由芯片组成的吧,假设如果cpu需要8根数据线从存储器读取数据,但是一个存储器芯片如果只有4根数据线,很显然是不能交换数据的,这个时候就需要2个芯片来扩充存储器的位宽度,这种扩充就是位扩充。一个存储芯片的容量毕竟有限,如果存储器系统需要更大的存储容量,这个时候就需要多个存储芯片在地址方向上进行扩充,这就是地址扩充。 静态RAM芯片需要(32kb*8位)/(8k*8)=4,地址方向扩充4个,同理另一个是16,位方向扩充8个,地址方向扩充2个。

第一题:已编译通过
data SEGME