8086与RAM存储电路

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

你可能感兴趣的:(8086与RAM存储电路)