8086与RAM存储电路

在这里插入图片描述
下面的多个或门电路是选择08000H~08FFFH中的奇地址和偶地址。配合着上面的两个4K8位的存储器使用,共8KB。可以用作4K16位的存储器(AB0和 B H E BHE BHE同时选中),也可以用作8K8位的存储器(AB0选中时为偶地址, B H E BHE BHE选中时为奇地址)。
在这里插入图片描述
图片下面的与门电路是选择0F8000H~0FFFFFH之间的地址,连接的是两片27c128芯片。一片是16K
8位。两个芯片可扩展至16K*16位。这一组存储器没有最低位AB0,不能选择奇地址和偶地址,只能将其合为一个整体看做为16位大小。
在这里插入图片描述
选择80H端口和81H端口,允许CPU对端口进行访问。将80H设置为写端口,将81H设置为读端口。
在这里插入图片描述
对应80H这个读端口。当开关闭合时D端为0信合,通过D触发器脉冲信号将数据传到Q端。将80H端的DB8赋值为0。
在这里插入图片描述
当81H端口被选中时,将DB0里的值赋给D端,若值为0,点亮LED灯。
在这里插入图片描述
将0f8000H这一地址存放到0ffee0H中。0f8000H中存放的是程序abc。
在这里插入图片描述
将找到xyz程序的地址赋值到ds:bx中,将xyz的内容复制到es:di所指向的地址0ffff0H。需要循环10次,但段地址不需要改变,ds还是指向xyz段地址,es还是指向0ffffH。只需要将偏移加2,继续赋值。
在这里插入图片描述
与上一段程序类似,只是将abc这段程序存放在0f8000H为首地址的存储器中。用lan来表示循环次数。
在这里插入图片描述
将xyz程序复制到0ffffH,将abc程序复制到0f8000H中。8086芯片从0fffffH处执行,执行xyc程序,程序指向0ffee0H所指向的地址0f8000H,从而执行abc程序。

.model small .386 .stack .data .code .startup ;将系统功能程序【BIOS】入口地址0f8000h写入ROM空间中自定义的系统功能程序起始入口地址的存放位置0ffee0h【位置用(DS):(BX)表示】 mov ax,0ffeeh mov ds,ax ;将ds段的段基址赋值为0FFEEH mov bx,0 ;用(DS):(BX)表示位置0ffee0h mov ax,0 mov word ptr [bx],ax mov word ptr [bx],ax ;写入BIOS入口地址0f8000h的低字00H,写到(DS):(BX)中,bx=0 mov ax,0f800h inc bx inc bx mov word ptr [bx],ax ;写入BIOS入口地址0f8000h的高字0f8H,写到(DS):(BX)中,bx=2 ;将启动转移程序代码【位置标号xyz用(DS):(BX)表示】写入ROM空间中系统启动地址【位置0ffff0h用(DS):(BX)表示】 mov cx,10 ;循环10次 mov ax,seg xyz mov ds,ax ;将xyz的段地址存放在数据段寄存器ds中 mov bx,offset xyz ;将xyz的偏移地址存放在寄存器bx中 mov ax,0ffffh mov es,ax ;将0ffffH存放在es中 mov di,0 ;选中es指向的0ffffH段的偏移量至为0,即指向0ffff0H x1:mov ax,word ptr [bx] ;将ds:bx中的数据送给ax mov es:word ptr [di],ax ;将ax赋值给es:di mov es:word ptr [di],ax inc bx ;bx加一 inc bx ;bx加一 inc di inc di loop x1 ;循环跳转到x1 ;将系统功能程序【BIOS】代码【位置位置标号abc用(DS):(BX)表示】写入ROM空间中【BIOS】入口地址【位置0f8000h用(DS):(BX)表示】 mov cx,lan ;循环lan次 mov ax,seg abc mov ds,ax ;将abc的段地址存放在数据段寄存器ds中 mov bx,offset abc ;将abc的偏移地址存放在寄存器bx中 mov ax,0f800h mov es,ax ;将0f800H存放在es中 mov di,0 ;选中es指向的0f800H段的偏移量至为0,即指向0f8000H x2:mov ax,word ptr [bx] ;将ds:bx中的数据送给ax mov es:word ptr [di],ax ;将ax赋值给es:di mov es:word ptr [di],ax inc bx ;bx加一 inc bx ;bx加一 inc di inc di loop x2 ;循环跳转到x2 ;启动转移程序 xyz:mov ax,0ffeeh mov ds,ax mov bx,0 ;找ds:bx即地址0ffee0H指向的abc程序的地址0f8000H jmp dword ptr [bx] ;转移到系统功能程序【BIOS】的入口0f8000h ;系统功能程序【BIOS】 abc: mov ax,0 mov ds,ax mov bx,8000h in al,81H out 80H,al mov cx,20 x3:mov byte ptr [bx],al inc al inc al inc bx loop x3 jmp abc lan equ [$-abc]/2+1 ;系统功能程序【BIOS】代码的长度 .exit end
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值