内容发布更新时间 : 2024/12/26 15:53:32星期一 下面是文章的全部内容请认真阅读。
LEA BX, BLOCK MOV CX, COUNT LOP1: MOV DL, [BX]
CALL CP ;调用比较子程序
INC BX ;递推 DEC CX JNZ LOP1 ;循环 LEA BX, MAX ;取最大值存储区地址 MOV [BX], AL MOV AH, 4CH INT 21H CP PROC 数存入AL.入口参数: AL, DL出口参数: AL CMP DL, 0 JG POSITIVE NEG DL POSITIVE: CMP AL, DL 小 JG EXIT MOV AL, DL EXIT: RET CP ENDP CODE ENDS END START 26、 DATA SEGMENT D1 DB 3,4,2,7,8,12,10 COUNT EQU $-D1 D2 DB 10 DUP(?) DATA ENDS STACK1 SEGMENT STACK DB 100 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1
;移入最大值 ;返回DOS ;比较AL和DL,将较大的 ;DL为正数 ;求相反数 ;比较AL和[BX]中的大;AL大于DL则跳转 ;将DL移入AL ;退出
START: MOV AX,DATA
MOV DS,AX ;数据段装入 MOV CX,COUNT DEC CX ;外层循环CX-1次 LOP1: MOV SI,CX LEA BX,D1 LOP2: MOV AL,[BX]
CMP AL,[BX+1] ;比较D1的第一个数与第二个数的大小 JAE LOP3
XCHG AL,[BX+1] ;交换两个数 MOV [BX],AL LOP3: INC BX DEC CX JNZ LOP2 MOV CX,SI DEC CX JNZ LOP1 LIST: MOV AH,4CH
INT 21H ;返回DOS CODE ENDS END START
第五章
5-7 若用1024*1b的RAM芯片组成16K*8b的存储器,,需要多少芯片?在地址线
中有多少位参与片内寻址?多少位用做芯片组选择信号? 解:
先进行位扩展,一组芯片需要8片 再进行字扩展,需要16组芯片. 所以共需要16*8=128片
1024=1K,需要10位参与片内寻址 16=24,需要4位做选择信号.
5-8 试用4K*8b的EPROM2732和8K*8b的SRAM6264,以及74LS138译码器,构成一个8KB的ROM,32KB的RAM存储系统,要求设计存储器扩展电路,并指出每片存储芯片的地址范围. 解:
芯片1#2#3#4#5#6#型号273227326264626462646264片选译码A15~A13000000001010011100 片内译码A1201A11~A000?0~11?100?0~11?1地址范围0000H~0FFFH1000H~1FFFH2000H~3FFFH4000H~5FFFH6000H~7FFFH8000H~9FFFH
5-9 用EPROM2764(8K*8b)和SRAM6264(8k*8b)各一片组成存储器,其地址范围为FC000~FFFFFH,试画出存储器与CPU的连接图和片选信号译码电路(CPU地址线20位,数据线8位)。 1111 1100 0000 0000 0000 1111 1101 1111 1111 1111 1111 1110 0000 0000 0000 1111 1111 1111 1111 1111
5-10现有存储芯片:2K*1b的ROM和4K*1bde RAM,若用它们组成容量为16KB的存储器,前4KB为ROM,后12KB为RAM,问各种存储芯片分别用多少片? 解:
4KB=4K*8b 需要2*8=16片 12KB=12K*8b 需要3*8=24片
第六章
6-3 CPU响应中断时的处理过程是什么?在各个处理环节主要完成哪些操作?
解:中断处理过程通常由中断请求、中断响应、中断处理和中断返回四个环节完成。
(1)中断请求:中断源需要进行中断服务时,由硬件产生一个中断信号INTR发给CPU且保持到CPU响应。
(2)中断响应:CPU在当前指令执行结束后采样查询INTR,若中断请求信号有效且允许响应INTR中断(IF=1),则向请求设备送回低电平有效的中断响应信号INTR,自此系统自动进入中断响应周期,并由硬件自动完成内容入栈,清除TF和IF标志、断点(中断返回之后将要执行的指令地址)入栈,取中断服务程序的入口地址等一系列操作,继而转去执行中断服务程序。
(3)中断处理:执行中断的主体部分。不同的中断请求源,其中断处理的内容是不同的。需要根据中断请求源所要完成的功能,编写相应的中断服务程序存入内存。等待中断响应后调用执行。
(4)中断返回:又中断服务程序中的中断返回指令IRET完成。执行该指令时,将压入对战的断点和标志位弹出,使CPU转向被中断的现行程序中继续执行。
6-10 中断向量表用来存放什么内容?它占用多大的存储空间?存放在内存的哪个区域?可以用什么方法写入或者读取中断向量表的内容?
答:中断向量表用来存放中断服务程序的偏移地址和段基址。占用1KB内存。最低端的1KB RAM区,地址范围是000H~3FFH。 写入方法:1、用传送指令直接装入。 2、 DOS功能调用: INT 21H (AH)=25H
(AL)=中断类型号 (DS:DX)=中断服务程序的入口地址 读出方法:1、用传送指令直接读。 2、 DOS功能调用:INT 21H (AH)=35H
(AL)=中断类型号 出口参数:(ES:BX)=中断服务程序的入口地址
6-19 某系统使用两片8259A管理中断,从片的INT连接到主片的IR2请求输入端。设主片工作于边沿触发、特殊完全嵌套、非自动结束和非缓冲方式,中断类型号为70H,端口地址为80H和81H;从片工作与边沿触发、完全嵌套、非自动结束和非缓冲方式,中断类型号为40H,端口地址为20H和21H。要求: (1)画出主、从片级联图 (2)编写主、从片初始化程序 解:
电路图参见教材P179图6-21,主片CS由A19-A1=0000 0000 0000 1000 000和M/IO给出低电平,从片CS由A19-A1=0000 0000 0000 0010 000和M/IO给出低电平。 主片8259A
MOV AL,11H(00010001B) OUT 80H, AL ;定义ICW1 MOV AL, 70H(01110000B) OUT 81H, AL ;定义ICW2 MOV AL, 04H(00000100B) OUT 81H, AL ;定义ICW3 MOV AL, 11H(00010001B) OUT 81H, AL ;定义ICW4 MOV AL, FBH(11111011B) OUT 81H, AL ;定义OCW1
(开放从片IR2的请求) IN AL, 81H
AND AL, 11111011 OUT 81H, AL
从片8259A
MOV AL,11H(00010001B)
OUT 20H, AL ;定义ICW1 MOV AL, 40H(01000000B) OUT 21H, AL ;定义ICW2 MOV AL, 02H(00000010B) OUT 21H, AL ;定义ICW3 MOV AL, 01H(00000001B) OUT 21H, AL ;定义ICW4
6-20 某系统由8259A的IR2引入外设中断请求(跳变信号有效),要求当CPU响应IR2请求时,输出显示字符串“****”,并中断10次退出,试编写主程序和中断服务程序。 解: