昨天,把8088单板机的rom boot进行了一次升级改写,实现了rom boot可以加载Dos下com类程序的加载。当时匆忙的把这个实现了,今天想把实现的构想再总结一下。

这款8088单板机板上有一片64k的rom,32k的ram,64K的rom设计在内存的高端地址,ram设计在内存的地址,boot没烧录到rom中,通过串口可以加载程序到RAM中,并进行执行。原设计把程序加载到0000:2000H起始的地址了(也就是使用了RAM的8K-32K这段地址,0-7K这段闲置未用),原来需要加载的程序,没编译成了二进制块文件,段内偏移地址为2000H。

//led 闪烁程序
//nasm  编译  生成  bin文件
;-------------------------------------------------------------------------------------
led_port   equ   800h
;-------------------------------------------------------------------------------------org  2000h      ;程序将由监控bios下载到内存RAM的地址(0000:2000)
start:;------------------------------------------------------;init part ;------------------------------------------------------;mov ax,0mov ax,1f0hmov ds,axmov ss,axmov sp,3fffh
st001:    nop;-----------------------------------------------------;点亮系统板上的LED;-----------------------------------------------------;MOV DX,800H   ;800H是板子上8个LED的端口地址号mov dx,led_portMOV AL,0aaH   ;一亮一灭间隔点亮OUT DX,ALcall DELAY;MOV DX,800H   ;800H是板子上8个LED的端口地址号mov dx,led_portMOV AL,00H   ;一亮一灭间隔点亮OUT DX,ALcall DELAY;mov al,01010101b;mov al,0f0h;;out 25H,al;hltjmp st001jmp start;------------------------------------------------------------
;     DELAY  PROC NEAR
;------------------------------------------------------------;push
DELAY:PUSH CXPUSH BXNOPNOP   mov bx,10del1:mov cx,5882del2:loop del2dec bxjnz del1;pop cx;pop bx  POP BXPOP CXRETdb 55h,55h,55h,55h,55h,55h  ;程序结束标志,监控bios程序,收到后自动跳转到内存0000:2000处执行

后来,想把这个二进制块文件,改成DOS系统下的COM文件 ,这样在理论上就是说,这个单板机可以加载DOS格式下的通用com文件了,并且可以用emu8086来生成测试程序,并可以在emu8086上进行模拟仿真。

要想解决这个问题,就要解决Boot加载程序后的跳转问题,原来boot跳转地址是0000:2000H,那么要想对boot作出最小的修改,即物理加载地址不变,逻辑地址上实现

0000:2000H=?:0100H ;

那么这个?段地址求出来就行了,答案是01F0H。

那么理解了这个修改原理,生下来的就好办了。

这就是一个纯个人爱好的项目,闲的时候做一做,看到自己的构想得以实现和验证,感觉总是很开心。还是那句话,Just for fun!

8088单板机升级boot的一些想法相关推荐

  1. 给8088单板机写一个迷你Boot

    4.迷你Boot 1.为什么要给8088单板机系统,添加一个bootloader呢? 起初,能够用编程器,烧写测试程序,就已经非常开心了,毕竟自己苦苦琢磨8088系统了几年时间,一直感觉无从下手.尽管 ...

  2. 8088单板机串口驱动代码测试

    1.8088单板机的串口接口电路如下 2.驱动代码 :------------------------------------------------------------------------- ...

  3. Google Nexus 6P手机刷机+升级+降级+Root详细教程

    Google Nexus 6P手机刷机+升级+降级+Root详细教程 前言 之前的Google Nexus 6P手机系统版本是6.0.1,因为想体验下新版,就直接升级了8.0版本. 准备环境 首先你要 ...

  4. 荣耀平板6鸿蒙os,鸿蒙OS系统百机升级计划表来了,快看看有没有你在用的机型...

    "怎么还不给我推送鸿蒙OS系统?"想必看了鸿蒙OS发布会后的网友都有这个想法,那么,究竟什么时候会轮到我们所使用的华为手机或者荣耀手机呢? 大家别着急,鸿蒙OS系统百机升级计划表来 ...

  5. 树莓派 linux0.12,12 个可替代树莓派的单板机

    正在寻找树莓派的替代品?这里有一些单板机可以满足你的 DIY 渴求. 树莓派是当前最流行的单板机.你可以在你的 DIY 项目中使用它,或者用它作为一个成本效益高的系统来学习编代码,或者为了你的便利,利 ...

  6. 【DIY】联想单板机、联想UPS电源、联想屏幕打造笔记本电脑

    很多朋友都有旧的笔记本电脑,因为性能原因等各种原因,放在家里挺鸡肋的,用他吧,太卡太慢了,不用他放着吃灰,卖还卖不了多少钱.今天我们用旧笔记本电脑上的配件,DIY一个新的笔记本电脑. 说到笔记本电脑, ...

  7. x390拆机 升级内存和硬盘_工作效率低下?双十二是时候升级硬盘与内存了

    俗话说得好:三百六十行,行行出状元.有程序员敲敲键盘,年入百万:有人直播带货,赚了上亿身家:更有来自乡村的小伙,靠着做视频成就了非凡的自己.成功的案例,值得学习.但是有一条道理却是亘古不变的,成功总离 ...

  8. 单板机 单片机 c语言,单板机 单片机 个人计算机有什么区别吗

    1.系统组成: 单板机把微型计算机的整个功能体系电路(CPU.ROM.RAM.输入/输出接口电路以及其他辅助电路)全部组装在一块印制电板上,再用印制电路将各个功能芯片连接起来. 单片机就是一块集成电路 ...

  9. 单板计算机作用上位机,SCB-1单板机的基本操作

    SCB-1单板机的基本操作 1.          键盘操作 SCB-1单板机键盘参见附录三.键盘操作参见附录五. 1)状态设置键  MON   与  USE 监控系统采用设置待命状态的方法实现一键两 ...

最新文章

  1. 2019年首期“医工结合科研创新支持计划”项目申报获批:医工携手 强校强国...
  2. 最强轻量级目标检测yolo fastest
  3. QT 使用全局变量的方法
  4. fabricjs 高级篇(自定义类型)
  5. 0811-按钮操作(加法计算器)(拖控件找控件代码属性名称)(frame center bounds)(上下左右移动button图片)...
  6. pytorch——torch.backends.cudnn.benchmark = True
  7. 网格成就Web 2.0存储时代的路易XIV?
  8. Linux修改文件/文件夹权限
  9. 鸿蒙对抗谷歌,华为下定决心对抗谷歌,打出第一张王牌,鸿蒙系统更进一步
  10. 每天CookBook之JavaScript-018
  11. keras指定gpu_keras实现多GPU或指定GPU的使用介绍
  12. js把txt转为html,js格式化文本为html标签
  13. 艾敦制表神器实现EXCEL邮件合并
  14. 神仙道丹药材料及掉落地点大全
  15. 【转载】Linux摄像头驱动1——vivid
  16. 光纤交换机后台linux,更换光纤交换机的步骤详解
  17. MapX研究——MapX核心技术剖析(五)
  18. 笔记本玩游戏画面间歇卡顿的终极解决方案 ThrottleStop使用教程
  19. 解释深度学习在安全领域中的应用
  20. S4 HANA BP-客商共用编码处理(示例:已存在的供应商编码扩展客户数据)

热门文章

  1. idea 数据库取消字段隐藏
  2. adb命令打开系统设置界面
  3. 达梦数据库中字符和字节的介绍
  4. 易观:正视GPT-4功能缺陷与能力局限可更好探索大模型应用
  5. Windows 电脑清理
  6. 10月29日10月30日
  7. 再也不怕罚抄写文章了?用Python模拟手写字体,制作手写模拟器,从此摆脱手写苦恼(无需网络接口)【附资源】
  8. 海康威视 java sdk 抓拍功能
  9. cairosvg在linux中的安装_cairosvg使用过程中需要注意的问题
  10. JUC系列1-基础知识